Principales respuestas
Insertar registros a un DataGrid mediante ADO

Pregunta
-
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 SubAdemá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.
- Cambiado Toni Recio [Techdencias]Moderator domingo, 7 de junio de 2009 7:07 ([Loc]From:Lenguaje VB.NET)
Respuestas
-
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- Marcado como respuesta Toni Recio [Techdencias]Moderator domingo, 7 de junio de 2009 7:07
Todas las respuestas
-
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- Marcado como respuesta Toni Recio [Techdencias]Moderator domingo, 7 de junio de 2009 7:07
-
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.
-
-
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