FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
Saludos
Cita:
Cita:
Cita:
Suerte
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#3
|
|||
|
|||
Gracias...iremos probando....
Vtdeleon...gracias por la respuesta. Me has aclarado mucho con lo de que InsertSQL, etc....no son métodos directamente. Me solucionastes ese apartado
Con lo de los manuales ya realicé búsquedas (quizás malas) y realmente encontré algunos pero no se explayan demasiado. Quizás una mejor solución para los que recién empezamos sería disponer de algun pequeño ejemplo con el que poder ver 'in situ' el funcionamiento de los Insert, campos calculados, etc.... Voy a buscar... Mil gracias por tus orientaciones. Un saludo. |
#4
|
||||
|
||||
Resp
Mira no veo el motivo para que llamr directamente a inser o apen o delete o x por que simplememte no miras la paleta standard y usas el componete taction y a lo botones los relacionas con una accion y listo y te evitas tanto rollo y codigo.
Recuerden que lo que esta echo no s evuelve hacer ok.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa. |
|
|
|