Ajuda com campo auto inc
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
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
Curtidas 0
Respostas
Pestana_
14/11/2007
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.
concatenar o traço mais o ano [ 01/07 ]. é isso que você quer ?
Pestana.
GOSTEI 0
Logam
14/11/2007
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!!
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!!
GOSTEI 0
Pestana_
14/11/2007
verifique se assim resolve:
flw.
codigo + ´/´ + FormatDateTime(´yy´, date));
flw.
GOSTEI 0
Pestana_
14/11/2007
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].
GOSTEI 0
Logam
14/11/2007
Mas eu quero fazer isso direto no banco não via delphi!!
GOSTEI 0
Logam
14/11/2007
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 ; ^
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 ; ^
GOSTEI 0
Pestana_
14/11/2007
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.
flw.
GOSTEI 0
Logam
14/11/2007
Eu consegui fazer oque queria!!
Eu fiz assim:
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 ; ^
GOSTEI 0
Pestana_
14/11/2007
que bom que você consegiu, pelo jeito você utilizou UDF para pegar pedaço de uma string.
flw.
flw.
GOSTEI 0
Logam
14/11/2007
Não eu não usei udf!!
vi no site onde descobri isso que essa função substring é nativa do firebird mesmo!!
vi no site onde descobri isso que essa função substring é nativa do firebird mesmo!!
GOSTEI 0