Fórum Ajuda com campo auto inc #59123

14/11/2007

0

Olá eu sou novo em programação e no FB!!
Eu tenho uma tabela OS nela têm campos de identificação do equipamento, proprietário e defeito!
O problema é tenho um campo auti inc com o nome ID_OS tipo integer
A medida que vou cadastrando novas OS funciona legal mas o campo é preenchido com 1,2,3,4,5...
Eu gostaria que fosse preenchido assim 01/07,02/07,03/07...
O numero da OS: 01 mais os dois últimos dígitos do ano corrente 07
Alguém pode me ajudar??
Estou usando FB1.5 e Delphi 7
Estou migrando minha base para FB 2.0
Obrigado


Logam

Logam

Responder

Posts

14/11/2007

Pestana_

para fazer o que você quer o campo [b:a1466c7437]ID_OS[/b:a1466c7437] tem que ser do tipo string porque alem do código você precisa
concatenar o traço mais o ano [ 01/07 ]. é isso que você quer ?



Pestana.


Responder

Gostei + 0

16/11/2007

Logam

Sim!! mas como eu faço pra extrair o ano abrevido??
Ontem eu ja converti o campo ID_OS para varchar mas ainda não consegui extrair o ano e formar [01/07]!!
eu não sei qual código usar pra fazer isso!!


Responder

Gostei + 0

16/11/2007

Pestana_

verifique se assim resolve:
codigo + ´/´ + FormatDateTime(´yy´, date));



flw.


Responder

Gostei + 0

16/11/2007

Pestana_

você tambem pode utilizar o [b:f9205494dc]YearOf()[/b:f9205494dc], mas não se esqueça de incluir na clausula uses [color=green:f9205494dc]DateUtils[/color:f9205494dc].


Responder

Gostei + 0

16/11/2007

Logam

Mas eu quero fazer isso direto no banco não via delphi!!


Responder

Gostei + 0

17/11/2007

Logam

Assim funciona saída resultado 1/2007
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)||´/´|| extract (year from current_date);
end
^
SET TERM ; ^


Tentei assim e da o erro da imagem
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)||´/´||cast (extract (year from current_date)as varchar(2));
end
^
SET TERM ; ^

[img:52d8fcffde]http://i45.photobucket.com/albums/f57/logam/imagem.jpg[/img:52d8fcffde]


Responder

Gostei + 0

17/11/2007

Pestana_

eu tambem não estou conseguindo, não sei se existe alguma função no banco que copia ou remove um pedaço de uma string.


flw.


Responder

Gostei + 0

20/11/2007

Logam

Eu consegui fazer oque queria!!
Eu fiz assim:

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 ; ^



Responder

Gostei + 0

20/11/2007

Pestana_

que bom que você consegiu, pelo jeito você utilizou UDF para pegar pedaço de uma string.


flw.


Responder

Gostei + 0

20/11/2007

Logam

Não eu não usei udf!!
vi no site onde descobri isso que essa função substring é nativa do firebird mesmo!!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar