Pregunta de Visual Basic

Soy nuevo en Bases de datos de Visual y quiero ver si me puedes ayudar.
Mira tengo un problemilla con DataGrid, yo estoy usando uno conectado a una base de datos Access, al traer los datos de la base para que los muestre el datagrid no tengo mayor problema, o sea me trae los distintos campos con sus respectivos de la tabla llamada, ahora el problema es que cuando quiero modificar algún valor de cualquier celda no me deja, me explico, es como si el teclado no funcionara. Ahora he intentado cambiar el valor de la celda de otra forma pero me envía un error 7010 The column is read only. Este el código que estoy utilizando:
Public Sub LlenarDatagrid()
Dim bdg As ADODB.Connection
Dim rsg As ADODB.Recordset
Dim conex As String
Set bdg = New ADODB.Connection
conex= "Provider=Microsoft.jet.oledb.3.51; Data Source =" & App.Path & "\" & "MiBase.mdb;Mode=ReadWrite"
bdg.ConnectionString = conex
bdg.CursorLocation = adUseClient
bdg.Open
Set rsg = bdg.Execute("MiTabla")
Set DataGrid1.DataSource = rsg
End Sub
'Este es el código que me envía el error
Private Sub DtG_KeyPress(KeyAscii As Integer)
DtG.Text = CInt(InputBox("Valor:")
End Sub
Por lo que llego a deducir el control Datagrid tiene alguna propiedad que es sólo de lectura pero no encuentro alguna que me permita quitar esta propiedad. Tengo que advertir que las propiedades AllowAddNew y AllowUpdate están en True.
Respuesta
1
Si, mira realmente el uso del dataGrid tiende a ser confuso pero en realidad es muy fácil de utilizar.
Unas cosas que noté.
1. Estas enlazando el control datagrid a nivel de código con una base de datos... no está mal, pero sería mucho más cómodo si agregas un control data, le estableces las propiedades para que se enlace a la tabla "MiTabla" de tu base de datos (es fácil y tu sabes hacer eso, si no dime), una ves que tienes el control data listo, enlasas el datagrid al control data... dejas el AllowAddNew
y el AllowUpdate tal cual como lo tienes ahorita (true) y con eso puedes ya escribir directamente al control datagrid sin problemas. Y te ahorras el evento DtG_KeyPress
porque ya no te va a hacer falta.
Prueba esto y si quieres que sea más especifico en cuanto a los enlaces de los controles o cualquier otra cosa me avisas ¿ok?
Suerte en tu proyecto.
O:-)
Tu respuesta me parece perfecta pero es ahí donde estoy chocando.
Por lo que tengo entendido los controles data se deben anexar en tiempo de diseño ¿cierto?, ahora bien lo que pasa que este sistema tiene que trabajar con varias bases de datos. Algunas de éstas están creadas pero otras las crea la aplicación o sea:
- Las bases de datos tienen diferentes nombres de archivos y a la vez ellas contienen diferentes tablas. Es por eso que estoy usando el Datagrid a nivel de código.
En todo caso estoy casi a punto de resolver mi problemilla... si tu me puedes ayudar ¡Perfecto! De todas maneras te aviso si lo que estoy planeando hacer me resulta
Saludos...
Mack
A decir verdad ya casi tienes resuelto el problema, pero si noto que estas escribiendo más código de que en verdad requieres.
si es verdad que el control data se agrega a nivel de diseño, pero a nivel de código solo cambias las propiedades
data1.databsename=app.path & "\nombre.mdb"
data1.table="mitabla"
Data1. Refresh
Dbgrid1. Refresh
Y listo. Ya esta hecho a nivel de código.
Lo bueno de ese control es que no tienes que inventar eventos como el kaypress o algo así. Si no que todo lo que cambies en el control, lo estas cambiando en la base de datos de una vez
Mira te dejo por ahora. Prueba eso y cualquier cosa ponme al tanto.
Suerte en tu proyecto
O:-)
Ok Amigo, muchas gracias, era algo parecido lo que estaba pensando pero con un ADODC.
En todo caso aún no pruebo con ADODC pero igual lo voy hacer, después te cuento si resulta o no, de todas formas tu ayuda me ha servido mucho.
Nos vemos y gracias nuevamente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas