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

Como llenar un flexgrid

Estas en el tema de Como llenar un flexgrid en el foro de Visual Basic clásico en Foros del Web. Hola a todos, quisiera saber como llenar un MSHFlexGrid1, con mi base de datos que contiene, codigo, detalle, minimo, maxiomo, se que es con additem ...
  #1 (permalink)  
Antiguo 25/10/2008, 18:01
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Como llenar un flexgrid

Hola a todos, quisiera saber como llenar un MSHFlexGrid1, con mi base de datos que contiene, codigo, detalle, minimo, maxiomo, se que es con additem pero no se como hacerlo con base de datos,

yo lo hice asi:
Private Sub Form_Load()
MSHFlexGrid1.TextArray(0) = "MENU"
MSHFlexGrid1.TextArray(1) = "Precio"
MSHFlexGrid1.TextArray(2) = "Burrito"
MSHFlexGrid1.TextArray(3) = 9.5
etc.....

Tampoco se si primero tengo que configurar las columnas, por ejemplo yo se que son 6 columnas y lo puedo configurar,, pero las filas?.. nunca voy a poder configurarlo porque no se cuantos datos hay en la base de datos

Saludos y Gracias
  #2 (permalink)  
Antiguo 26/10/2008, 01:42
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
Respuesta: Como llenar un flexgrid

Cita:
Iniciado por fedefrankk Ver Mensaje
Hola a todos, quisiera saber como llenar un MSHFlexGrid1, con mi base de datos que contiene, codigo, detalle, minimo, maxiomo, se que es con additem pero no se como hacerlo con base de datos,

yo lo hice asi:
Private Sub Form_Load()
MSHFlexGrid1.TextArray(0) = "MENU"
MSHFlexGrid1.TextArray(1) = "Precio"
MSHFlexGrid1.TextArray(2) = "Burrito"
MSHFlexGrid1.TextArray(3) = 9.5
etc.....

Tampoco se si primero tengo que configurar las columnas, por ejemplo yo se que son 6 columnas y lo puedo configurar,, pero las filas?.. nunca voy a poder configurarlo porque no se cuantos datos hay en la base de datos

Saludos y Gracias
Hola, el control MSHFlexGrid lo puedes enlazar a un control de datos, en este ejemplo a un recordset:

Código:
    Dim rs As ADODB.Recordset
    Set rs = New ADODB.Recordset
    With rs
        .ActiveConnection = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & _
            App.Path & "\MiBD.mdb"
        .CursorType = adOpenStatic
        .CursorLocation = adUseClient
        .Open "Select * from LaTabla"
    End With
    Set MSHFlexGrid1.DataSource = rs
Tiene que tener marcada la referencia a ADO.

  #3 (permalink)  
Antiguo 26/10/2008, 13:53
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Respuesta: Como llenar un flexgrid

Hola Si me sirvio..!!!! este es el codigo:

datos = "select*from stock"
tablas_apertura.Open datos, conexion_basedatos
Set MSHFlexGrid1.DataSource = tablas_apertura


en un modulo.bas tengo el siguiente codigo

Public conexion_basedatos As New ADODB.Connection
Public tablas_apertura As New ADODB.Recordset
Global datos As String

Sub abrir()
conexion_basedatos.ConnectionString = App.Path + "\BASE_DATOS_STOCK.mdb"
conexion_basedatos.Provider = "microsoft.jet.oledb.4.0"
conexion_basedatos.Open

End Sub
Sub cerrar()
conexion_basedatos.Close
End Sub


Me muestra solo un dato, quise hacer esto pero me sale error

datos = "select*from stock"
tablas_apertura.Open datos, conexion_basedatos
Do While Not tablas_apertura.EOF
Set MSHFlexGrid1.DataSource = tablas_apertura
tablas_apertura.MoveNext
Loop
tablas_apertura.Close

Como puedo hacer para ver todos los datos?...
saludos y muchisimas gracias por tu tiempo


  #4 (permalink)  
Antiguo 01/12/2008, 12:17
 
Fecha de Ingreso: diciembre-2008
Mensajes: 2
Antigüedad: 15 años, 5 meses
Puntos: 0
De acuerdo Respuesta: Como llenar un flexgrid

'primero tienes que irte a referencias(Ctrl +t) y selecionar la tecnologia Microsoft Acivex Data Objects 2.7 library
Esta es la que permite crear Los recordset y la coneccion hacia la base de datos

'Crear modulo
en el modulo tienes que crear el objeto que hace la coneccion a la base y el famoso recordset(registros):
Public base as new ADODB.Coneccion
Public recorset as new ADODB.Recordset

' en el mismo modulo crear una sentencia Publica :
Public Sub coneccion()
base.Provider = "Microsoft.Jet.OLEDB.4.0"
base.ConnectionString = "Data Source = " & (App.Path & "\origen.mdb") & ""
base.Open
End Sub
'cabe recalcar que base es el objeto que va hacer la coneccion y origen es la base de datos

'Ahora si vamos a llenar en el flex los datos de una tabla que esta en la base em este caso la tabla CLIENTE que tiene esos campos.. esto se lo hace en el form_load o en um comando o mas bien en el objeto en en el cual le vas a dar el evento para llenar el flex en este caso en el form load,,, esto quiere decir que al cargar el formulario ya los datos en el flex ya deben estar disponibles


Private Sub form_load()
1.- vamos a diseñar el flex dependiendo a los campos de la tabla
Me.MSFlexGrid1.TextMatrix(0, 0) = "id"
Me.MSFlexGrid1.TextMatrix(0, 1) = "Nombre"
Me.MSFlexGrid1.TextMatrix(0, 2) = "Apellido"
Me.MSFlexGrid1.TextMatrix(0, 3) = "telefono"
2.-
recorset.Open "select * from CLIENTE", base, adOpenKeyset, adLockBatchOptimistic
f = 1
Do While Not recorset.EOF
Me.MSFlexGrid1.Rows = Me.MSFlexGrid1.Rows + 1
Me.MSFlexGrid1.TextMatrix(f, 0) = rs2!id
Me.MSFlexGrid1.TextMatrix(f, 1) = rs2!Nombre
Me.MSFlexGrid1.TextMatrix(f, 2) = rs2!Apellido
Me.MSFlexGrid1.TextMatrix(f, 3) = rs2!Telefono
recorset.MoveNext
f = f + 1
Loop
recorset.close
End Sub

pruebalo ese es mi modo para llenar todos lo datos de una tabla en un flex
Gracias...
ATT.ANDRES RAUL
[email protected]
  #5 (permalink)  
Antiguo 02/12/2008, 00:13
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
De acuerdo Respuesta: Como llenar un flexgrid

ANDRES RAUL

Hola muchisimas gracias por contestar, si me sirvio lo que publicas
saludos a todos
fede
  #6 (permalink)  
Antiguo 02/12/2008, 02:50
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
Respuesta: Como llenar un flexgrid

Cita:
Iniciado por fedefrankk Ver Mensaje
Hola Si me sirvio..!!!! este es el codigo:

datos = "select*from stock"
tablas_apertura.Open datos, conexion_basedatos
Set MSHFlexGrid1.DataSource = tablas_apertura


....

Me muestra solo un dato, quise hacer esto pero me sale error

datos = "select*from stock"
tablas_apertura.Open datos, conexion_basedatos
Do While Not tablas_apertura.EOF <-- NO
Set MSHFlexGrid1.DataSource = tablas_apertura
tablas_apertura.MoveNext <--NO
Loop
<-- NO
tablas_apertura.Close

Como puedo hacer para ver todos los datos?...
saludos y muchisimas gracias por tu tiempo


[/COLOR]
Si enlazas el control MSHFlexGrid al recordset no necesitas hacer ningún bucle.

Con esto es suficiente para que muestre todos los datos:

datos = "select*from stock"
tablas_apertura.Open datos, conexion_basedatos
Set MSHFlexGrid1.DataSource = tablas_apertura


  #7 (permalink)  
Antiguo 11/05/2009, 16:52
 
Fecha de Ingreso: abril-2009
Mensajes: 16
Antigüedad: 15 años
Puntos: 0
Respuesta: Como llenar un flexgrid

con eso se mostraria solo u ndato como lo que le sucede al que publico este tema y a mi persona jjeje
  #8 (permalink)  
Antiguo 12/05/2009, 05:32
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
Respuesta: Como llenar un flexgrid

Cita:
Iniciado por andresito0427 Ver Mensaje
con eso se mostraria solo u ndato como lo que le sucede al que publico este tema y a mi persona jjeje
Eso es porque no has asignado al recordset el tipo de cursor correcto (propiedad CursorType).

Antes de abrir el recordset:

datos.CursorType = adOpentatic

Ahí te mostrará todos los datos de la consulta.

  #9 (permalink)  
Antiguo 12/05/2009, 22:22
Avatar de nicolyto77  
Fecha de Ingreso: marzo-2007
Ubicación: Buenos Aires
Mensajes: 782
Antigüedad: 17 años, 1 mes
Puntos: 12
Pregunta Respuesta: Como llenar un flexgrid

Holas

Recien estoy comenzando a incursionar por las bases de datos y Visual Basic... Intento hacer lo mismo que Avellaneda dice en el ultimo Post, pero me da error; la verdad es que estoy nulo con esto, recien me animo a meterme en estos temillas.

Aca les dejo el codigo, espero me ayuden a corregirlo; en mi caso uso MySQL:

Código:
Private Sub Form_Load()
Dim Con As ADODB.Connection
Dim Rec As ADODB.Recordset
    Dim Conexion As String
    Set Con = New Connection
    Con.CursorLocation = adUseClient
    Conexion = "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Port=3306;Option=131072;Stmt=;Uid=root;Pwd=pass;Database=p;"
    Con.Open Conexion
Set Rec = New Recordset
With Rec
Rec.Open "Select * From p_users", Con, adOpenStatic, adLockOptimistic
End With
Set MSFlexGrid1.DataSource = Rec
End Sub
Tengo un MSFlexGrid y me gustaria llenarlo de forma automatica con los registros de la BD, les agradezco cualquier ayudita!

El error es:

'Variable de tipo Object o la variable del bloque With no esta establecida'

Saludos y Gracias
__________________
CabaSoft Networks

Última edición por nicolyto77; 12/05/2009 a las 22:25 Razón: Edito!
  #10 (permalink)  
Antiguo 13/05/2009, 02:23
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
Respuesta: Como llenar un flexgrid

Bueno, si te fijas, estamos hablando de un control MSHFlexGrid (componente Microsoft Hierarchical FlexGrid Control 6.0).

El control MSFlexGrid (componente Microsoft FlexGrid Control 6.0) sólo admite la propiedad DataSource en tiempo de diseño y con un enlace a un control Data de DAO.

Para cargar este control en ejecución puedes hacerlo recorriendo el recordset de principio a fin y cargardo en el Grid cada uno de los campos de sus registros con la propiedad TextMatrix(fila, col) o con la propiedad Clip del control (esta última bastante mas rápida ya que no necesita de bucles):

Código vb:
Ver original
  1. With MSFlexGrid1
  2.         .Rows = 2
  3.         .Cols = Rec.Fields.Count
  4.         ' en el encabezado del Grid ponemos los nombres de los campos y ajustamos el ancho
  5.        ' de la columna
  6.        For i = 0 To .Cols - 1
  7.             .TextMatrix(0, i) = Rec.Fields(i).Name
  8.             .ColWidth(i) = Rec.Fields(i).DefinedSize * 120
  9.         Next i
  10.         .Rows = Rec.RecordCount + 1
  11.         .Row = 1
  12.         .Col = 0
  13.         .RowSel = .Rows - 1
  14.         .ColSel = .Cols - 1
  15.         .Clip = Rec.GetString(, Rec.RecordCount)
  16.        .Visible = True
  17.         .Row = 1
  18.     End With

Por cierto que la siguiente línea es redundante, no es que dé error, pero sobra el With .. End With
'With Rec <-- sobra
Rec.Open "Select * From p_users", Con, adOpenStatic, adLockOptimistic
'End With <-- sobra

o si lo prefieres:

With Rec
.Open "Select * From p_users", Con, adOpenStatic, adLockOptimistic
End With


  #11 (permalink)  
Antiguo 13/05/2009, 15:10
Avatar de nicolyto77  
Fecha de Ingreso: marzo-2007
Ubicación: Buenos Aires
Mensajes: 782
Antigüedad: 17 años, 1 mes
Puntos: 12
Respuesta: Como llenar un flexgrid

Muchas Gracias Avellaneda!



Voy a probar asi como me decis, y si tengo alguna duda que no pueda solucionar probando, te molesto nuevamente

Saludos
__________________
CabaSoft Networks
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 04:53.