Ver Mensaje Individual
  #1  
Antiguo 25-09-2005
pepitu pepitu is offline
Miembro
 
Registrado: sep 2005
Posts: 25
Reputación: 0
pepitu Va por buen camino
Error al insertar o borrar registros en firebird

Hola a todos.
Hace muy poco que estoy tanto en Delphi como en Firebird y no encuentro la causa de que no se inserten o borren registros en una tabla firebird.
Intentaré explicarme al máximo. Cualquier otro dato que requieran sólo tienen que pedírmelo.

Hice la base de datos con IBExpert con una clave principal llamada ID que tiene un Generador (autoincrementa) y un Trigger que lo dispara. Debido a ésto, quito este campo de la sentencia SQL del DataSet, es decir,en la propiedad InsertSQL del IBDataSet pongo sólo los demás campos:
INSERT INTO FACTUCOMP
(TITULAR, NUMFAC, FECHA, PROVEEDOR, TOTAL)
VALUES(:TITULAR, :NUMFAC, :FECHA, :PROVEEDOR, :TOTAL)

En la propiedad DeleteSQL del IBDataSet pongo:
DELETE FROM FACTUCOMP
WHERE ID=:OLD_ID

Consideraciones iniciales:
-Tengo un IBDataBase, un IBTransaction, un IBDataSet y un DataSource (sólo para un grid). Todo en un DataModule. Todos "activos" y parece que bien conectados.
-La propiedad ForcedRefresh del IBDataSet está en True


En la aplicación, la configuración que he usado es la siguiente:
1.- En los eventos AfterPost y AfterDelete del IBDataSet coloqué un CommitRetaining.

2.-En el botón de "Añadir registro" pongo:
DM_FC.IBDataSetFC.Edit;
DM_FC.IBDataSetFC.InsertSQL;

3.-En el botón de "Borrar registro" pongo:
DM_FC.IBDataSetFC.Edit;
DM_FC.IBDataSetFC.DeleteSQL;

4.-Pongo un botón para grabar los resultados con:
DM_FC.IBDataSetFC.post;

5.-Por si acaso, pongo otro botón para cancelar la inserción de un registro (si fuese el caso) con:
DM_FC.IBDataSetFC.Open;
DM_FC.IBTransactionFC.RollbackRetaining;

PROBLEMAS
A.-Al hacer clic en botón "Añadir registro"....no observo que se añada ningún registro nuevo.
Desde el IBExpert puedo añadir sin problemas.
B.-Al hacer clic en botón "Borrar registro"...no se borra ningun registro y sale un mensaje del tipo : "Access violation...."
C.-Me pregunto si uso bien ese RollbackRetaining del punto 5.
D.-Quiero que cuando se muestre un registro...se realicen una serie de cálculos (de sus campos) cuyos resultados se muestren en unos DBEdits. Para ello, supongo que tengo que añadir New Fields al IBDataSet (que se conectarán mediante el DataSource a los distintos DBEdits)y poner las "fórmulas" en el evento OnCalcFields..... No???
Puedo hacerlo de otra forma?
E.-Necesitaría más manuales en castellano sobre Firebird, aparte de los disponibles en http://www.firebird.com.mx/modules/mydownloads/
. Existen??

Agradezco opiniones de todo tipo.
Un saludo.
Responder Con Cita