URGENTE: Problema con flexgrid

projunior
11 de Febrero del 2006
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.

mvallejos
11 de Febrero del 2006
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