Ver Mensaje Individual
  #2  
Antiguo 11-12-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Reputación: 26
guillotmarc Va por buen camino
Hola

Cita:
- Es correcta la utilización de la transacción?
¿ Que servidor utilizas ?. En principio casi todos los servidores acceptan varias transacciones simultaneas, por lo que yo quitaría la comprobación :

Código:
if not Data_principal.SQLConnection1.InTransaction then
De forma que aunque haya una transacción en curso, iniciamos una nueva transacción para controlar esta actualización. (Sinó, al hacer un Commit estamos finalizando la transacción en curso, que si estaba aún activa es porqué estaba controlando una actualización que aún no ha finalizado, lo que probablemente provoque un error).

Cita:
- despues de hacer un applyupdates, se puede seguir modificando los datos del formulario?
Si.

Cita:
- Tengo que volver a pasarle los parametros al clientDataset??
No hace falta.

¿ Porque utilizas AsuntosCDS.Asunto.FieldByName('CODASU').Asinteger ? ¿ No seria mejor simplemente Dataset.FieldByName('CODASU').AsInteger ?

Nunca he usado el evento NewRecord, para estas cosas siempre he usado el AfterInsert. No sé si el problema estará aqui, pero puedes probarlo.

Si las acciones de ObtenUltimoNumero y ActualizaNumeracion, las realizas en el Servidor (mediante un procedimiento almacenado), te ahorrarás mucho trabajo en la aplicación. En la aplicación solo tendrias algo como :

procedure TAsuntosCDS.AsuntoAfterInsert(DataSet: TDataSet);
begin
spObtenUltimoNumero.ExecProc;
Dataset.FieldByName('CODASU').Asinteger:= spObtenUltimoNumero.ParamByName('NUMERO').AsInteger;
end;

Como ves, tienes que definir un procedmiento almacenado spObtenUltimoNumero, que cuando lo ejecutas devuelve el ultimo numero como parámetro, y actualiza la numeración.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita