Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-12-2010
JAI_ME JAI_ME is offline
Miembro
 
Registrado: ene 2006
Posts: 188
Poder: 19
JAI_ME Va por buen camino
Duda de Autoincrement firebird

buenas tardes tengo, un Generador en firebird y un campo integer en una tabla con su propiedad autoincrement habilitada y configurada con dicho generador.

El problema es que no se como hacer para que el usuario al momento de guardar un registro desde una interfaz en delphi me incremente automaticamente este campo; La informacion suministrada por el usuario la guardo, edito y elimino con un TDBnavigator los registros los muestro en componentes TDBEdit.

muchas gracias.
__________________
JaiMelendez
Responder Con Cita
  #2  
Antiguo 16-12-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
El usuario no debe incrementar nada, debe hacerlo la base de datos automáticamente en un trigger o store procedure, o lo ejecutas tú mismo desde el programa delphi.
Responder Con Cita
  #3  
Antiguo 16-12-2010
Avatar de Cañones
Cañones Cañones is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Paz Entre Ríos
Posts: 354
Poder: 18
Cañones Va por buen camino
que componente estás usando para hacer el insert?
Responder Con Cita
  #4  
Antiguo 16-12-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Cañones Ver Mensaje
que componente estás usando para hacer el insert?
Creo que no te entiendo

Échale un vistazo a la sección de "Generadores" del libro de Marteens, La cara oculta de delphi.
Lo encontrarás en el ftp del clubdelphi o aquí.
Responder Con Cita
  #5  
Antiguo 16-12-2010
Avatar de Cañones
Cañones Cañones is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Paz Entre Ríos
Posts: 354
Poder: 18
Cañones Va por buen camino
Si usa ZeosLib, DBX, DBExpress...
Responder Con Cita
  #6  
Antiguo 16-12-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
FIBplus.
Pero eso no tiene nada que ver con los generadores.
Responder Con Cita
  #7  
Antiguo 16-12-2010
Avatar de Cañones
Cañones Cañones is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Paz Entre Ríos
Posts: 354
Poder: 18
Cañones Va por buen camino
Si usa IBX, tiene la propiedad GeneratorField donde define el generador y el campo que recibe el valor.
Si usa ZeosLib tiene el componente TZSequence que se enlaza con el generador y el componente que hace el insert. Entonces si usa un TZQuery en la propiedad Sequence se pone el TZSequence y en SequenceField el campo que recibe el valor.
Es menos trabajo y más prolijo que escribir un Trigger o SP.

Saludos.
Responder Con Cita
  #8  
Antiguo 16-12-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Sí, FIBplus también tiene algo similar, aunque no recuerdo haberlo usado, prefiero dejar a la BD que se encargue de hacerlo mediante un trigger.
Responder Con Cita
  #9  
Antiguo 16-12-2010
Avatar de Combat-F2D
Combat-F2D Combat-F2D is offline
Miembro
 
Registrado: may 2003
Ubicación: Toletum
Posts: 454
Poder: 21
Combat-F2D Va por buen camino
la ventaja de los generadores, y en especial que los emplee la BD por si sola, es que no te vas a encontrar con duplicados, a no ser que SI le metas mano externamente al motor de esta; yo personalmente no lo haria, pues ya me he encontrado con mas de una violation por esto
__________________
online
Responder Con Cita
  #10  
Antiguo 16-12-2010
JAI_ME JAI_ME is offline
Miembro
 
Registrado: ene 2006
Posts: 188
Poder: 19
JAI_ME Va por buen camino
Cita:
Empezado por Cañones Ver Mensaje
Si usa IBX, tiene la propiedad GeneratorField donde define el generador y el campo que recibe el valor.
Si usa ZeosLib tiene el componente TZSequence que se enlaza con el generador y el componente que hace el insert. Entonces si usa un TZQuery en la propiedad Sequence se pone el TZSequence y en SequenceField el campo que recibe el valor.
Es menos trabajo y más prolijo que escribir un Trigger o SP.

Saludos.
buenos dias, utilizo los componentes IB y como les comente tengo un TDBnavigator configurado a una tabla llamada producto (IBTABLE) pero no logro incrementar automaticamente el valor del registro, en que parte aparece la propiedad GeneratorField no la he podido encontrar.

El insert lo hace el dbnavigator.
muchas gracias
__________________
JaiMelendez
Responder Con Cita
  #11  
Antiguo 16-12-2010
Avatar de Cañones
Cañones Cañones is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Paz Entre Ríos
Posts: 354
Poder: 18
Cañones Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Sí, FIBplus también tiene algo similar, aunque no recuerdo haberlo usado, prefiero dejar a la BD que se encargue de hacerlo mediante un trigger.
No los conozco, igual cada uno lo hace a su manera.
La ventaja de usar los componentes y por la cual deje de usar los trigger es que con el componente puedo saber cual es el valor generado antes de hacer el insert.
Responder Con Cita
  #12  
Antiguo 16-12-2010
Avatar de Cañones
Cañones Cañones is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Paz Entre Ríos
Posts: 354
Poder: 18
Cañones Va por buen camino
Hola, justo el TIBTable no tiene esa propiedad, tendrías que usar un trigger. Ahora no tengo uno como para pasarte de ejemplo. Pero cuando llegue a mi casa te subo un ejemplo. En dos horas mas o menos.
Saludos.
Responder Con Cita
  #13  
Antiguo 17-12-2010
Avatar de Cañones
Cañones Cañones is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Paz Entre Ríos
Posts: 354
Poder: 18
Cañones Va por buen camino
Acá va un ejemplo de trigger

Código SQL [-]
SET TERM ^ ;
CREATE TRIGGER TG_NRO_ARTICULO FOR ARTICULOS ACTIVE
BEFORE INSERT POSITION 0
AS 
BEGIN 
  IF (NEW.CODIGO IS NULL) THEN
    NEW.CODIGO = GEN_ID (NRO_ARTICULO,1);
END^
SET TERM ; ^

Lo que hace es, si codigo es nulo, genera un valor, con el genereador NRO_ARTICULO, y se lo asigna a CODIGO.
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
AutoIncrement Firebird Ubed Conexión con bases de datos 7 21-05-2014 17:21:41
Una duda en Firebird Mauro Daniel Firebird e Interbase 3 20-06-2008 09:02:06
Duda en sentencia de firebird vivamotos Firebird e Interbase 6 10-09-2007 11:17:18
AutoIncrement de Firebird alucardo Firebird e Interbase 2 15-06-2006 19:03:20
Duda acerca de Firebird joanajj Conexión con bases de datos 2 13-05-2006 05:03:18


La franja horaria es GMT +2. Ahora son las 20:28:48.


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