none
Insertar registros a un DataGrid mediante ADO

    Question

  • Hola a todos. Mi problema es el siguiente: Estoy desarrollando un programa de facturación con Visual Basic 6, donde en el formulario para insertar los productos coloqué un DataGrid y este lo conecté a un ADODB.Connection. Bueno, el punto es que necesito que al insertar el código de este producto se agregue en el datagrid la información respectiva. Aquí les entrego el código:

    Private Sub Agregar_Btn_Click()
    Dim rsproductos As ADODB.Recordset
    Call conexion
    SQL = "SELECT * FROM productos WHERE Codigo='" & CVar(Codigo_Txt) & "'"
    Set rsproductos = New ADODB.Recordset
    With rsproductos
        .CursorLocation = adUseClient
        .Open SQL, Cn, adOpenForwardOnly, adLockBatchOptimistic
    End With
    Set DataGrid1.DataSource = rsproductos
    End Sub

    Éste otro código está en un módulo:

    Public Cn As New ADODB.Connection
    Public rsclientes As New ADODB.Recordset

    Public Sub conexion()
    Cn.Provider = "Microsoft.Jet.OLEDB.4.0"
    Cn.Open App.Path + "\pos.mdb"
    Cn.CursorLocation = adUseClient
    End Sub

    Además de que al insertar el código en el campo Codigo_Txt y presionar el botón, me aparece el mensaje de error "La operación no se puede realizar si el objeto está abierto" y al ver el breakpoint se destaca el Cn.Provider... ¿Qué puedo estar haciendo mal?. De antemano muchas gracias.

    Monday, February 05, 2007 2:46 PM

Answers

  • Gracias El Bruno, pero he arreglado el problema cambiando de lugar el llamado al Form_Load, pero ahora al insertar el código para que lo busque en la base de datos y lo agregue al DataGrid, me lanza el error de que la columna no fue encontrada ("Run-time error 6147")... ¿Columna del DataGrid o de la base de datos?... No se que puede ser. Ayuda por favor. Gracias

    Aquí envio el código para el que lo necesite:

    Private Sub Agregar_Btn_Click()
        sqlProd = "SELECT * FROM productos WHERE Codigo='" & CVar(Codigo_Txt) & "'"
        rsproductos.CursorLocation = adUseClient
        rsproductos.Open sqlProd, Cn, adOpenKeyset, adLockBatchOptimistic
        Set DataGrid1.DataSource = rsproductos
        DataGrid1.Columns(0) = Codigo_Txt.Text
        DataGrid1.Row = DataGrid1.Row + 1
        DataGrid1.Refresh
        MsgBox "Registro Agregado", vbOKOnly, "Módulo de Generación de Facturas"
        rsproductos.Close
    End Sub

    Wednesday, February 07, 2007 12:55 AM

All replies

  • Gracias El Bruno, pero he arreglado el problema cambiando de lugar el llamado al Form_Load, pero ahora al insertar el código para que lo busque en la base de datos y lo agregue al DataGrid, me lanza el error de que la columna no fue encontrada ("Run-time error 6147")... ¿Columna del DataGrid o de la base de datos?... No se que puede ser. Ayuda por favor. Gracias

    Aquí envio el código para el que lo necesite:

    Private Sub Agregar_Btn_Click()
        sqlProd = "SELECT * FROM productos WHERE Codigo='" & CVar(Codigo_Txt) & "'"
        rsproductos.CursorLocation = adUseClient
        rsproductos.Open sqlProd, Cn, adOpenKeyset, adLockBatchOptimistic
        Set DataGrid1.DataSource = rsproductos
        DataGrid1.Columns(0) = Codigo_Txt.Text
        DataGrid1.Row = DataGrid1.Row + 1
        DataGrid1.Refresh
        MsgBox "Registro Agregado", vbOKOnly, "Módulo de Generación de Facturas"
        rsproductos.Close
    End Sub

    Wednesday, February 07, 2007 12:55 AM
  • Hola, ante todo gracias por cualquier ayuda que pueda recibir al respecto.

    A mi pasa lo mismo del erro 6147, lo interesante es que antes no me ocurria, y mi programa funcionaba muy bien.

    Lo que yo intento hacer es cargar información desde una tabla hecha en Clipper, y hacer algunas modificaciones.

    Cuando consulto los detalles de una cuenta, y hacer el set datagrid.datasource = mirecordset, salta a la función datagrid_rowcolchange, sin embargo no es la primera vez q hago esta carga, y no entiendo pq se dirige a esta función, sobre todo, no entiendo pq recien ahora, si antes no hacia esto.

    Agradeceré cualquier ayuda q puedan darme al respecto.

    Dato aparte es el hecho de que incluso el ejecutable que cree, y que hasta ayer estuvo funcionando correctamente, ahora me da el mismo error.

    Wednesday, June 13, 2007 4:19 PM
  • El objeto es rproductos y para abrirlo es:

    en la linea de apertura  de rsproductos prueba con uno de estos: gdbConexion, adOpenStatic, adLockReadOnly

    Friday, August 17, 2007 1:13 PM
  • Mira yo tengo un problema con algo similar, pero a mi me dice el siguiente error:

     

    numero de fila incorrecto. ¿que puedo hacer para solucionar esto?

     

    Private Sub Text1_KeyPress(KeyAscii As Integer)
    Dim cve As String
    Dim ss As String
    If KeyAscii = 13 Then
    cve = Text1.Text
    Set rs = cn.Execute("SELECT * FROM original WHERE clave = " & cve)
    Text2.Text = rs("clave")
    Text3.Text = rs("nombre")
    Set DataGrid2.DataSource = rs
    DataGrid2.Row = DataGrid2.Row + 1
    DataGrid2.Refresh
    End If
    End Sub

    Monday, October 22, 2007 11:04 PM