Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-09-2005
pepitu pepitu is offline
Miembro
 
Registrado: Sep 2005
Posts: 25
Poder: 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
  #2  
Antiguo 25-09-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Registrado
 
Registrado: Apr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 18
vtdeleon Va por buen camino
Saludos

Cita:
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...."
InsertSql no es un método, en sí no hace ninguna acción. Al utilizar Insertsql habilitas el dataset a usar el método Insert o Append. Si usas DeleteSql habilitas el método Delete,... y asi sucesivamente.

Cita:
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?
Sí, un campo calculado.

Cita:
E.-Necesitaría más manuales en castellano sobre Firebird, aparte de los disponibles en http://www.firebird.com.mx/modules/mydownloads/
. Existen??
Uufff, por montones, haz una búsqueda por aquí, y en google;P
Suerte
Responder Con Cita
  #3  
Antiguo 26-09-2005
pepitu pepitu is offline
Miembro
 
Registrado: Sep 2005
Posts: 25
Poder: 0
pepitu Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 26-09-2005
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: Nov 2003
Posts: 923
Poder: 15
rastafarey Va por buen camino
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.
__________________
Todos los dias sale un pendejo a la calle y el que se lo encuentra es del.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 10:35:02.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi