Programación General > Visual Basic 6.0 e inferiores

 A Alguien Se Le Ocurre El Como Hacer Este Proceso?

(1/1)

pacegar:
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

Brroz:
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:
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 --- Option Explicit Private Type TiempoXEstado    Estado As Integer    Horas As DoubleEnd Type Private Sub Form_Load()        Picture1.AutoRedraw = True    Picture1.BackColor = vbWhite    Picture1.ForeColor = vbBlack    Picture1.FontName = "Small Fonts"    Picture1.FontSize = 6        'Datos de ejemplo    Dim Datos(1 To 5) As TiempoXEstado    Datos(1).Estado = 1    Datos(1).Horas = 23    Datos(2).Estado = 2    Datos(2).Horas = 7    Datos(3).Estado = 3    Datos(3).Horas = 1    Datos(4).Estado = 4    Datos(4).Horas = 84    Datos(5).Estado = 8    Datos(5).Horas = 10.3        On Error Resume Next        Dim i1 As Integer    i1 = UBound(Datos)        Picture1.Cls        If i1 = 0 Then Exit Sub        Picture1.Scale (-5, -5)-(95, i1 * 10 + 7)        Picture1.DrawStyle = 0        Picture1.Print "Estados"    Picture1.Line (0, 0)-(0, i1 * 10)    Picture1.Line (0, i1 * 10)-(90, i1 * 10)    Picture1.CurrentX = Picture1.ScaleWidth / 2 - Picture1.TextWidth("Horas") / 2    Picture1.CurrentY = Picture1.ScaleHeight - Picture1.TextHeight("Horas") - 5    Picture1.Print "Horas"        Picture1.DrawStyle = 2    Picture1.DrawWidth = 1        Dim i2 As Integer    For i2 = 10 To 88 Step 10        Picture1.ForeColor = vbBlue        Picture1.Line (i2, 0)-(i2, i1 * 10)        Picture1.Print i2    Next i2        Picture1.DrawWidth = 4        For i2 = 1 To i1        Picture1.ForeColor = vbRed        Picture1.Line (Datos(i2).Horas, i2 * 10 - 5)-(0, i2 * 10 - 5)        Picture1.CurrentX = Picture1.CurrentX - 2 * Picture1.TextWidth(Datos(i2).Estado)        Picture1.Print Datos(i2).Estado    Next i2 End Sub  
Espero que te sirva.

Chao.

Navegación

[0] Índice de Mensajes

Ir a la versión completa