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.
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 de carloscharly