Utiliando quot;OUquot; em uma substring dentro de uma Trig

28/05/2008

0

Bom dia !!

Td blz galera ? :D

Criei uma trigger no sql server 2005 que atualiza o campo data de uma determinada tabela depois que eu extraio valores de documentos XMLs e os insiro no
banco.

OBS.: a data não é digitada no banco, mas sim extraída do campo FileSystem (varchar) e se encontra no seguinte
formato: CATARINE2007101045020.xml, onde CATARINE é o nome de quem criou o xml e 20071010 é a data.


CREATE TRIGGER TR_DATAPROCESSAMENTO
ON NotaFiscal
AFTER INSERT
AS 

UPDATE NotaFiscal

SET DataProcessamento = (SELECT CAST( substring(Right(FileSystem,18),7,2) + ´/´ +
                                              substring(Right(FileSystem,18),5,2) + ´/´ + 
              substring(Right(FileSystem,18),1,4) AS DATETIME) 
                                   FROM INSERTED ) 
                          WHERE ID_NotaFiscal = ( SELECT ID_NotaFiscal FROM INSERTED )



Até ai, tudo bem, a trigger funciona perfeitamente, mas em determinado momento ela não consegue extrair o
campo data perfeitamente. MOTIVO : as datas(normalmente) vem com o formato yyyymmdd, mas em alguns casos estão yyyymdd.
Como eu faço pra fazer um ´OU´ nas substrings na trigger abaixo :



substring(Right(FileSystem,18),5,2)||substring(Right(FileSystem,18),5,1) + ´/´ +


Porém não funciona !
Alguém tem uma dica ?



Abraços !
:D


Kika3k

Kika3k

Responder

Posts

28/05/2008

Emerson Nascimento

faça a leitura das partes da data em variáveis.

algo assim:

@Data = Left(Rigth(FileSystem,17),9);
@Dia = Right(@Data, 2);
@Ano = Left(@Data, 4);
@Mes = Substring(@Data, 5, 2);

UPDATE NotaFiscal
SET DataProcessamento = (SELECT CAST(@Mes + ´/´ + @Dia + ´/´ + @Ano AS DATETIME) FROM INSERTED
                         WHERE ID_NotaFiscal = ( SELECT ID_NotaFiscal FROM INSERTED )
daí você faz o tratamento nas variáveis até encontrar o valor correto.


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar