Actualizar Dataset Contra BD

27/07/2004 - 14:20 por Pedroafa | Informe spam
Hola, tengo un problema a la hora de actualizar la bd con
el dataset al que le ido añadiendo nuevos registros, no
sé porque el Uptate no me deja ejecutarle me da un error.
Yo creo que aparentemente esta bien escrito, pero
evidentemente tiene que haber algún fallo porque sino
funcionaria. El error que me da es "Error de sintaxis en
el INSERT INTO". Aquí os dejo el código a ver si me
podeis decir porque casca.

////////////////////////////////////////////////////////

'declaradas como propiedades de la clase FORM1
Private oDataset As DataSet
Private odaFondos As OleDbDataAdapter
Private odaHistorico As OleDbDataAdapter
Private oCmdFondos As OleDbCommandBuilder
Private oCmdHistorico As OleDbCommandBuilder
Private oConexion As OleDbConnection

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

'crear conexión
oConexion = New OleDbConnection
oConexion.ConnectionString
= "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=..\Fondos.mdb"

'crear adaptador
odaFondos = New OleDbDataAdapter("SELECT
IdFondo,Fondos.Nombre AS Fondo, Tipos_Fondos.Nombre AS
Tipo_Fondo FROM Fondos INNER JOIN Tipos_Fondos ON
Fondos.IdTipo_Fondo= Tipos_Fondos.IdTipo_Fondo;", _
oConexion)

odaHistorico = New OleDbDataAdapter("SELECT *
FROM Historico", _
oConexion)

'crear commadBuilder
oCmdFondos = New OleDbCommandBuilder(odaFondos)
oCmdHistorico = New OleDbCommandBuilder
(odaHistorico)

'crear Dataset
Me.oDataset = New DataSet

oConexion.Open()
'llenar con el adaptador el dataset
odaFondos.Fill(Me.oDataset, "Fondos")
odaHistorico.Fill(Me.oDataset, "Historico")
oConexion.Close()

End Sub

//////////////////////////////////////////////////////////

Private Sub btnColumna_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
btnColumna.Click

Try

Dim odatarow As DataRow

odatarow = Me.oDataset.Tables
("Historico").NewRow

odatarow("IdHistorico") = 23
odatarow("IdFondo") = 1
odatarow("Fecha") = "01-12-2003"

Me.oDataset.Tables("Historico").Rows.Add
(odatarow)


Me.odaHistorico.Update
(Me.oDataset, "Historico")


Catch ex As Exception

MessageBox.Show(ex.Message)

End Try


End Sub

////////////////////////////////////////////////////////

Gracias Por La Ayuda.

Un Saludo.
 

Leer las respuestas

#1 Sergiou
27/07/2004 - 15:21 | Informe spam
No has indicado al adaptador cuáles son los comandos insert, delete,
update. Debes instanciar con el oledbcommandbuilder (por ejemplo) las
propiedades insertcommand,deletecommand y updatecommand del objeto
oldbdataadapter para que este en su metodo upodate pueda realizar las
actualizaciones pertinentes en la base de datos, espero que esto te
sirva de ayuda.

Saludos.

Pedroafa wrote:

Hola, tengo un problema a la hora de actualizar la bd con
el dataset al que le ido añadiendo nuevos registros, no
sé porque el Uptate no me deja ejecutarle me da un error.
Yo creo que aparentemente esta bien escrito, pero
evidentemente tiene que haber algún fallo porque sino
funcionaria. El error que me da es "Error de sintaxis en
el INSERT INTO". Aquí os dejo el código a ver si me
podeis decir porque casca.

////////////////////////////////////////////////////////

'declaradas como propiedades de la clase FORM1
Private oDataset As DataSet
Private odaFondos As OleDbDataAdapter
Private odaHistorico As OleDbDataAdapter
Private oCmdFondos As OleDbCommandBuilder
Private oCmdHistorico As OleDbCommandBuilder
Private oConexion As OleDbConnection

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

'crear conexión
oConexion = New OleDbConnection
oConexion.ConnectionString
= "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=..\Fondos.mdb"

'crear adaptador
odaFondos = New OleDbDataAdapter("SELECT
IdFondo,Fondos.Nombre AS Fondo, Tipos_Fondos.Nombre AS
Tipo_Fondo FROM Fondos INNER JOIN Tipos_Fondos ON
Fondos.IdTipo_Fondo= Tipos_Fondos.IdTipo_Fondo;", _
oConexion)

odaHistorico = New OleDbDataAdapter("SELECT *
FROM Historico", _
oConexion)

'crear commadBuilder
oCmdFondos = New OleDbCommandBuilder(odaFondos)
oCmdHistorico = New OleDbCommandBuilder
(odaHistorico)

'crear Dataset
Me.oDataset = New DataSet

oConexion.Open()
'llenar con el adaptador el dataset
odaFondos.Fill(Me.oDataset, "Fondos")
odaHistorico.Fill(Me.oDataset, "Historico")
oConexion.Close()

End Sub

//////////////////////////////////////////////////////////

Private Sub btnColumna_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
btnColumna.Click

Try

Dim odatarow As DataRow

odatarow = Me.oDataset.Tables
("Historico").NewRow

odatarow("IdHistorico") = 23
odatarow("IdFondo") = 1
odatarow("Fecha") = "01-12-2003"

Me.oDataset.Tables("Historico").Rows.Add
(odatarow)


Me.odaHistorico.Update
(Me.oDataset, "Historico")


Catch ex As Exception

MessageBox.Show(ex.Message)

End Try


End Sub

////////////////////////////////////////////////////////

Gracias Por La Ayuda.

Un Saludo.

Preguntas similares