Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Transacciones

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Transacciones Responder citando

Tengo el siguiente codigo:

Código:

void __fastcall TForm1::AplicaConsulta(int consulta, TIBTransaction *Transaccion, TIBQuery *IBQuery, TParams *Parametros, AnsiString Filtro)
{
   try {
      // Abre la transaccion si no está abierta
      if (!Transaccion->InTransaction)
         Transaccion->StartTransaction();
      IBQuery->Close();
      // Carga la consulta indicada
      IBQuery->SQL->Clear();
      IBQuery->SQL->Add(ConsultaSQL(consulta));
      // Asigna los parámetros
      IBQuery->ParamByName("Codigo")->AsInteger= NumeroLlamada++;
      IBQuery->ParamByName("CodRemite")->AsInteger= 1;
      IBQuery->ParamByName("CodDestino")->AsInteger=21;
      IBQuery->ParamByName("EnvioPor")->AsInteger = 1;
      IBQuery->ParamByName("Asunto")->AsBlob = "Prueba de parametros";

      // Establece el filtro adicional
      IBQuery->Filter = Filtro;

      IBQuery->ExecSQL(); //Active=true;
      // Confirma la transaccion
      Transaccion->CommitRetaining();


   } catch (...)
   {
        Transaccion->Rollback();
   }
}


Tengo un Form de entrada de datos, al cual para hacer pruebas le he incluido un DBGrid cuyo DataSource es el de la tabla en la que se inserta el registro.

Con un boton inserto el registro, pero no me actualiza el DBGrid.


¿Tengo que actualizarlo explícitamente o es que no utilizo bien las Transacciones?


Muchas gracias al que ayude y al que mire, tambien, porque de esta forma podremos transmitir la sabiduría.
_________________
La pintura es la expresión de la mente.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Si la transacción que estas recibiendo como parámetro es la misma que la que está asociada al la tabla, en teoría lo deberías de ver.

Saludos
_________________
Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

En algunos casos, despues del metodo de inserccion es recomendable usar
Código:
ApplyUpdates();

la transaccion indica que existe dentro del buffer de la base de datos una operacion que realizar, ApplyUpdates, indica que confirme la transaccion y haga efectivos los campos

y para que solo te funcionen las transacciones como tu quieres, checa si en la propiedad AllowAutoStart = true del TIBTransaction, si no te aparece la propiedad es recomendable que actualices tus IBX, a la nueva version... (de paso, si la quieres, indicame en algun correo que soporte 10 megas como minimo de envio, puede ser yahoo o alguno de tu empresa)


saludos...
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

La transacción está asociada al DBGrid de la siguiente forma:

DBGrid
DataSource = DSLlam -----> TDataSource

DSLlam
DataSet = IBTLlam -----> TIBTable

TIBTable
Transaction = IBTrans -----> TIBTransaction

De forma que creo que está bien.
Ya que la unión entre el DBGrid y la transacción quedaría

DBGrid----->DSLlam----->IBTLlam----->IBTrans
_________________
La pintura es la expresión de la mente.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Dentro del Boton de tu form donde guardas el registro debes poner tambien, lo siguiente si fuera un IBTable o un IBQuery
en las dos lo trae, has lo siguiente, si fuera un IBQuery

Código:
this->IBQuery1->Post();
this->IBQuery1->ApplyUpdates();


despues que grabes, automaticamente debe aparecerte el registro a menos que no este bien echa la consulta del Query del Dbgrid..

saludos..
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.