Depois de ler boa parte do manual do SQL Server acabei descobrinod o
problema!

Infelizmente esta entre a cadeira e o teclado e SQL Server!

Quando faço um select em qualquer tabela, inclusive a que está sendo
alterada, é perdido o cursor para aquele registro que o delphi está
trabalhando!

 A solução para o problema é colocar o codigo do select e do update dentro
de uma stored procedure!

Assim ele cria um novo cursor para o contexto da Stored Procedure! não
interferindo no cursor da Trigger!


Em 23/02/06, Filipe <[EMAIL PROTECTED]> escreveu:
>
> vá em "Tools / debugger options / Language Exceptions"  e desmarque a
> caixa "Stop on Delphi exceptions".
>
> Não sei o que pode estar causando o erro, mas desta maneira talvez
> resolva, não mostrando a mensagem de erro.
>
>
>
> []'s
>
> Filipe Geyer
>
>
>   ----- Original Message -----
>   From: Carlos Delfino Carvalho Pinheiro
>   To: delphi-br@yahoogrupos.com.br
>   Sent: Thursday, February 23, 2006 8:48 AM
>   Subject: [delphi-br] TRIGGER faz com que Delphi emita Erro, porque?
>
>
>   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 >>>>>
>
>
>
>
>
>         Yahoo! Grupos, um serviço oferecido por:
>               PUBLICIDADE
>
>
>
>
>
> ------------------------------------------------------------------------------
>   Links do Yahoo! Grupos
>
>     a.. Para visitar o site do seu grupo na web, acesse:
>     http://br.groups.yahoo.com/group/delphi-br/
>
>     b.. Para sair deste grupo, envie um e-mail para:
>     [EMAIL PROTECTED]
>
>     c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do
> Serviço do Yahoo!.
>
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> --
> <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
>
>
>
>
>
>   *Yahoo! Grupos, um serviço oferecido por:*   PUBLICIDADE
>
> <http://br.ard.yahoo.com/SIG=12fl7qb6g/M=396547.7942355.8848059.2369893/D=brclubs/S=2137111264:HM/Y=BR/EXP=1140708764/A=3310604/R=2/id=noscript/SIG=1540fueht/*http://lt.dell.com/lt/lt.aspx?CID=11377&LID=314739&DGC=BA&DGSeg=DHS&DURL=http://www1.la.dell.com/content/products/category.aspx/desktops?c%3dbr%26l%3dpt%26s%3ddhs>
> ------------------------------
> *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]<[EMAIL PROTECTED]>
>
>    - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do
>    Serviço do Yahoo! <http://br.yahoo.com/info/utos.html>.
>
>


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


[As partes desta mensagem que não continham texto foram removidas]



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