Ajuda em Trigger
Olá a todos da lista mais uma vez venho pedir a ajuda de vocês!
eu tenho uma triger que pega o valor de um generator e concatena com os 2 ultimos digitos do ano corrente, gravando por exemplo 14/07 em um campo varchar
o cogido da tigger:
Mas eu gostaria de testar o valor do generator e se o valor for => que 4 casas decimais concatenar o numero de zeros(0)antes do generator produzindo assim um valor semelhante a esse: 0014/07
e gravar isso no campo!!
Alguem pode me ajudar?
eu tenho uma triger que pega o valor de um generator e concatena com os 2 ultimos digitos do ano corrente, gravando por exemplo 14/07 em um campo varchar
o cogido da tigger:
CREATE TRIGGER OS_TES_BI FOR OS ACTIVE BEFORE INSERT OR UPDATE POSITION 1 AS begin /* Trigger text */ IF (NEW.teste IS NULL) THEN NEW.teste = GEN_ID(gen_os_tes,1)||´/´||substring ((extract (year from current_date))from 3 for 4) ; end ^ SET TERM ; ^
Mas eu gostaria de testar o valor do generator e se o valor for => que 4 casas decimais concatenar o numero de zeros(0)antes do generator produzindo assim um valor semelhante a esse: 0014/07
e gravar isso no campo!!
Alguem pode me ajudar?
Logam
Curtidas 0
Respostas
Delphi32
03/12/2007
Bem, primeiro você teria colocar o valor do generator em uma variável convertendo para string. Depois o trabalho seria obter o número de caracteres dessa string, não? Para isso você tem duas opções:
1) Utilizar uma UDF para contar caracteres. Se não me engano, dentro das dll´s de udf que vem com o firebird já existe uma função dessa.
2) Usar uma stored procedure que eu fiz para contar o número de caracteres. Segue o código:
Qualquer dúvida, poste aqui!
t+!
1) Utilizar uma UDF para contar caracteres. Se não me engano, dentro das dll´s de udf que vem com o firebird já existe uma função dessa.
2) Usar uma stored procedure que eu fiz para contar o número de caracteres. Segue o código:
SET TERM ^; CREATE PROCEDURE "SP_CONTACARACTERES" ( INPUT_TEXT VARCHAR(255) CHARACTER SET WIN1252 ) RETURNS ( NUMERO_CARACTERES INTEGER ) AS DECLARE VARRIABLE TMP VARCHAR(255); BEGIN TMP = INPUT_TEXT; NUMERO_CARACTERES = 0; WHILE (TMP<>´´) DO BEGIN TMP = SUBSTRING(TMP FROM 2 FOR 255); RESULTADO = RESULTADO + 1; END SUSPEND; END ^ SET TERM ;^
Qualquer dúvida, poste aqui!
t+!
GOSTEI 0
Logam
03/12/2007
Olá delphi32!!
É essa a ideia que eu quero!!
vc falou que da pra fazer usando uma função que tem em uma udf?
sim eu achei a função strlen na udf do Firebird mas não consegui fazer oque quero usando ela!
vc poderia me ajudar??
é que sou iniciante em programação !!
É essa a ideia que eu quero!!
vc falou que da pra fazer usando uma função que tem em uma udf?
sim eu achei a função strlen na udf do Firebird mas não consegui fazer oque quero usando ela!
vc poderia me ajudar??
é que sou iniciante em programação !!
GOSTEI 0