| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
LIGERO Cmdr


Registrado: 13 May 2004Mensajes: 134Ubicación: Granada
|
Publicado: Lun 30 Ene, 2006 7:02 pm Asunto: Transacciones |
|
|
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 |
|
 |
Buildero Master


Registrado: 23 Dic 2003Mensajes: 523Ubicación: Puebla, México
|
Publicado: Lun 30 Ene, 2006 9:07 pm Asunto: |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mar 31 Ene, 2006 8:11 am Asunto: |
|
|
En algunos casos, despues del metodo de inserccion es recomendable usar
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... _________________
 |
|
| Volver arriba |
|
 |
LIGERO Cmdr


Registrado: 13 May 2004Mensajes: 134Ubicación: Granada
|
Publicado: Mar 31 Ene, 2006 8:45 am Asunto: |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mar 31 Ene, 2006 10:55 am Asunto: |
|
|
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.. _________________
 |
|
| Volver arriba |
|
 |
|