Ver Mensaje Individual
  #1  
Antiguo 05-10-2010
radaalvaro radaalvaro is offline
Miembro
 
Registrado: oct 2005
Ubicación: Santa Cruz - Bolivia
Posts: 163
Reputación: 13
radaalvaro Va por buen camino
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.

Última edición por radaalvaro fecha: 05-10-2010 a las 23:38:41. Razón: No se veia bien el codigo con los tags CODE
Responder Con Cita