Actualizar base de datos desde Conjunto de Datos

07/02/2005 - 20:07 por koldo | Informe spam
Despues de actualizar un campo en un conjunto de datos, quiero que
se actualice en el origen de datos o base de datos original.

He utilizado este ejemplo segun la ayuda de MSDN, pero no funciona.
Me dice lo siguiente:
"La generación SQL dinámica para UpdateCommand no es compatible con
SelectCommand, que no devuelve ninguna información sobre columnas clave."

Si utilizo OleDb sí me funciona el ejemplo pero con Sql Server no
me funciona.

Alguien sabe dónde está el error?

Gracias


SqlConnection conn = new SqlConnection("Persist Security Info=False;"+
"Integrated Security=SSPI;database=mibase;server=localhost");

string sql="select numero, nombre, ciudad, cantidad from clientes";
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand= new SqlCommand(sql,conn);
SqlCommandBuilder cb = new SqlCommandBuilder(da);

DataSet ds = new DataSet();
da.Fill(ds, "clientes");

//Modificacion de un campo:
ds.Tables["clientes"].Rows[0]["nombre"]="Maite2";

da.Update(ds.Tables["clientes"]);

dataGrid1.DataSource=ds.Tables["clientes"];

Preguntas similare

Leer las respuestas

#1 Miguel Ortiz Falcón
07/02/2005 - 20:19 | Informe spam
Utiliza el método Update del adapter y listo. Las
sentencias insert, udate y delete se construyeron en base
al select que hiciste en el generador?

Saludos

Miguel Ortiz Falcón


Despues de actualizar un campo en un conjunto de datos,


quiero que
se actualice en el origen de datos o base de datos


original.

He utilizado este ejemplo segun la ayuda de MSDN, pero


no funciona.
Me dice lo siguiente:
"La generación SQL dinà¡mica para UpdateCommand no es


compatible con
SelectCommand, que no devuelve ninguna información


sobre columnas clave."

Si utilizo OleDb sà­ me funciona el ejemplo pero con Sql


Server no
me funciona.

Alguien sabe dónde està¡ el error?

Gracias


SqlConnection conn = new SqlConnection("Persist Security


Info=False;"+
"Integrated


Security=SSPI;database=mibase;server=localhost");

string sql="select numero, nombre, ciudad, cantidad from


clientes";
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand= new SqlCommand(sql,conn);
SqlCommandBuilder cb = new SqlCommandBuilder(da);

DataSet ds = new DataSet();
da.Fill(ds, "clientes");

//Modificacion de un campo:
ds.Tables["clientes"].Rows[0]["nombre"]="Maite2";

da.Update(ds.Tables["clientes"]);

dataGrid1.DataSource=ds.Tables["clientes"];
.

Respuesta Responder a este mensaje
#2 koldo
07/02/2005 - 21:55 | Informe spam
Hola Miguel.
Si me lo puedes detallar, mejor.
Te lo digo porque ya probé algunas opciones con update y no me funcionaba.

Gracias.

"Miguel Ortiz Falcón" wrote:

Utiliza el método Update del adapter y listo. Las
sentencias insert, udate y delete se construyeron en base
al select que hiciste en el generador?

Saludos

Miguel Ortiz Falcón


>Despues de actualizar un campo en un conjunto de datos,
quiero que
>se actualice en el origen de datos o base de datos
original.
>
>He utilizado este ejemplo segun la ayuda de MSDN, pero
no funciona.
>Me dice lo siguiente:
> "La generación SQL dinà¡mica para UpdateCommand no es
compatible con
> SelectCommand, que no devuelve ninguna información
sobre columnas clave."
>
>Si utilizo OleDb sà­ me funciona el ejemplo pero con Sql
Server no
>me funciona.
>
>Alguien sabe dónde està¡ el error?
>
>Gracias
>
>
>SqlConnection conn = new SqlConnection("Persist Security
Info=False;"+
>"Integrated
Security=SSPI;database=mibase;server=localhost");
>
>string sql="select numero, nombre, ciudad, cantidad from
clientes";
>SqlDataAdapter da = new SqlDataAdapter();
>da.SelectCommand= new SqlCommand(sql,conn);
>SqlCommandBuilder cb = new SqlCommandBuilder(da);
>
>DataSet ds = new DataSet();
>da.Fill(ds, "clientes");
>
>//Modificacion de un campo:
>ds.Tables["clientes"].Rows[0]["nombre"]="Maite2";
>
>da.Update(ds.Tables["clientes"]);
>
>dataGrid1.DataSource=ds.Tables["clientes"];
>.
>

Respuesta Responder a este mensaje
#3 Miguel Ortiz Falcón
08/02/2005 - 00:47 | Informe spam
Hola, la verdad no se cómo lo estes configurando pues no
debe resultar en ningún problema si se está configurado
correctamente el Adaptador. Los datos los estas cargando
de la sentencia SELECT, te suguiero que esa sentencia la
crees a partir del Diseñador de consultas que aparece en
el enlace "configurar adaptador de datos". Entonces
verificas que esté seleccionada la opción de "Generar
insert, update, y delete". Ahora el proceso es el
siguiente:

dbAdapter.Fill(dataSet);

donde:
dataGrid.DataSource = dataSet.Tables[0]; // por ejemplo.

ya que haces modificaciones, entonces llamas a:

dbAdapter.Update(dataSet);

y listo, no debe haber ningún problema. Lo haces así?

Saludos

Miguel Ortiz Falcón



Hola Miguel.
Si me lo puedes detallar, mejor.
Te lo digo porque ya probé algunas opciones con update


y no me funcionaba.

Gracias.

"Miguel Ortiz Falcón" wrote:

Utiliza el método Update del adapter y listo. Las
sentencias insert, udate y delete se construyeron en




base
al select que hiciste en el generador?

Saludos

Miguel Ortiz Falcón


>Despues de actualizar un campo en un conjunto de




datos,
quiero que
>se actualice en el origen de datos o base de datos
original.
>
>He utilizado este ejemplo segun la ayuda de MSDN,




pero
no funciona.
>Me dice lo siguiente:
> "La generaciàf³n SQL dinàf¡mica para UpdateCommand




no es
compatible con
> SelectCommand, que no devuelve ninguna




informaciàf³n
sobre columnas clave."
>
>Si utilizo OleDb sàf­ me funciona el ejemplo pero con




Sql
Server no
>me funciona.
>
>Alguien sabe dàf³nde estàf¡ el error?
>
>Gracias
>
>
>SqlConnection conn = new SqlConnection("Persist




Security
Info=False;"+
>"Integrated
Security=SSPI;database=mibase;server=localhost");
>
>string sql="select numero, nombre, ciudad, cantidad




from
clientes";
>SqlDataAdapter da = new SqlDataAdapter();
>da.SelectCommand= new SqlCommand(sql,conn);
>SqlCommandBuilder cb = new SqlCommandBuilder(da);
>
>DataSet ds = new DataSet();
>da.Fill(ds, "clientes");
>
>//Modificacion de un campo:
>ds.Tables["clientes"].Rows[0]["nombre"]="Maite2";
>
>da.Update(ds.Tables["clientes"]);
>
>dataGrid1.DataSource=ds.Tables["clientes"];
>.
>



.

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