UPDATE ABSURDO

11/11/2003 - 19:38 por Eduardo Robles | Informe spam
Hola foro:

No puedo actualizar una base de datos Access desde un dataset. El caso es
que me actualiza el primer campo del set (o sea campo1) pero el segundo no
lo hace

Ademas si utilizo el UPDATE como viene en la ayuda (con parentesis) ,o
sea :

UPDATE mitabla set (campo1= @MFecha, campo2 = @MFecha2) where campo0= @miID

me dice que el UPDATE esta mal (????)

Esta base de datos esta bien ya que si utilizo un solo set con cualquiera de
los dos campos me funciona

Aqui va el codigo basico que utilizo

Dim OleDbDataAdapter1 As New OleDb.OleDbDataAdapter()

Dim query1 As String = "select campo0,campo1,campo2,etc " + _

" from mitabla where codigo2='ID'"

Dim midataset2 As DataSet = New DataSet()

Dim midatarow As DataRow

oledbConnection.Open()

OleDbDataAdapter1.SelectCommand = New OleDb.OleDbCommand(query1,
oledbConnection)

OleDbDataAdapter1.SelectCommand.CommandType = CommandType.Text

OleDbDataAdapter1.UpdateCommand = New OleDb.OleDbCommand("UPDATE mitabla set
campo1= @MFecha, campo2 = @MFecha2 where campo0= @miID", oledbConnection)

OleDbDataAdapter1.UpdateCommand.CommandType = CommandType.Text

OleDbDataAdapter1.UpdateCommand.Parameters.Add("@MFecha", OleDbType.DBDate,
8, "campo1")

OleDbDataAdapter1.UpdateCommand.Parameters.Add("@MFecha2", OleDbType.DBDate,
8, "campo2")

OleDbDataAdapter1.UpdateCommand.Parameters.Add("@miID", OleDbType.Integer,
15, "campo0")

OleDbDataAdapter1.Fill(midataset2, "mitabla ")


Dim mfecha As Date

Dim mFecha2 As Date

Dim mnm As String

Dim miid As Integer

For Each midatarow In midataset2.Tables("mitabla ").Rows

miid=a un campoid de la fila

MFecha= unafecha

MFecha2= otrafecha


Next

OleDbDataAdapter1.Update(midataset2, "mitabla ")

oledbConnection.Close()



Saludos
 

Leer las respuestas

#1 Oscar Calvo
11/11/2003 - 22:08 | Informe spam
mira,pueden ser varias cosas, y revisar el codigo lleva quizas tiempo.ademas
tb depende de la bbdd.lo que puedes hacer es crear un OleDbCommandBuilder
este objeto te crea automaticamente los update,insert y delete del data
adapter dependiendo del select.Como lo hacer con parametros solo debes ver
la propiedad command text del objeto command que te devolvera el metodo
GetUpdateCommand() y asi veras si la consulta que tienes es buena o no
algo asi: (espero que lo entiendas en c#)

// crear conexión
OleDbConnection oConexion = new OleDbConnection();
oConexion.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Jet
OLEDB:Database Password=pedrito;Data Source=bd1.mdb;Persist Security
Info=true";
// crear adaptador
OleDbDataAdapter oDataAdapter = new OleDbDataAdapter("SELECT * from
articulos where id_articulos=@param", oConexion);
// crear commandbuilder
OleDbCommandBuilder oCB= new OleDbCommandBuilder(oDataAdapter);
// crear dataset
DataSet oDataSet =new DataSet();
OleDbCommand ff=oCB.GetUpdateCommand();
MessageBox.Show(ff.CommandText);// en el dialogo veras la consulta creada,
no hagas caso del text despues del AND y comprueba la tuya con esta:
oDataAdapter.Fill(oDataSet, "articulos");
// asignar dataset al datagrid
grdDatos.DataSource = oDataSet;
grdDatos.DataMember = "articulos";
oConexion.Close();
}
}


espero lo entiendas, si no no dudes en preguntar
un saludo

"Eduardo Robles" escribió en el mensaje
news:
Hola foro:

No puedo actualizar una base de datos Access desde un dataset. El caso es
que me actualiza el primer campo del set (o sea campo1) pero el segundo no
lo hace

Ademas si utilizo el UPDATE como viene en la ayuda (con parentesis)


,o
sea :

UPDATE mitabla set (campo1= @MFecha, campo2 = @MFecha2) where

me dice que el UPDATE esta mal (????)

Esta base de datos esta bien ya que si utilizo un solo set con cualquiera


de
los dos campos me funciona

Aqui va el codigo basico que utilizo

Dim OleDbDataAdapter1 As New OleDb.OleDbDataAdapter()

Dim query1 As String = "select campo0,campo1,campo2,etc " + _

" from mitabla where codigo2='ID'"

Dim midataset2 As DataSet = New DataSet()

Dim midatarow As DataRow

oledbConnection.Open()

OleDbDataAdapter1.SelectCommand = New OleDb.OleDbCommand(query1,
oledbConnection)

OleDbDataAdapter1.SelectCommand.CommandType = CommandType.Text

OleDbDataAdapter1.UpdateCommand = New OleDb.OleDbCommand("UPDATE mitabla


set
campo1= @MFecha, campo2 = @MFecha2 where campo0= @miID", oledbConnection)

OleDbDataAdapter1.UpdateCommand.CommandType = CommandType.Text

OleDbDataAdapter1.UpdateCommand.Parameters.Add("@MFecha",


OleDbType.DBDate,
8, "campo1")

OleDbDataAdapter1.UpdateCommand.Parameters.Add("@MFecha2",


OleDbType.DBDate,
8, "campo2")

OleDbDataAdapter1.UpdateCommand.Parameters.Add("@miID", OleDbType.Integer,
15, "campo0")

OleDbDataAdapter1.Fill(midataset2, "mitabla ")


Dim mfecha As Date

Dim mFecha2 As Date

Dim mnm As String

Dim miid As Integer

For Each midatarow In midataset2.Tables("mitabla ").Rows

miid=a un campoid de la fila

MFecha= unafecha

MFecha2= otrafecha


Next

OleDbDataAdapter1.Update(midataset2, "mitabla ")

oledbConnection.Close()



Saludos


Preguntas similares