Mshflexgrid y odbc

Hola, tengo un sistema en vb6 que se conecta mediante odbc a una bd local pero al asignar una consulta sql al gri manda error 13 en tiempo de ejecución, la instrucción:
Set MSHFlexGrid1 = rs
Donde rs es un adodb. Recorset que contiene la consulta o tabla abierta.
El problema radica en que si cambio la conexión de rs directamente a la bd mediante un con de tipo adobd.connection sale bien. Ejemplo:
cn.open "DSN=NOMBD" usando esto sale el error, pero si me conecto directamente asi :
cn.CursorLocation = adUseClient
  cn.CommandTimeout = 0
  cn.Provider = Proveedor
  cn.Open App.Path & "\BD\NOMBD.mdb"
En este caso sale bien, NOTA el error solo es cuando se asigna al mshflexgrid ya que en una consulta normal todo es correcto en ambas conexiones. Cual puede ser el problema

1 respuesta

Respuesta
1
No tengo muy claro lo que estas haciendo por partes:
No uses conexiones ODBC son muy antiguas, usa OLEDB  en http://sites.google.com/site/expertmrtool/home/archivos-de-ayuda-para-vb6 tienes como se hace.
Carga el flexgrid mediante un bucle, es trivial, te quitará problemas y te dará control puedes hacer un procedimiento, como el de abajo, inclúyelo en un VAS para poder usarlo desde cualquier lado.
Public Function RStoFlexGrid(byval pGrid As MSFlexGrid, byref pRS as ADODB.Recordset) As Boolean
Dim llngCount1 As Long
Dim llngCount2 As Long
On Error GoTo Salida
     If pRSRecordCount <> 0 Then
        pRSMoveLast
        pRSMoveFirst
        pGrid.Cols = pRSFields.Count + 1
        For llngCount1 = 0 To pRSFields.Count - 1
             pGrid.Row = 0
             pGrid.Col = llngCount1 + 1
             pGrid.Text = pRSFields(llngCount1).Name
        Next llngCount1
        pGrid.Rows = pRSRecordCount + 1
        For llngCount1 = 0 To pRSRecordCount - 1
            pGrid.Row = llngCount1 + 1
            pGrid.Col = 0
            pGrid.Text = llngCount1 + 1
            For llngCount2 = 0 To pRSFields.Count - 1
                pGrid.Col = llngCount2 + 1
                If rs(llngCount2).Type = adDate Then
                    pGrid.Text = Format(rs(llngCount2), "dd-mmm-yyyy")
                Else
                    pGrid.Text = Trim(rs(llngCount2)) & ""
                End If
            Next llngCount2
            pRSMoveNext
        Next llngCount1
        FillGrid = True
    Else
        FillGrid = False
    End If
    pRSClose
    Set rs = Nothing
Exit Function
Salida:
       FillGrid = False
End Function

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas