No puede ejecutar store procedure correctamente

19/01/2006 - 01:26 por Diana Estrada | Informe spam
Hola, mi problema es el siguiente, estoy utilizando una base de datos hecha
con SQL server express 2005, y tengo mi aplicacion con C#2005, ahora bien, en
la base de datos tengo un procedimiento almacenado q hace la inserciond e
informacion a una tabla, este procedimiento lo ejecuto usando un
tableadapter, al ejecutarlo parece trabajar bien, de hecho cuando hago la
insercion desde la aplicacion tengo un datagridview q me muestra el contenido
de la tabla y todo parece perfecto ya q si se ve el nuevo registro agregado,
pero al salir de la aplicacion y volver a ejecutar dicho(s) registro(s)
agregado(s) ya no estan y si veo directamente en la tabla de la base de datos
tampoco esta la nueva informacion.
Alguien tiene idea de q pueda estar pasando? o como es q actualizo mi base
de datos? o alguna sugerencia para ejecutar store procedures para inser o
update?

De antemano muchas gracias
Saludos

Preguntas similare

Leer las respuestas

#1 Yamil Bracho
19/01/2006 - 14:18 | Informe spam
Diana, revisa si dentro del SP estas dentro de una transaccion y tienes el
correspondiente COMMIT
"Diana Estrada" wrote in message
news:
Hola, mi problema es el siguiente, estoy utilizando una base de datos


hecha
con SQL server express 2005, y tengo mi aplicacion con C#2005, ahora bien,


en
la base de datos tengo un procedimiento almacenado q hace la inserciond e
informacion a una tabla, este procedimiento lo ejecuto usando un
tableadapter, al ejecutarlo parece trabajar bien, de hecho cuando hago la
insercion desde la aplicacion tengo un datagridview q me muestra el


contenido
de la tabla y todo parece perfecto ya q si se ve el nuevo registro


agregado,
pero al salir de la aplicacion y volver a ejecutar dicho(s) registro(s)
agregado(s) ya no estan y si veo directamente en la tabla de la base de


datos
tampoco esta la nueva informacion.
Alguien tiene idea de q pueda estar pasando? o como es q actualizo mi base
de datos? o alguna sugerencia para ejecutar store procedures para inser o
update?

De antemano muchas gracias
Saludos
Respuesta Responder a este mensaje
#2 Angel J. Hernández M.
19/01/2006 - 14:36 | Informe spam
Hola Diana, cómo estás? Lo de "parecer" es por qué lo probaste desde el IDE
de SQL y validaste que el Stored Procedure (SP) se ejecutó correctamente? Si
la inserción lo haces a traves de un SP estos se graban en la tabla (a menos
que haya algún constraint o estés violando alguna regla). Ahora si el origen
de datos del DataGrid proviene de esa tabla, entonces debes refrescar dichos
datos, es decir, llamar al método Fill del Adaptador y pasarle el DataSet
que vinculas a la cuadrícula.

Saludos,


Angel J. Hernández M.
MCP - MCAD - MCSD - MCDBA
Microsoft MVP ASP/ASP.NET
http://groups.msn.com/desarrolladoresmiranda
http://www.consein.com




"Diana Estrada" wrote in message
news:
Hola, mi problema es el siguiente, estoy utilizando una base de datos
hecha
con SQL server express 2005, y tengo mi aplicacion con C#2005, ahora bien,
en
la base de datos tengo un procedimiento almacenado q hace la inserciond e
informacion a una tabla, este procedimiento lo ejecuto usando un
tableadapter, al ejecutarlo parece trabajar bien, de hecho cuando hago la
insercion desde la aplicacion tengo un datagridview q me muestra el
contenido
de la tabla y todo parece perfecto ya q si se ve el nuevo registro
agregado,
pero al salir de la aplicacion y volver a ejecutar dicho(s) registro(s)
agregado(s) ya no estan y si veo directamente en la tabla de la base de
datos
tampoco esta la nueva informacion.
Alguien tiene idea de q pueda estar pasando? o como es q actualizo mi base
de datos? o alguna sugerencia para ejecutar store procedures para inser o
update?

De antemano muchas gracias
Saludos
Respuesta Responder a este mensaje
#3 Diana Estrada
19/01/2006 - 18:50 | Informe spam
Hola gracias por su atencion, miren les anexo el codigo q tengo, espero se
pueda encontrar q es lo q me esta faltando , pe cheq sus sugerencias y aun no
puedo hacer q los datos se almacenen.
Tengo mi base de datos en SQL Server express 2005 y ya ejecute directamente
en ella el SP para ver si funciona correctamente y si, ahi sime anexa los
datos a la tabla, el codigo del SP es:
ALTER PROCEDURE spu_Prensa
(
@ID int=0,
@sNombre varchar(15),
@bNumero int =0
)

AS
if @ID=0
begin
insert into tPrensa (sNombre,bNumero)
values (@sNombre,@bNumero)
end
else
begin
update tPrensa
set sNombre=@sNombre, bNumero=@bNumero
where ID=@ID
end
RETURN

Ahora bien, el problema esta cuando el SP lo ejecuto en mi codigo, ya probe
por dos caminos, uno fue creando un query en el archivo xsd de mi dataset de
la base de datos, el query manda llamar mi SP y lo ejecute ahi y no me
almacena los datos , ejecute el query en codigo con las siguientes lineas y
tampoco:

dbPrensas2006DataSetTableAdapters.QueriesTableAdapter query = new
Prensas.dbPrensas2006DataSetTableAdapters.QueriesTableAdapter();
int i=query.spu_Prensa(ID, this.txtNombre.Text ,int.Parse( txtNumero.Text));

Luego me fui por otro camino el de usar un tableadapter, y puse el siguiente
codigo pero tampoco me lo hace,

dbPrensas2006DataSetTableAdapters.spq_PrensaTableAdapter prensa = new
Prensas.dbPrensas2006DataSetTableAdapters.spq_PrensaTableAdapter();
int i = prensa.Update(ID, this.txtNombre.Text, int.Parse(txtNumero.Text));
dbPrensas2006DataSet dsprensa = new dbPrensas2006DataSet();
prensa.Update(dsprensa);

Cabe mencionar q apenas estoy usando por primera vez el VS2005 por lo q no
se si algo se me esta escapando y como bien comentan , a lo mejor estoy
trabajando con copia d ela tabla y me esta faltando hacer un vaciado a la
base de datos reall , pero no he encontrado como hacer eso, tienen alguna
sugerencia, o debe usar alguna otra herramienta para hacer los insert o
updates y q esto sea directo en la base de datos?

De antemano muchisisisisimas gracias
Saludos
Respuesta Responder a este mensaje
#4 Diana Estrada
19/01/2006 - 19:50 | Informe spam
hola, hice los siguientes cambios al codigo:
private void btnAceptar_Click(object sender, EventArgs e)
{
SqlTransaction tran;
try
{
dbPrensas2006DataSetTableAdapters.spq_PrensaTableAdapter
prensa = new
Prensas.dbPrensas2006DataSetTableAdapters.spq_PrensaTableAdapter();
prensa.Connection.Open();
tran = prensa.Connection.BeginTransaction();
int i = prensa.Update(ID, this.txtNombre.Text,
int.Parse(txtNumero.Text));
if (i > 0)
{
tran.Commit();
prensa.Connection.Close();
this.Close();
}
else
lblMensaje.Text = "No se pudo realizar la operación";
}
catch(Exception ex){
lblMensaje.Text = ex.Message;
}
}
Ahora con el agregado de transaccion al momento de qrer ejecuta la linea de :
int i = prensa.Update(ID, this.txtNombre.Text, int.Parse(txtNumero.Text));
me manda una excepcion q dice lo siguiente:
"ExecuteNonQuery requires the command to have a transaction when the
connection assigned to the command is in a pending local transaction. The
Transaction property of the command has not been initialized."
a que se debe? alguna sugerencia
Nuevamente gracias!
Saludos
Respuesta Responder a este mensaje
#5 Octavio Hernandez
19/01/2006 - 20:03 | Informe spam
Diana,

Te faltan unas líneas:

tran = prensa.Connection.BeginTransaction();
// agregar esto
prensa.InsertCommand.Transaction = tran;
prensa.UpdateCommand.Transaction = tran;
prensa.DeleteCommand.Transaction = tran;
//
int i = prensa.Update(ID, this.txtNombre.Text, int.Parse(txtNumero.Text));

Slds - Octavio

"Diana Estrada" escribió en el
mensaje news:
hola, hice los siguientes cambios al codigo:
private void btnAceptar_Click(object sender, EventArgs e)
{
SqlTransaction tran;
try
{
dbPrensas2006DataSetTableAdapters.spq_PrensaTableAdapter
prensa = new
Prensas.dbPrensas2006DataSetTableAdapters.spq_PrensaTableAdapter();
prensa.Connection.Open();
tran = prensa.Connection.BeginTransaction();
int i = prensa.Update(ID, this.txtNombre.Text,
int.Parse(txtNumero.Text));
if (i > 0)
{
tran.Commit();
prensa.Connection.Close();
this.Close();
}
else
lblMensaje.Text = "No se pudo realizar la operación";
}
catch(Exception ex){
lblMensaje.Text = ex.Message;
}
}
Ahora con el agregado de transaccion al momento de qrer ejecuta la linea
de :
int i = prensa.Update(ID, this.txtNombre.Text, int.Parse(txtNumero.Text));
me manda una excepcion q dice lo siguiente:
"ExecuteNonQuery requires the command to have a transaction when the
connection assigned to the command is in a pending local transaction. The
Transaction property of the command has not been initialized."
a que se debe? alguna sugerencia
Nuevamente gracias!
Saludos
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida