dudas datagrid

30/07/2006 - 01:35 por Papete | Informe spam
Hola, soy nuevo en .NET (vengo de VB6)

Intento ver/modificar/eliminar datos de una base en un DataGrid. Pero el
código que encontré me crea un "reflejo" ("ggo")de los datos, por lo que en
realidad la base de datos no la toca.
1) ¿Podríais ayudarme?
2) Y otra pregunta. ¿Por qué no funciona el DataGrid si intento ponerle un
recordset de ADODB.Recordset al datasource?
3) Muchas gracias.
Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

Dim cnn As OleDb.OleDbConnection

Dim da As OleDb.OleDbDataAdapter

Dim dt As DataSet

cnn = New OleDb.OleDbConnection("Provider=vfpoledb.1;data
source=E:\PSSA\database\gestion.dbc")

da = New OleDb.OleDbDataAdapter("SELECT * FROM listados WHERE
empresa = '02'", cnn)

dt = New DataSet()

da.Fill(dt, "ggo")

DataGridView1.AutoGenerateColumns = True

DataGridView1.AllowUserToOrderColumns = True

DataGridView1.AutoResizeColumns()

DataGridView1.DataSource = dt

DataGridView1.DataMember = "ggo"

End Sub




End Class
 

Leer las respuestas

#1 SoftJaén
30/07/2006 - 11:47 | Informe spam
"Papete" escribió:

Intento ver/modificar/eliminar datos de una base en un DataGrid. Pero el
código que encontré me crea un "reflejo" ("ggo")de los datos, por lo que
en realidad la base de datos no la toca.



Hola:

Eso es así. Los cambios se reflejan únicamente en el control DataGridView,
porque al trabajar con un objeto DataSet, estás trabajando desconectado del
origen de datos, en tu caso, de la base de datos de Visual FoxPro.

Para que las modificaciones efectuadas en el conjunto de datos se reflejen
en la base de datos, deberás llamar al método «Update» del objeto
DataAdapter (da), pero antes de todo ello, deberás de haber configurado
debidamente las propiedades SelectCommand, InsertCommand, UpdateCommand y
DeleteCommand del objeto OleDbDataAdapter.

Para más información sobre cómo configurar dichas propiedades, consulta la
ayuda de Visual Basic, concretamente la ayuda sobre la clase
OleDbDataAdapter, donde encontrarás un ejemplo para asignar las mencionadas
propiedades.

2) Y otra pregunta. ¿Por qué no funciona el DataGrid si intento
ponerle un recordset de ADODB.Recordset al datasource?



A la propiedad DataSource de un control DataGrid o de un control
DataGridView (que son dos objetos parecidos pero diferentes), que yo sepa,
únicamente le puedes asignar un objeto DataSet, pero nunca un objeto
Recordset de la biblioteca de ADO. Eso estaba bien para Visual Basic 6.0,
pero aquí, las cosas son diferentes.

Una vez que hayas abierto los objetos ADODB.Connection (cnn) y
ADODB.Recordset (rst), rellenarías el control DataGridView de la siguiente
manera:

' Utilizamos el objeto Recordset para rellenar una tabla
' en el objeto DataSet.
'
Dim ds As New DataSet
Dim da As New OleDbDataAdapter

' Rellenamos el objeto DataAdapter, cerrándose
' automáticamente el objeto Recordset.
'
da.Fill(ds, rst, "ggo")

' Cerramos la conexión
'
cnn.Close()

' Rellenamos el control DataGridVies
'
With DataGridView1
.DataMember = "ggo"
.DataSource = ds
End With

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.

Preguntas similares