Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-12-2003
cwelx cwelx is offline
Registrado
 
Registrado: nov 2003
Posts: 2
Poder: 0
cwelx Va por buen camino
unknow cursor (DBexpress)

Aqui tengo parte del codigo que uso cuando creo un nuevo registro, donde necesito obtener un código cuando se inserta uno nuevo y después grabarlo dicho registro antes de seguir actualizando. Utilizo DBExpress de la siguiente forma:

DBConnection --> SQLQuery --> TDatasetProvider --> ClientDataset

Despues del ApplyUpdates (en el codigo de abajo) me voy a cualquier campo del formulario e intento modificar algo, pero en ese momento se genera una execepcion, "unknow cursor".

En las funciones ObtenUltimoNumero y ActualizaNumeracion, necesito actualizar el contador de asuntos (mediantes consultas sql update), y debo hacerlo dentro de una transacción por si falla la inserción del nuevo registro, poder asi luego hacer un rollback.

- Es correcta la utilización de la transacción?
- despues de hacer un applyupdates, se puede seguir modificando los datos del formulario?
- Tengo que volver a pasarle los parametros al clientDataset??

Código:
procedure TAsuntosCDS.AsuntoNewRecord(DataSet: TDataSet);
  var TD: TTransactionDesc;
begin
  TD.TransactionID := 1;
  TD.IsolationLevel := xilREADCOMMITTED;
  AsuntosCDS.Asunto.FieldByName('CODASU').Asinteger:=   ObtenUltimoNumero;

  try
      if not Data_principal.SQLConnection1.InTransaction then
         Data_principal.SQLConnection1.StartTransaction(TD);

      ActualizaNumeracion(AsuntosCDS.Asunto.FieldByName('CODASU').AsInteger);

      if AsuntosCDS.Asunto.ApplyUpdates(0) = 0 then
         Data_principal.SQLConnection1.Commit(TD)
      else
         Data_principal.SQLConnection1.Rollback(TD);

  except

      AsuntosCDS.Asunto.CancelUpdates;
      Data_principal.SQLConnection1.Rollback(TD);
      raise;
      exit;
  end;

end;

Última edición por cwelx fecha: 11-12-2003 a las 01:40:43.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 09:48:53.


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
Copyright 1996-2007 Club Delphi