FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
NoSoloDelphi
Justo hoy he escuchado el último podcast de NosoloDelphi(y van 17!!) y han hablado de Firedac y de la opción del returning de la cual te he comentado más arriba...
Saludos a todos.. |
#2
|
||||
|
||||
No es eso lo que pretendo
Léete mi propuesta porque no le veo relación con lo que me aportas. Te lo agradezco pero no veo la conexión entre las dos propuestas.
Saludos, bulc |
#3
|
||||
|
||||
El Generador Gen_id es cosa pasada
Acabo de enterarme que en la versión Firebird 3.0 y siguientes no es necesario usar el Generador Gen_id ni el Trigger correspondiente.
Basta diseñar la tabla con esta nueva asignación que facilita la creación de un campo incrementado. Código:
CREATE TABLE PRUEBA( ID INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, TEXTO VARCHAR(20) NOT NULL, CODIGO CHAR(2), INFO BLOB SUB_TYPE TEXT ); COMMIT; Código:
INSERT INTO PRUEBA (TEXTO, CODIGO, INFO) VALUES ( 'NO MORE GEN_ID', '10', 'GEN_ID HAS GONE TO OBLIVION'); Gracias. bulc |
#4
|
||||
|
||||
Así es, pero ¿así sí te funciona?
|
#5
|
||||
|
||||
Pues, claro. Y a toda pastilla
Además he resuelto el problema que tenía en el sentido de que los nuevos insertos ostentaban un Cero (en el TDBGrid), cuando usaba ese número para no dejar vacío el Campo que era Not Null. Uso cero porque no es Nulo y porque no hay ningún registro que sea número cero.
Para eso se necesita que el Trigger tenga: If ( (new.id = 0 ) or (new.id is null) ) then new.id = select gen_id (gen_xxx, 1) from rdb$database; Ahora la segunda condición sobra, realmente. Por otro lado para que el cero no aparezca en el TDBGrid he usado: FDM1.FDQuery1.RefreshRecord(True); Y parece que funciona. Hay una ganancia con eso de usar Firebird 3.0, para no tener que usar el Generador de anteriores versiones. Por otro lado a mi me iba bien con él. Después de la matada de pasar todos los Firebird 2.5 al 3.0 y con FireDAC... ya me vale. "Happiness do not last in homes in need." Saludos, bulc |
#6
|
||||
|
||||
Así es, por desgracia
Me alegro de que por fin lo hayas echado a andar |
#7
|
||||
|
||||
Hay una inconsistencia el el Generated by Default
Al igual que pasaba con el Gen_ID y el Trigger de versiones anteriores, en el Firebird 3.0 hay que 'torear' el hecho de que no se exige un vacío como activador del Generador. Y luego, al ser un ser un campo not null no se puede dejar vacío. Se puede usar 0 (cero), pero entonces el primer cero es válido por no estar repetido. Los tres primeros registros ID serían algo así como : 1, 2, 0...
Resumiendo, quería saber si existe alguna forma de saltarse la entrada de datos en el campo Clave Primaria autoincrementado, para que Delphi no dé error de entrada. Podría ser hacer el Insert mediante sentencias SQL y dejar ese campo vacío... ¿? Generated by default exige un campo vacío para activar el contador, pero si se deja vacío salta un error de Delphi ya que es un campo Not Null. Esa era la contradicción. ¿Alguien sabe como soslayarla? Saludos, bulc |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Generador de cubos en firebird | erickperez6 | Firebird e Interbase | 1 | 18-09-2014 17:36:40 |
Actualizar un valor en un generador desde un Sp | muli | Firebird e Interbase | 16 | 11-06-2008 14:56:05 |
Blanquear un generador autonumerico firebird | Velia | Firebird e Interbase | 4 | 21-08-2007 13:58:03 |
Error al actualizar tabla con generador | lafirma | Firebird e Interbase | 2 | 07-04-2004 00:55:21 |
que generador de informes es mas facil de usar con firebird/interbase? | raugadel | Impresión | 9 | 25-02-2004 02:40:48 |
|