URGENTE: Problema con flexgrid
Hola, saludos a todos tengo un problema con mi aplicacion, la cual tiene un flexgrid dentro de un formulario nada mas y tiene el siguiente codigo:
General
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Private Sub Form_Load()
Dim sql As String
Set cn = New ADODB.Connection
cn.Open "provider=microsoft.jet.oledb.4.0; data source=" & App.Path & "Empresa.mdb"
Set rs = New ADODB.Recordset
sql = "select codarti,nomarti,marca,prearti from Articulos"
Set rs = cn.Execute(sql)
With mfgdatos
.Cols = 5
.Rows = 2
.ColWidth(0) = 500
.ColWidth(1) = 2000
.ColWidth(2) = 2000
.ColWidth(3) = 2000
.ColWidth(4) = 2000
.TextMatrix(0, 1) = "codigo"
.TextMatrix(0, 2) = "articulo"
.TextMatrix(0, 3) = "marca"
.TextMatrix(0, 4) = "precio"
End With
For x = 1 To rs.RecordCount
mfgdatos.Row = x
mfgdatos.TextMatrix(1, 1) = rs!codarti
mfgdatos.TextMatrix(1, 2) = rs!nomarti
mfgdatos.TextMatrix(1, 3) = rs!marca
mfgdatos.TextMatrix(1, 4) = rs!precio
Next x
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
Cuando lo ejecuto me muestra el flexgrid vacio y no me muestra el error. En serio les agradeceria de antemano si me dicen en donde esta el error y como mejorar el codigo de mi aplicacion. GRACIAS.
General
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Private Sub Form_Load()
Dim sql As String
Set cn = New ADODB.Connection
cn.Open "provider=microsoft.jet.oledb.4.0; data source=" & App.Path & "Empresa.mdb"
Set rs = New ADODB.Recordset
sql = "select codarti,nomarti,marca,prearti from Articulos"
Set rs = cn.Execute(sql)
With mfgdatos
.Cols = 5
.Rows = 2
.ColWidth(0) = 500
.ColWidth(1) = 2000
.ColWidth(2) = 2000
.ColWidth(3) = 2000
.ColWidth(4) = 2000
.TextMatrix(0, 1) = "codigo"
.TextMatrix(0, 2) = "articulo"
.TextMatrix(0, 3) = "marca"
.TextMatrix(0, 4) = "precio"
End With
For x = 1 To rs.RecordCount
mfgdatos.Row = x
mfgdatos.TextMatrix(1, 1) = rs!codarti
mfgdatos.TextMatrix(1, 2) = rs!nomarti
mfgdatos.TextMatrix(1, 3) = rs!marca
mfgdatos.TextMatrix(1, 4) = rs!precio
Next x
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
Cuando lo ejecuto me muestra el flexgrid vacio y no me muestra el error. En serio les agradeceria de antemano si me dicen en donde esta el error y como mejorar el codigo de mi aplicacion. GRACIAS.
En mi opinión pasan 2 cosas
1 - Hay algún conflicto con el tipo de cursor resultante en el modo de abrir el recordset, sobre todo si estás trabajando con Access.
Donde dice
Set rs = cn.Execute(sql)
Cambialo por
Rs.CursorLocation = AdUseclient
Rs.Open Sql, Cn, AdOpenStatic
El segundo problema está en el bucle for en donde colocas los datos en la flex, no mueves nunca el puntero del recordset con MoveNext y siempre escribes sobre la fila 1 de la flex.
x = 0
Do While Not Rs.EOF
x = x + 1
mfgdatos.TextMatrix(x, 1) = rs!codarti
mfgdatos.TextMatrix(x, 2) = rs!nomarti
mfgdatos.TextMatrix(x, 3) = rs!marca
mfgdatos.TextMatrix(x, 4) = rs!precio
Rs.MoveNext
Loop
Saludos
1 - Hay algún conflicto con el tipo de cursor resultante en el modo de abrir el recordset, sobre todo si estás trabajando con Access.
Donde dice
Set rs = cn.Execute(sql)
Cambialo por
Rs.CursorLocation = AdUseclient
Rs.Open Sql, Cn, AdOpenStatic
El segundo problema está en el bucle for en donde colocas los datos en la flex, no mueves nunca el puntero del recordset con MoveNext y siempre escribes sobre la fila 1 de la flex.
x = 0
Do While Not Rs.EOF
x = x + 1
mfgdatos.TextMatrix(x, 1) = rs!codarti
mfgdatos.TextMatrix(x, 2) = rs!nomarti
mfgdatos.TextMatrix(x, 3) = rs!marca
mfgdatos.TextMatrix(x, 4) = rs!precio
Rs.MoveNext
Loop
Saludos
