Trigger, generador y SP relacionarlo con Delphi
Ante todo gracias por la atencion prestada.
Bueno les cuento que recien estoy empezando con esto de Firebird, es decir los triggers, SP y generadores y soy novato en esto y tengo algunos problemas
Tengo la siguiente tabla:
CREATE TABLE CLIENTE (
CODI_CLI VARCHAR(10) NOT NULL,
NOMB_CLI VARCHAR(30),
ALTA_CLI DATE,
OBSE_CLI BLOB SUB_TYPE 2 SEGMENT SIZE 8192,
PAGO_CLI FLOAT
);
asi como este Procedimiento almacenado
CREATE PROCEDURE INSERTAR_CLIENTE (
COD VARCHAR(10),
NOM VARCHAR(30),
ALT DATE,
OBS BLOB SUB_TYPE 1 SEGMENT SIZE 80,
PAG FLOAT)
AS
begin
INSERT INTO Cliente (CODI_CLI, NOMB_CLI, ALTA_CLI,PAGO_CLI, OBSE_CLI)
values (:COD, :NOM, :ALT, :PAG, :OBS);
end
y en Delphi hago lo siguiente:
with IBStoredProc1 do
begin
Params[0].AsString := txt_codigo.Text;
Params[1].AsString := txt_nombre.Text;
Params[2].AsDate := StrToDate(txt_fecha.Text);
Params[3].AsMemo := txt_observaciones.Text;
Params[4].AsFloat :=StrToFloat(txt_pago.Text);
ExecProc;
end;
Lo que hago con esto es registrar a un cliente y me lo hace correctamente hasta aca no tengo problemas todo OK.
Pero ahora quiero que el CODI_CLI SE EJECUTE AUTOMATICAMENTE, para eso
en firebird e creado un generador y un trigger.
Es decir.
CREATE GENERATOR CODI_GENER;
SET GENERATOR CODI_GENER TO 0;
CREATE TRIGGER INSERTAR_CODI FOR CLIENTE
ACTIVE BEFORE INSERT POSITION 0
AS
begin
if (new.codi_cli is null) then
new.codi_cli=gen_id(codi_gener,1);
end
Ahora mis preguntas son las siguientes:
1.- Quiero que objeto txt_codigo se edite el CODI_CLI de la siguiente manera :
CLI0010001,
CLI0010002,
CLI0010003,
CLI0010004.......
Para esto me parece que tengo que tener 2 partes CLI + NUMERO, es decir la la palabra CLI fija y NUMERO autoincremental (quiero que sea apartir de 1000). Como lo podria hacer esto.
2. Como se haria para relacionar el procedimiento almacenado y el trigger con delphi para que pueda registrar al cliente.
Viendo por alli informacion tengo que eliminar la linea siguiente
Params[0].AsString := txt_codigo.Text;
ya que el trigger me lo haria automaticamente.
3. Como puedo poner el codigo en delphi para llamar al trigger.
Gracias y Saludos a todos
|