Pessoal, bons dias!

Estou com um probleminha aqui me "apurrinhando"!

Criei uma Trigger para validar a entrada de dados em uma tabela, mas
quando ativo esta Stored Procedure, o delphi emite o seguinte erro:

---------------------------
Debugger Exception Notification
---------------------------
Project GerenteItensDeEstoque.exe raised exception class EOleException
with message 'A linha não pode ser localizada para atualização. Alguns
valores podem ter sido alterados desde que ela foi lida pela última
vez'. Process stopped. Use Step or Run to continue.
---------------------------
OK   Help
---------------------------

Quando verifico a Tabela ela está integra, os dados foram todos armazenado!

Depois de depurar a aplicação percebi que o o post é feito
corretamente, e o problema ocorre quando vou acessar a tabela para
leitura. Já tentei fechar e abrir a tabela, mas achei isto muito
despendioso e não resouveu o problema pois como perco o registro
dentro do delphi não consigo achar a chave primaria!

abaixo segue a Trigger:
CREATE TRIGGER [ValidateItemDeEstoque] ON [siga][dbo].[ItemDeEstoque]
FOR INSERT, UPDATE
AS
BEGIN
        DECLARE @v_Codigo VARCHAR(13)
        -- PROCURA CODIGO EAN REPETIDO APOS A INSERÇÃO,
        -- IGNORANDO OS NULLOS E BRANCOS
        SELECT @v_Codigo = item.CodigoEAN
                FROM ItemDeEstoque AS Item
                INNER JOIN  INSERTED
                        ON Item.CodigoEAN = inserted.CodigoEAN
                        WHERE item.CodigoEAN IS NOT NULL
                                AND item.CodigoEAN <> ''
        -- SE OUVER MAIS DE UMA LINHA COM O MESMO CODIGO ELE CANCELA A INSERÇÃO.
        IF (@@ROWCOUNT >1)
        BEGIN
                RAISERROR('Codigo de EAN: %s  já cadastrado!', 11, 1, @v_Codigo)
                ROLLBACK TRANSACTION
        END
        -- CASO NÃO EXISTA, ELE VÁLIDA O CODIGO
        ELSE
        BEGIN
                -- SE O CODIGO EAN FOR BRANCO ELE DEFINE COMO NULO.
                UPDATE ItemDeEstoque
                        SET CodigoEAN = CASE REPLACE(CodigoEAN, ' ', '')
                                                        WHEN '' THEN NULL
                                                        ELSE CodigoEAN
                                                END
                        WHERE CodigoEAN IN (SELECT CodigoEAN FROM inserted)
        END
END




--
Carlos Delfino
Consultoria e Pesquisa
Desenvolvimento de Softwares.
Sun Certified Associate for Java Platform


-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a