Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Ayuda para llenar MSFlexgrid en VB6 con datos de MySQL

Estas en el tema de Ayuda para llenar MSFlexgrid en VB6 con datos de MySQL en el foro de Visual Basic clásico en Foros del Web. Buenos dias amigos!! Les escribo para que me orienten con un comando que seguramente para uno ya sera conocido y facil. Quisiera colocar un grid, ...
  #1 (permalink)  
Antiguo 25/04/2008, 07:27
Avatar de Kitty_05  
Fecha de Ingreso: marzo-2008
Ubicación: SITEL un call center en Panamá
Mensajes: 100
Antigüedad: 16 años, 1 mes
Puntos: 0
Exclamación Ayuda para llenar MSFlexgrid en VB6 con datos de MySQL

Buenos dias amigos!!

Les escribo para que me orienten con un comando que seguramente para uno ya sera conocido y facil.

Quisiera colocar un grid, que rellene con registros de mi BD en MySQL.

Mi select seria algo como
Código:
Dim BD As ADODB.Connection
Dim RecSQL As ADODB.Recordset

Set BD = CONECTAR()
Set RecSQL = New ADODB.Recordset
RecSQL.Open "select * from reqs group by req_date", BD, adOpenStatic, adLockOptimistic
Necesito saber como llenar el grid, y ademas quiero saber si esa sentencia de group by, realmente es correcta
  #2 (permalink)  
Antiguo 25/04/2008, 18:45
 
Fecha de Ingreso: julio-2004
Mensajes: 104
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: Ayuda para llenar MSFlexgrid en VB6 con datos de MySQL

Te voy a dejar 2 metodos.
El mas sencillo y en el cual vas a casi vas a calabacearte de risa cuando veas lo facil que es...
y otro un poco mas elaborado.

1.- Te recomiendo que uses el MSHFLEXGRID en vez del Msflexgrid (EL HERATICAL FLEX GRID) o como se escriba.
luego este si acepta un Recordset ADO
asi que se hace esto...

Set Me.MSHFlexGrid1.DataSource = recSQL 'asignar el REcordset DIRECTO al flex

Listo ya vacia todos tus datos al Flexgrid.
ahora solo queda cambiarle los nombres a los encabezados...
y tal vez ocultar algunas columnas que no queramos...

Me.MSHFlexGrid1.TextMatrix(0, 1) = "nombrecolumna1"
Me.MSHFlexGrid1.TextMatrix(0, 2) = "nombrecolumna1"
Me.MSHFlexGrid1.TextMatrix(0, 3) = "nombrecolumna1"
Me.MSHFlexGrid1.TextMatrix(0, 4) = "nombrecolumna1"
Me.MSHFlexGrid1.TextMatrix(0, 5) = "nombrecolumna1"
etc..
Luego a ocultar
Me.MSHFlexGrid1.ColWidth(6) = 0
Me.MSHFlexGrid1.ColWidth(7) = 0
Me.MSHFlexGrid1.ColWidth(8) = 0
etc.. etc... (aqui es poner el ancho de la columna a 0)


Metodo 2.
Aqui el truco esta en saber cuantas columnas y filas tienes
Pero eso se soluciona preguntandole al RECORSET
Columnas = rs.Fields.Count
Filas = rs.RecordCount

Ahora para poblar el Flex
Me.MSHFlexGrid1.Cols = Columnas 'define las columnas
me.msflexgrid1.rows=filas 'define las filas para el flex

'poner encabezados
For i = 0 To Cols
Me.MSHFlexGrid1.TextMatrix(0, i) = recSQL.Fields(i).Name
Next
'Llenar las filas
For j = 1 To filas 'comenzamos en 1 porque el encabezado no se vuelve a llenar
For i = 0 To Cols
Me.MSHFlexGrid1.TextMatrix(j, i) = recSQL.Fields(i).Value
Next
recSQL.MoveNext 'al terminar de llenar todas las columnas brincar al siguiente registro
Next

Listo... Ya se puebla un flex...
Ahora queda darle un pequeño retoque, cambiando el ancho de columnas o bien fomateando el texto numerico como moneda... etc.. etc..
Para ello tienes que barrer todos los textmatrix de la columna y hacer el cambio
Por ejemplo si queremos que todos en una columna tengan formato numerico
for i=1 to me.mshflexgrid1.rows-1
me.mshflexgrid1.textmatrix(i,3)= format(me.mshflexgrid1.textmatrix(i,3)," $ #,##0.#0")
next


Tambien serviria para cambiarle los colores al texto... meter una imagen.. no se tantas cosas...
Dudas Contactame y te apoyo.
__________________
Podria no estar de acuerdo con lo que dices....., pero daria mi vida por el derecho que tienes de decirlo.
  #3 (permalink)  
Antiguo 25/04/2008, 19:31
Avatar de Hitch  
Fecha de Ingreso: abril-2008
Mensajes: 6
Antigüedad: 16 años
Puntos: 0
Re: Ayuda para llenar MSFlexgrid en VB6 con datos de MySQL

bueno primero que quieres llenar un msflexgrid o un mshflexgrid SON DIFERENTES

EJEMPLO ESTA ES UNA FUNCION

Public Function LlenarFlex(ByRef obj As Object, Optional ByVal cond As String = "")
Dim cad As String
cad = "SELECT * FROM CLIENTE"
If cond <> "" Then cad = cad & " WHERE " & cond
Dim Ado As New ADODB.Recordset
If Ado.State = 1 Then Ado.Close
Ado.CursorLocation = adUseClient
Ado.Open cad, Cxn
obj.Rows = 1
Do Until Ado.EOF
obj.AddItem Ado("ID_CLI") & vbTab & C & vbTab & Ado("RAZ_SOC_CLI") _
& vbTab & Ado("CONT_CLI") & vbTab & Ado("OBS_SEG")
Ado.MoveNext
Loop
Ado.Close
Set Ado = Nothing
End Function

ESO ES TODO
  #4 (permalink)  
Antiguo 28/04/2008, 09:28
Avatar de Kitty_05  
Fecha de Ingreso: marzo-2008
Ubicación: SITEL un call center en Panamá
Mensajes: 100
Antigüedad: 16 años, 1 mes
Puntos: 0
Exclamación Re: Ayuda para llenar MSFlexgrid en VB6 con datos de MySQL

Gracias por ser tan amables de responderme pero en mi VB6 he stado buscando el mshflexgrid y dentro de los componentes no lo encuentro por ningun lado ..
Como hago para agregarlo ?
  #5 (permalink)  
Antiguo 28/04/2008, 10:12
Avatar de Kitty_05  
Fecha de Ingreso: marzo-2008
Ubicación: SITEL un call center en Panamá
Mensajes: 100
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Ayuda para llenar MSFlexgrid en VB6 con datos de MySQL

Son un amor listo logre hacerlo aora somo le keda seguir investigando para agruparlos segun el query que saco del MySQL y ... pero tngo una duda
...Si algun usuario selecciona una fila kiero que esa seleccion se despliegue en un formato especial en otra pantalla
  #6 (permalink)  
Antiguo 28/04/2008, 11:26
Avatar de Kitty_05  
Fecha de Ingreso: marzo-2008
Ubicación: SITEL un call center en Panamá
Mensajes: 100
Antigüedad: 16 años, 1 mes
Puntos: 0
Exclamación Re: Ayuda para llenar MSFlexgrid en VB6 con datos de MySQL

Amigos me pueden ayudar con esta sentencia, es la q usare para llenar el grid..

Código:
RecSQL.Open "select * from reqs group by req_id where req_date = '" & Form7.m1 & "'", BD, adOpenStatic, adLockOptimistic
me manda error en el where :(
  #7 (permalink)  
Antiguo 28/04/2008, 12:03
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: Ayuda para llenar MSFlexgrid en VB6 con datos de MySQL

Hola, prueba así:

Where req_date = '" & Format(Form7.m1, "yyyymmdd") & "'"

Un saludo.
  #8 (permalink)  
Antiguo 28/04/2008, 13:07
Avatar de Kitty_05  
Fecha de Ingreso: marzo-2008
Ubicación: SITEL un call center en Panamá
Mensajes: 100
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Ayuda para llenar MSFlexgrid en VB6 con datos de MySQL

No funciono, me manda error..

Error 3709: No se puede utilizar la conexion para realizar esta operacion. Está cerrada o no es valida en el contexto!}
  #9 (permalink)  
Antiguo 28/04/2008, 13:34
 
Fecha de Ingreso: abril-2008
Mensajes: 31
Antigüedad: 16 años
Puntos: 0
Re: Ayuda para llenar MSFlexgrid en VB6 con datos de MySQL

RecSQL.Open "select * from reqs where req_date = '" & Form7.m1 & "' group by req_id", BD, adOpenStatic, adLockOptimistic

pruebalo asi...
  #10 (permalink)  
Antiguo 28/04/2008, 13:41
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: Ayuda para llenar MSFlexgrid en VB6 con datos de MySQL

Es que en una consulta de agrupación de registros, primero tienes que hacer la condición y después agruparlos:

"Select [LosCampos] From [LaTabla] Where [ElCriterio] Group By [CamposDelGrupo]"

Un saludo
  #11 (permalink)  
Antiguo 28/04/2008, 15:02
Avatar de Kitty_05  
Fecha de Ingreso: marzo-2008
Ubicación: SITEL un call center en Panamá
Mensajes: 100
Antigüedad: 16 años, 1 mes
Puntos: 0
Exclamación Re: Ayuda para llenar MSFlexgrid en VB6 con datos de MySQL

Les mando mi codigo, me manda error, cuando voy a llenar el grid... o sino cuando aparece sale vacio y los encabezados los coloca como datos del grid y no como encabezados

Código:
Dim BD As ADODB.Connection
Dim RecSQL As ADODB.Recordset


Set BD = CONECTAR()


Set RecSQL = New ADODB.Recordset
RecSQL.Open "select * from reqs where req_date = '" & Form7.m1 & "' group by req_id ", BD, adOpenStatic, adLockOptimistic

columnas = RecSQL.Fields.Count
filas = RecSQL.RecordCount
Me.MSHFlexGrid1.Cols = columnas
Me.MSHFlexGrid1.Rows = filas

Set Me.MSHFlexGrid1.DataSource = RecSQL
Me.MSHFlexGrid1.TextMatrix(0, 1) = "No. de Requisición" ' me manda error aki
Me.MSHFlexGrid1.TextMatrix(0, 4) = "Costo Total"
Me.MSHFlexGrid1.TextMatrix(0, 5) = "Fecha de Creación"
Me.MSHFlexGrid1.TextMatrix(0, 6) = "Estado"
Me.MSHFlexGrid1.TextMatrix(0, 7) = "Creado por"
Me.MSHFlexGrid1.TextMatrix(0, 11) = "Dirección"
Me.MSHFlexGrid1.TextMatrix(0, 12) = "Gerencia"
Me.MSHFlexGrid1.TextMatrix(0, 13) = "Site"
'Me.MSHFlexGrid1.RowHeight(1) = 0
Me.MSHFlexGrid1.ColWidth(1) = 1600
Me.MSHFlexGrid1.ColWidth(2) = 0
Me.MSHFlexGrid1.ColWidth(3) = 0
Me.MSHFlexGrid1.ColWidth(4) = 1000
Me.MSHFlexGrid1.ColWidth(5) = 1500
Me.MSHFlexGrid1.ColWidth(7) = 1250
Me.MSHFlexGrid1.ColWidth(8) = 0
Me.MSHFlexGrid1.ColWidth(9) = 0
Me.MSHFlexGrid1.ColWidth(10) = 0
Me.MSHFlexGrid1.ColWidth(11) = 2000
Me.MSHFlexGrid1.ColWidth(12) = 1600
Me.MSHFlexGrid1.ColWidth(13) = 1000
  #12 (permalink)  
Antiguo 29/04/2008, 01:59
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: Ayuda para llenar MSFlexgrid en VB6 con datos de MySQL

¿Y qué error te manda? "Subíndice fuera de intervalo"?

¿Has verificado si el recordset arroja registros?

Cuando enlazas el Grid a un recordset no es necesario que le asignes ni el número de filas ni el de columnas (las toma automáticamente del recordset). Elimina estas líneas del código:

columnas = RecSQL.Fields.Count
filas = RecSQL.RecordCount
Me.MSHFlexGrid1.Cols = columnas
Me.MSHFlexGrid1.Rows = filas


Y otra cosa, el error lo debería dar al abrir el recordset ya que en una consulta de agrupación debes especificar los campos, no vale poner Select *.

Si lo que quieres es mostrar todos los registros de una fecha, elimina la claúsula Group By:

RecSQL.Open "select * from reqs where req_date = '" & Form7.m1 & "'", BD, adOpenStatic, adLockOptimistic

Si dá error o no arroja registros, prueba a formatear la fecha como indiqué en el post anterior.

Un saludo.
  #13 (permalink)  
Antiguo 29/04/2008, 07:23
Avatar de Kitty_05  
Fecha de Ingreso: marzo-2008
Ubicación: SITEL un call center en Panamá
Mensajes: 100
Antigüedad: 16 años, 1 mes
Puntos: 0
Exclamación Re: Ayuda para llenar MSFlexgrid en VB6 con datos de MySQL

Gracias muchachos!!! con solo eliminar el contador de columnas y filas se soluciono el inconveniente.

Ahora solo me keda que me ayuden con un detallito mas, como hago para utilizar los datos en caso de que el usuario seleccione la linea uno por ejemplo!

Si el usuario selecciona la linea 6 kiero poder utilizar los datos d esa linea .. Me ayudan??
  #14 (permalink)  
Antiguo 29/04/2008, 11:05
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: Ayuda para llenar MSFlexgrid en VB6 con datos de MySQL

Mira, te pongo un sencillo ejemplo: Aquí al seleccionar una fila del Grid, se mostrarán los datos de la fila selecciona en unos TextBox.

Código:
Private Sub MSHFlexGrid1_Click()
Dim Buscar As String
Buscar = MSHFlexGrid1.TextMatrix(0, MSHFlexGrid1.Col) & " = '" & MSHFlexGrid1.Text & "'"
With recSQL
    .Find Buscar
    Text1.Text = .Fields(0)
    Text2.Text = .Fields(1)
    ' y así hasta tantos campos o TextBox quieras mostrar
End With
End Sub
Nota: La variable recSQL la tienes que declarar al principio del módulo (o como public en un bas)

Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:47.