Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   .NET (https://www.clubdelphi.com/foros/forumdisplay.php?f=17)
-   -   Los datos no se muestran despues de guardar. (https://www.clubdelphi.com/foros/showthread.php?t=70194)

radaalvaro 05-10-2010 23:37:02

Los datos no se muestran despues de guardar.
 
Amigos,

Tengo un problema con un programa que estoy desarrollando.

Les explico. El programa es para manejo de ventas, inventarios y cuentas por cobrar.

Cuando registro una venta que inserte datos en cuentas por cobrar, luego de hacer la venta, voy a cuentas por cobrar para que me muestre el listado de las cuentas que hay en ese momento y me muestra todas las antiguas transacciones excepto la última que acabo de realizar. y recien al cabo de varios minutos, recien puedo verla, o cauando cierro el programa y vuelvo a abrirlo.

Tambien puedo verla si realizo la consulta directamente en el SQL Server Management Studio 2005.

Utilizo Delphi.net que trabaja sobre el Framework 1.1 y SQL Server 2005 SP3.

Cada tabla tiene su propio procedimiento almacenado y el registro se realiza dentro de una transacción de sql server y en caso de que todo sea exitoso, se realiza el commit, caso contrario el rollback.


// Co es un SqlCommand que ya tiene asignado previamente
el procedimiento correspondiente.

// Datos es un ArrayList donde vienen todos los parametros para
pasarle al procedimiento
// almacenado

// Tr es un Objeto de tipo SqlTransaction.
Co.Transaction := SqlTransaction(tr);
if Datos.Count<=Co.Parameters.Count then
begin
for I := 0 to Datos.count - 1 do
if Datos[i]<>nil then
Co.Parameters[i].Value := Datos[i]
else
Co.Parameters[i].Value := Dbnull.Value;
aux := Datos.Count;
for j := aux to Co.parameters.count - 1 do
Co.Parameters[j].Value := Dbnull.Value;
end
Co.ExecuteNonQuery;
Una vez que toda la transacción se completo, procedo a ver en mi formulario de cuentas por cobrar, y no veo el último dato insertado. Para ver uso una Grilla que se carga a partir de un DataSet.


function TAcceso.DevuelveDatoDS(sConsulta: string): DataSet;
var
Dap: IDbDataAdapter;
Resultado : DataSet;
begin
Resultado := DataSet.Create;
if (sConsulta<>'')then
begin
dap := sqlDataAdapter.Create(sConsulta, sqlConnection(cnx));

Dap.Fill(Resultado);
sqlDataAdapter(dap).Dispose;
end;
result := Resultado;
end;
Esto voy intentando solucionarlo desde hace muuucho tiempo, si pudieran darme una mano, les agradecería mucho.

Saludos.

Atte.

Didier.

BlueSteel 05-10-2010 23:50:47

Hola

probastes con realizar un Post o Refresh despues de insert. Al insertar los datos a una tabla no lo podras visualizar en la consulta anterior a menos que la refresques o actualices la consulta.

Yo lo que realizo despues de un Insert o Update es realizar otro proceso para que actualice los datos que muestro en la grilla o pantalla que quiero

Salu2:p:D

Neftali [Germán.Estévez] 06-10-2010 12:11:08

Con 160 mensajes no comentaré nada de lo que debería comentar, acerca de los TAG's.

radaalvaro 28-10-2010 19:09:25

Post o Refresh.... en que momento?
 
Cita:

Empezado por BlueSteel (Mensaje 378513)
Hola

probastes con realizar un Post o Refresh despues de insert. Al insertar los datos a una tabla no lo podras visualizar en la consulta anterior a menos que la refresques o actualices la consulta.

Yo lo que realizo despues de un Insert o Update es realizar otro proceso para que actualice los datos que muestro en la grilla o pantalla que quiero

Salu2:p:D

Post o refresh, en que momento?, a la hora de realizar la nueva consulta, o en que clase encuentro estos métodos.

Te agradezco mucho la colaboración, estoy con este inconveniente desde hace muuucho tiempo.

Saludos.

Didier.

BlueSteel 28-10-2010 19:32:38

Cita:

Empezado por radaalvaro (Mensaje 380732)
Post o refresh, en que momento?, a la hora de realizar la nueva consulta, o en que clase encuentro estos métodos.

Te agradezco mucho la colaboración, estoy con este inconveniente desde hace muuucho tiempo.

Saludos.

Didier.

Estimado... cuando realizas la venta, realizas un insert en algunas tablas.. .cuando te cambias al modulo cuentas por cobrar... lo más probable es que la sentencia que muestra las cuentas que estan desplegadas se hallan realizado antes de realizar la venta nueva... por lo cual debieras realizar una nueva seleccion o refrescar la consulta...

no se si me explique bien...

Salu2:p:D

radaalvaro 29-10-2010 22:20:18

Cita:

Empezado por BlueSteel (Mensaje 380738)
Estimado... cuando realizas la venta, realizas un insert en algunas tablas.. .cuando te cambias al modulo cuentas por cobrar... lo más probable es que la sentencia que muestra las cuentas que estan desplegadas se hallan realizado antes de realizar la venta nueva... por lo cual debieras realizar una nueva seleccion o refrescar la consulta...

no se si me explique bien...

Salu2:p:D

Primero, agradecerte por tu tiempo, y tu ayuda...

Te comento que la consulta se ejecuta a la hora de abrir el nuevo formulario, es decir, despues de realizada la venta, y aún así no se muestra los últimos datos, inslusive hago que al cerrar la venta se liberen todos los datasets que venta utilizó.

Saludos.

lucasarts_18 03-11-2010 20:24:19

Debes confirmar la transacción para que la visualices, lo más probable que tu aplicación la haga al momento de salir de la aplicación, por eso al ingresar por 2 vez ya la puedes ver.

Commit y Rollback. Mira por ahí.

Saludos .-


La franja horaria es GMT +2. Ahora son las 23:07:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi