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 Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-08-2005
Avatar de Juanito-Kun
Juanito-Kun Juanito-Kun is offline
Miembro
 
Registrado: abr 2005
Ubicación: Merida, Yucatan
Posts: 65
Poder: 20
Juanito-Kun Va por buen camino
triggers no se activa

Hola que tal.

Bueno tengo un pequeño problemita que he estado batallando con el desdes hace un rato, trabajo con delphi 7 e interbase 6.5

tengo la siguiente tabla

Código:
 CREATE TABLE CUSTOMER 
(
  CUSTNO	INTEGER NOT NULL,
  COMPANY	VARCHAR(30) NOT NULL,
  ADDR1	VARCHAR(30),
  ADDR2	VARCHAR(30),
  CITY	VARCHAR(15),
  STAPE	VARCHAR(20),
  ZIP	VARCHAR(10),
  COUNTRY	VARCHAR(20),
  PHONE	VARCHAR(15) NOT NULL,
  FAX	VARCHAR(15),
  TAXRATE	INTEGER,
  CONTACT	VARCHAR(30),
  LASINVOICEDATE	TIMESTAMP,
 PRIMARY KEY (CUSTNO)
tengo el siguiente trigger:

Código:
 CREATE TRIGGER NEXTNUM FOR CUSTOMER 
ACTIVE BEFORE INSERT POSITION 0
as
begin
new.custno= GEN_ID(nextcust,1);
end
Uso los componentes IBDataSet para hacer los insert, delete....
cuando estoy corriendo la aplicacion e inserto un registro y lo trato de guardar me sale la leyenda de que es necesario poner el valor al campo "CUSTNO"(es not null), como si el trigger no se activara, lo que encuentro raro es que en la IBConsolda de Interbase caundo te vas a "PROPIEDADES" de la tabla - en la pestaña "DATA" en este caso de la tabla "CUSTOMER" en esa parte puedo insertar registros pero cuando lo hago me marca lo mismo, pero....

Cuando utilizo Interactive SQL y hago un insert a mano(insert into...) si me activa el trigger y me pone en el campo "CUSTNO" el numero que le da el generador, que puede estar mal?

gracias de antemano.... y saludos
Responder Con Cita
  #2  
Antiguo 31-08-2005
Avatar de Juanito-Kun
Juanito-Kun Juanito-Kun is offline
Miembro
 
Registrado: abr 2005
Ubicación: Merida, Yucatan
Posts: 65
Poder: 20
Juanito-Kun Va por buen camino
Triggers ya se activa

Hola que tal... perdonen pero al aparecer encontre algo..

necesito darle un valor antes, para que no me marque ese error ..

lo que hice es poner en el evento OnNewRecord del del IBDataSet esto:

Código:

 IBDataSet1CUSTNO.AsInteger:=0;
Le doy por default un valor(0), ahora mi pregunta es: ¿ si es la mejor manera de resolver esto?..

Gracias y Saludos.
Responder Con Cita
  #3  
Antiguo 31-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Código:
AS
begin
    if (NEW.custno IS null) then
      new.custno= GEN_ID(nextcust,1);
end
ya no necesitas asignarlo a mano.

Un saludo
Responder Con Cita
  #4  
Antiguo 31-08-2005
Avatar de Juanito-Kun
Juanito-Kun Juanito-Kun is offline
Miembro
 
Registrado: abr 2005
Ubicación: Merida, Yucatan
Posts: 65
Poder: 20
Juanito-Kun Va por buen camino
Unhappy Triggers No se activan

Hola que tal Lepe, antes que nada gracias por responder...

Hice lo que me dijiste...

Quite el codigo que puse en el evento..

Cambie el Trigger a lo que me dijiste y me sigue pidiendo el valor..


Código:
 CREATE TRIGGER NEXTNUM FOR CUSTOMER 
ACTIVE BEFORE INSERT POSITION 0
as
begin
if (NEW.custno IS null) then
	  new.custno= GEN_ID(nextcust,1);
end

Gracias y saludos...
Responder Con Cita
  #5  
Antiguo 01-09-2005
Avatar de Rufus
Rufus Rufus is offline
Miembro
 
Registrado: may 2004
Ubicación: Canarias
Posts: 193
Poder: 20
Rufus Va por buen camino
Desde los programas hechos con Delphi te va a pedir el valor, lo que tienes que hacer es pasarle un valor null y listo.

Además, hombre, fijate lo que te dijo Lepe que pusieras:
Código SQL [-]
AS
begin
    if (NEW.custno IS null) then
      new.custno= GEN_ID(nextcust,1);
end
, así que está claro, pasale null.
__________________
Milo
Responder Con Cita
  #6  
Antiguo 01-09-2005
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

Si le asignas un valor desde delphi y preguntas si no es nulo estonces este no se asignara.

LA solucion es decirle al campo desde delphi que es no requerido.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #7  
Antiguo 01-09-2005
Avatar de Juanito-Kun
Juanito-Kun Juanito-Kun is offline
Miembro
 
Registrado: abr 2005
Ubicación: Merida, Yucatan
Posts: 65
Poder: 20
Juanito-Kun Va por buen camino
Thumbs up Trigger Si Se Activa

GRACIAS Lepe, Rufus, rastafarey funciono a la perfeccion ...

Soy muy amables ...

Saludos y que esten bien.
Responder Con Cita
  #8  
Antiguo 03-09-2005
ELINK ELINK is offline
Miembro
 
Registrado: mar 2005
Posts: 55
Poder: 20
ELINK Va por buen camino
Tambien lo Puedes poner dentro del insert , de esta manera:

"insert into session(id, site) values(gen_id(sessionid,1),"SiteId")"

Espero q esto tambien te ayude
Responder Con Cita
  #9  
Antiguo 12-09-2005
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

Lo del Gen_id es buena opcion por que al parecer los generadore parecen infinitos (int64 o bigint) pero para que incrementar el generador y si sucede algun error y tambien para que enviar mas datos por la red.

Pero cada quien puede tomar la desicon que le parezca mas conveniente.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
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


La franja horaria es GMT +2. Ahora son las 13:12:26.


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