Arrays Dinámicos

Hola Experto, haber si me puedo explicar y no confundirte, he realizado una prueba para realizar gráficos Dinámicos con controles SHAPE, para que los Gráficos Muestren el avance le agregue unos Arrays con determinados Valores(Valores Fijos). Hasta aquí todo muy bien, Pero en mi Proyecto, necesito traerme los valores desde una consulta que le hago a una tabla de mi BD,. O sea que en ves de Agregar Valores Fijos. Lo que no se es como traerme esos valores para mostrarlos en la gráfica, te anexo el código donde tengo los Arrays con valores Fijos y También te Muestro la Consulta donde quiero Realmente sacar esos Valores.
Private Sub CmdGraficos_Click()
Dim i As Integer
Dim TLeft As Long
Dim TWidth As Long
arr(0) = 9.216666
arr(1) = 1.833333
arr(2) = 16.666666
arr(3) = 7.6
arr(4) = 2.166666
arr(5) = 1.75
arr(6) = 1.833333
col(0) = vbBlue
col(1) = vbGreen
col(2) = vbRed
col(3) = vbYellow
col(4) = vbCyan
col(5) = vbMagenta
col(6) = vbWhite
Set Grafico = Controls.Add("VB.Shape", "Grafico" & CStr(i))
Grafico.Height = 1000
Grafico.Shape = 0
Grafico.Visible = True
Grafico.Top = 1400
Grafico.BorderColor = col(i)
If i = 0 Then
Grafico.Left = 1200
Else
TLeft = CLng(Me.Controls("Grafico" & CStr(i - 1)).Left)
TWidth = CLng(Me.Controls("Grafico" & CStr(i - 1)).Width)
Grafico.Left = (CLng(TLeft) + CLng(TWidth)) - 10
End If
Grafico.BackStyle = 1
Grafico.BackColor = col(i)
Grafico.Width = arr(i) * 180
Next
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
arr(0) = 2.4
arr(1) = 9.4
arr(2) = 1.4
arr(3) = 2.1
col(0) = vbBlue
col(1) = vbGreen
col(2) = vbRed
col(3) = vbYellow
For i = 0 To 3
Set GraficoA = Controls.Add("VB.Shape", "GraficoA" & CStr(i))
GraficoA.Height = 1000
GraficoA.Shape = 0
GraficoA.Visible = True
GraficoA.Top = 3900
GraficoA.BorderColor = col(i)
If i = 0 Then
GraficoA.Left = 1200
Else
TLeft = CLng(Me.Controls("GraficoA" & CStr(i - 1)).Left)
TWidth = CLng(Me.Controls("GraficoA" & CStr(i - 1)).Width)
GraficoA.Left = (CLng(TLeft) + CLng(TWidth)) - 10
End If
GraficoA.BackStyle = 1
GraficoA.BackColor = col(i)
GraficoA.Width = arr(i) * 180
Next
End Sub
Y ESTA ES MI CONSULTA DONDE EL RESULTADO....
SELECT D.IDLINEAS, L.LINEAS, D.IDMAQUINAS, M.MAQUINAS, SUM(CAST(SUBSTRING(D.TIEMPOPERDIDO, 1, 2) AS DECIMAL) +
CAST(SUBSTRING(D.TIEMPOPERDIDO, 4, 2) AS DECIMAL) / 60) AS HORASPERDIDAS FROM DEFECTOS_CALIDAD D
INNER JOIN MAQUINAS M ON M.IDMAQUINAS = D.IDMAQUINAS
INNER JOIN LINEAS L ON L.IDLINEAS = D.IDLINEAS
GROUP BY D.IDLINEAS, L.LINEAS, D.IDMAQUINAS, M.MAQUINAS
Y ME ARROJA ESTO, que es Donde realmente Quiero sacar los valores de las GRaficas:
IDLineas          Lineas   IDMaquina    Maquina           HORASPERDIDAS
       1 LINEA 1 1 CM602 9.216666
       1 LINEA 1 2 CM401 1.833333
       2 LINEA 2 9 S27-2 16.666666
       2 LINEA 2 10 F5-HM 7.600000
       4 LINEA 4 21 MV 2.166666
       4 LINEA 4 22 MPA 1.750000
       5 LINEA 6 28 CM402-2 1.833333
Espero y me Haya explicado, TE agradecería Mucho si Me ayudaras, Uso visual 6.0 y SQL Server.

1 Respuesta

Respuesta
Aver por lo que veo manejas tus consultas y esas cosas, parece que estas algo avanzado así que seré rapido, pero si no entiendes me avisas y detallere más.
Variables Generales
dim arreglo() as long
dim contador as integer
boton dibujar
contador = <select count(*) from tabla>
arreglo(contador)
for i = 1 to contador
  arreglo(i) = <rs!horasperdidas>
next
*********
Imagin oque usas el RecordSet y eso, bueno eso es así a grandes rasgos porque de echo lo que marque entre <> no te funciona tiene que usar la sintaxis correcta. Me avisas si con eso te fue suficiente
Lo hice de esta forma y me resulto:
strSQL = ("SELECT D.IDLINEAS, L.LINEAS, D.IDMAQUINAS, M.MAQUINAS, SUM(CAST(SUBSTRING(D.TIEMPOPERDIDO, 1, 2) AS DECIMAL) + " & _
"cast(substring(d.tiempoperdido, 4, 2) as decimal) / 60) as horasperdidas from defectos_calidad d " & _
"INNER JOIN MAQUINAS M ON M.IDMAQUINAS = D.IDMAQUINAS " & _
"INNER JOIN LINEAS L ON L.IDLINEAS = D.IDLINEAS " & _
"WHERE L.IDLINEAS = 1 " & _
"GROUP BY D.IDLINEAS, L.LINEAS, D.IDMAQUINAS, M.MAQUINAS ")
Set rs = conn.Execute(strSQL)
Dim A As Integer
Do While rs.EOF = False
ReDim Preserve arr(A)
arr(A) = rs!HorasPerdidas
A = A + 1
rs.MoveNext
Loop

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas