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

Preguntas similare

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


Respuesta Responder a este mensaje
#2 Eduardo Robles
12/11/2003 - 16:45 | Informe spam
Al final ayer ya me funciono dando valores diretamente a cada item de cada
datarow sin asignar valores a parametros . Eso si, hay que crearlos (??).
Supongo que lo que hay que hacer es crear la sentencia update sin
parametros. Ya lo probare.

Dim query2 As String = "UPDATE Tabla1 set campo0= @MFecha, campo1= @MFechaA
" + _

" where id= @miID"

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

OleDbDataAdapter1.SelectCommand.CommandType = CommandType.Text

OleDbDataAdapter1.UpdateCommand = New OleDb.OleDbCommand(query2,
oledbConnection)

OleDbDataAdapter1.UpdateCommand.CommandType = CommandType.Text

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

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

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


for each datarow in dataset.table("Mitabla").rows

datarow("campo1")= algo


next
dataadapter.update(dataset1,"Tabla1")

De todas formas estudiare lo que me dices (elOleDbCommandBuilder nunca lo he
usado). Esto de la programacion de objetos parece un pozo sin fin.

Gracias ;-))
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida