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
Ir a la versión completa