Visual Basic - Como Manejar un DataGrid

Life is soft - evento anual de software empresarial
 
Vista:

Como Manejar un DataGrid

Publicado por Adel Castillo (5 intervenciones) el 04/06/2005 19:56:02
Hola:
Tengo una duda que solucionar, ojala alguien me ayude. Tengo una BD en Access. Realizo una coneccion a ella mediante un objeto AdoDB.Connection denominado cnn y tambien Mediante un Objeto AdoDataConnection con una consulta que es la siguiente:
With cnn
.ConnectionString = Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & App.Path & "\Datos\ProyCot.mdb;" & _
"Mode=ReadWrite;Persist Security Info=False"
.Open
MDI.Show
End With
AdoClientes.ConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & App.Path & "\Datos\ProyCot.mdb;" & _
"Mode=ReadWrite;Persist Security Info=False"

AdoClientes.RecordSurce="SELECT Clientes.IdCliente, Clientes.IdCiudad, Clientes.Nombres, Clientes.Direccion, Clientes.Telefonos, Ciudades.Ciudad " & _
"FROM Ciudades INNER JOIN Clientes ON Ciudades.IdCiudad = Clientes.IdCiudad &_ "ORDER BY Clientes.Nombres;", cnn,adOpenStatic,adLockOptimistic,adCmdText

Bueno este AdodataConnection vinculo a un DataGrid llamado "grdClientes", el cual mediante el siguiente codigo hago invisibles todos los Id que tiene esta consulta para el usuario y dimensiono el tamaño inicial de columnas:
With grdClientes
Set .DataSource = AdoClientes
For N = 0 To 1
.Columns(N).Visible = False
Next
.Columns(2).Width = 6000
.Columns(3).Width = 3000
.Columns(4).Width = 3000
.Columns(5).Width = 1500
End With
Cada que el usuario cambia de celda dentro del DataGrid ubico al recordset del AdoDataConnection en el registro escogido de la siguiente manera:

Private Sub grdEdiciones_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
Dim Col As Integer
With AdoClientes.Recordset
Col = grdClientes.Col
grdClientes.Col = 0
.MoveFirst
.Find "IdCliente=" & grdClientes.Text
grdClientes.Col = Col
End With
End Sub

Tengo un DataList a un costado del Datagrid llamado "lstCiudades", en el cual registro todas las ciudades vigentes en mi BD, usando un Recordset vinculado a este Objeto mediante el siguiente codigo:

RsDatos.Open "SELECT Ciudades.IdCiudad, Ciudades.Ciudad " & _
"From Ciudades " & _
"ORDER BY Ciudades.Ciudad;", cnn, adOpenStatic, adLockReadOnly, adCmdText
With lstCiudades
Set .DataSource = RsDatos
Set .RowSource = RsDatos
.DataField = "IdCiudad"
.BoundColumn = "IdCiudad"
.ListField = "Ciudad"
End With

Ahora quiero que el usuario escoja una ciudad dentro del dataList y automaticamente se actualice esta en el Cliente enfocado en el DataGrid.
Trato de realizarlo usando el evento Click del Datalist de la siguiente manera y me sale un error que nose como solucionar:

Private Sub lstCiudades_Click()
With AdoClientes.Recordset
If grdClientes <> lstDatos Then
.Fields("IdCiudad") = lstDatos.BoundText
.Update
grdClientes.Text = lstDatos.Text
End If
End With
End Sub

Al cambiar de celda en el DataGrid, despues de escoger una ciudad se presenta el siguiente error: "INFORMACIÓN DE COLUMNA CLAVE INSUFICIENTE PARA REALIZAR LA OPERACIÓN UPDATE O REFRESH"
Si alguien me dice que hago mal le agradecería un montón, Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Como Manejar un DataGrid

Publicado por mario (6 intervenciones) el 04/07/2005 18:05:43
no veo que realices un refresh del control data bound, es necesario para que los cambios se realicen.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar