MSChart en VB6

Me gustaría sacar los datos de una tabla(con conexión Adoc) en un gráfico, he visto que existe el MSChart, y me gustaría saber como decirle al control que campo quiero en el ejeX y el ejeY.
Le digo en propiedades que el DataSource es el Adodc1. El DataMember no me da opción.
Es una tabla sencilla que tiene fechas y temperaturas. Ejex(Fechas) Ejey(Temperatura)
Muchas Gracias. Es algo urgente.

1 respuesta

Respuesta
1
En la siguiente liga tienes los ejemplos:
http://www.planetsourcecode.com/vb/scripts/BrowseCategoryOrSearchResults.asp?txtCriteria=mschart&blnWorldDropDownUsed=TRUE&txtMaxNumberOfEntriesPerPage=10&blnResetAllVariables=TRUE&lngWId=1&optSort=Alphabetical
Gracias David, ya he extraído los datos con un recordset, ¿ahora? Me pondrías un ejemplo para lo del ejex, ¿ejey? La página que me dices esta en ingles y yo no lo entiendo muy bien.
Hasta donde recuerdo el adodc no se relaciona de ninguna forma con el MSChart, tienes que utilizar un recordset para extraer los datos y después recorrerlo para presentar la gráfica.
En la siguiente liga encuentras algunas aplicaciones que trabajan con el MSChart.
Esto es lo que hago:
1º Defino los ejes por, y
With MSChart1.Plot.Axis(VtChAxisIdY)
.AxisTitle.Text = "Temperatura"
.ValueScale.Auto = False
.ValueScale.MajorDivision = 10
.ValueScale.MinorDivision = 1
.ValueScale.Maximum = 40
.ValueScale.Minimum = -40
End With
With MSChart1.Plot.Axis(VtChAxisIdX)
.AxisTitle.Text = "Fechas Captura"
.ValueScale.Auto = False
.ValueScale.MajorDivision = 1
.ValueScale.MinorDivision = 1
.CategoryScale.DivisionsPerTick = 20
.CategoryScale.DivisionsPerLabel = 20
.ValueScale.MajorDivision = 2
End With
2º la conexion:
strProveedor= "Microsoft.Jet.OLEDB.4.0"
strOrigenDatos = App.Path & "\BD.mdb"
strSQL = "select Temperatura,FHcaptura from CAPTURA order by FHcaptura"
(NOTA: la clave es FHcaptura y otro campo que no recupero, pero cuando veo en el Debug los datos me los recupera en orden, luego los pinta en desorden, incluso empieza por el último)
cnn.Open "provider=" & strProveedor & "; Data Source=" & strOrigenDatos
rst.Open strSQL, cnn, adOpenStatic

With MSChart1
.Visible = Tru
.ColumnCount = 1
.RowCount = m
.ColumnLabel = "Temperatura"
.ShowLegend = True
Do
.Data = rst.Fields("Temperatura")
.RowLabel = rst.Fields("FHcaptura")
rst.MoveNext
Loop Until rst.EOF
End With
Lo que nos falta para ver como esta el problema es la sentencia de extracción de datos que utilizas, ya que puedes utilizar un order by por los campos que requieres y no problemas posteriores.
David, me he dado cuenta que lo que hace mal es poner las fechas en el ejeX, en realidad las superpone y además la última la pone la primera, sin embargo la temperatura que esta en el ejeY lo hace bien, por lo que no coincide lo recogido en el .Data (ejex) con lo del ejeY. No se si esto te aclara mi pregunta.
Por cierto, muchas gracias.
Hola, al final he cambiado y he decidido hacerlo recuperando los datos sin adoc, gracias. Pero ahora veo que me saca los datos desordenados, la tabla solo tiene dos campos y según la fecha saco una temperatura.Te escribo lo que he puesto.
With MSChart1
.Visible = True
.ColumnCount = 1
.RowCount = 113
.ColumnLabel = "Temperatura"
.ShowLegend = True
Do
.Data = rst.Fields("Temperatura")
.RowLabel = rst.Fields("FHcaptura")
rst.MoveNext
Loop Until rst.EOF
End With
Gracias por tu ayuda, al final lo que pasaba era que hacía antes el data que el rowlabel, en cuanto he cambiado el orden sale todo bien.
Yo le agregaría en el order by el otro campo que mencionas, y me fijaría en como hacen la presentación de las gráficas en la siguiente página:
Ya que nada como ver otro programa que funciona bien y me sirve.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas