• Jueves 28 de Marzo de 2024, 12:37

Autor Tema:  A Alguien Se Le Ocurre El Como Hacer Este Proceso?  (Leído 1352 veces)

pacegar

  • Miembro MUY activo
  • ***
  • Mensajes: 108
  • Nacionalidad: es
    • Ver Perfil
    • INTEGRA Canarias
A Alguien Se Le Ocurre El Como Hacer Este Proceso?
« en: Martes 2 de Noviembre de 2004, 17:24 »
0
Tengo esta tabla con la siguiente estrutura:

Ejemplo:
Fecha                 Estado   Departm
01/01/04 10:00       1       Comercial
01/01/04 12:00       1       Marketing
01/02/04 09:00       2       Marketing
01/02/04 17:00       3       Gerencia
01/02/04 18:00       4       Gerencia

Quiero hacer una gráfica donde me muestre los tiempos por estados.

Que sería al asi :  
Estado 1: 23horas = (01/01/04 12:00 - 01/01/04 10:00) + (01/02/04 09:00 - 01/01/04 12:00)
Estado 2: 07horas = (01/02/04 17:00 - 01/02/04 09:00)
Estado 3: 01hora  = (01/02/04 18:00 - 01/02/04 17:00)
Estado 4: No se calcula. En el estado 4 muere el proceso

Es algo lioso, espero que tengan soluciones
Gracias por todo
Pedro Acevedo
Director de Desarrollo
INTEGRA Tecnología y Comunicación de Canarias
www.integracanarias.com

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: A Alguien Se Le Ocurre El Como Hacer Este Proceso?
« Respuesta #1 en: Martes 2 de Noviembre de 2004, 18:09 »
0
Hola pacegar.

Realmente no sé dónde tienes el atasco, pero la cosa como ya habrás imaginado consiste en:

Primer lugar (como muy bien ya sabes) debes obtener el total de tiempo para cada uno de los estados. Esta información podrías alamacenarla en un recordset si la obtienes mediante una sentencia SQL, en una matriz de dos dimensiones (estado y tiempo), en una estructura de datos definida por ti, etc...

Lo siguiente es dibujar la gráfica. Te puedes valer de un PictureBox al que mediante su metodo Scale habrás definido la forma de representar las coordenadas... utiliza métodos gráficos para pintar la correspondiente grafica (¿que tal una tipo barras? puede ser la más sencilla).

No creo que tengas problemas para hacer las gráficas... tal vez puedas concretar un poco más lo que necesitas y mañana hablamos (en breve marcho a casa).

Abur.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: A Alguien Se Le Ocurre El Como Hacer Este Proceso?
« Respuesta #2 en: Miércoles 3 de Noviembre de 2004, 17:04 »
0
Hola.

Te adjunto un pequeño código para que veas a lo que me refería...

Añade en un formulario un PictureBox y pega el siguiente código:

Código: Text
  1.  
  2. Option Explicit
  3.  
  4. Private Type TiempoXEstado
  5.     Estado As Integer
  6.     Horas As Double
  7. End Type
  8.  
  9. Private Sub Form_Load()
  10.    
  11.     Picture1.AutoRedraw = True
  12.     Picture1.BackColor = vbWhite
  13.     Picture1.ForeColor = vbBlack
  14.     Picture1.FontName = "Small Fonts"
  15.     Picture1.FontSize = 6
  16.    
  17.     'Datos de ejemplo
  18.     Dim Datos(1 To 5) As TiempoXEstado
  19.     Datos(1).Estado = 1
  20.     Datos(1).Horas = 23
  21.     Datos(2).Estado = 2
  22.     Datos(2).Horas = 7
  23.     Datos(3).Estado = 3
  24.     Datos(3).Horas = 1
  25.     Datos(4).Estado = 4
  26.     Datos(4).Horas = 84
  27.     Datos(5).Estado = 8
  28.     Datos(5).Horas = 10.3
  29.    
  30.     On Error Resume Next
  31.    
  32.     Dim i1 As Integer
  33.     i1 = UBound(Datos)
  34.    
  35.     Picture1.Cls
  36.    
  37.     If i1 = 0 Then Exit Sub
  38.    
  39.     Picture1.Scale (-5, -5)-(95, i1 * 10 + 7)
  40.    
  41.     Picture1.DrawStyle = 0
  42.    
  43.     Picture1.Print "Estados"
  44.     Picture1.Line (0, 0)-(0, i1 * 10)
  45.     Picture1.Line (0, i1 * 10)-(90, i1 * 10)
  46.     Picture1.CurrentX = Picture1.ScaleWidth / 2 - Picture1.TextWidth("Horas") / 2
  47.     Picture1.CurrentY = Picture1.ScaleHeight - Picture1.TextHeight("Horas") - 5
  48.     Picture1.Print "Horas"
  49.    
  50.     Picture1.DrawStyle = 2
  51.     Picture1.DrawWidth = 1
  52.    
  53.     Dim i2 As Integer
  54.     For i2 = 10 To 88 Step 10
  55.         Picture1.ForeColor = vbBlue
  56.         Picture1.Line (i2, 0)-(i2, i1 * 10)
  57.         Picture1.Print i2
  58.     Next i2
  59.    
  60.     Picture1.DrawWidth = 4
  61.    
  62.     For i2 = 1 To i1
  63.         Picture1.ForeColor = vbRed
  64.         Picture1.Line (Datos(i2).Horas, i2 * 10 - 5)-(0, i2 * 10 - 5)
  65.         Picture1.CurrentX = Picture1.CurrentX - 2 * Picture1.TextWidth(Datos(i2).Estado)
  66.         Picture1.Print Datos(i2).Estado
  67.     Next i2
  68.  
  69. End Sub
  70.  
  71.  

Espero que te sirva.

Chao.