Sign in to follow this  
.Andreia.

Problema Com Scope_identity Na Execução No Asp

Recommended Posts

Pessoal,

to executando a query atraves do QueryAnalyzer e funciona perfeito.. imprime a ID certinho, mas quando executo na pagina ASP gera erro como se não tivesse resultado:

ADODB.Recordset (0x800A0CC1)

O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado.

o código:

    sql_insere = "declare @tid int "&_
     "INSERT INTO TABELA (data_cad, campo) VALUES (getdate(), '" & campo & "') " &_
     "select @tid = scope_identity() " &_
     "INSERT INTO RELATORIO_ALTERACOES (data_alteracao, id_campo) "&_
     "VALUES (getdate(), @tid) "&_
     "select @tid id_a "
    set tab_insere = conexao.execute(sql_insere)

    ultima_id = tab_insere("id_a")

já tentei varias formas e não funcionou, alguém tem alguma ideia??

vls

Share this post


Link to post
Share on other sites

Andréia oi....eu andei olhando aqui nas minhas coisas sobre seu erro Andréia, e vi que é coisa rara este erro, uma das possíveis causa é que você tenha confundido sua colocação, duplicando into sem um intervalo entre eles, se você perceber não há um intervalo e sim uma seqüência no mesmo set, repare que quando há uma mesma indicação seria necessário finalizar o into, porem acredito eu que o problema seja este:

Como seu into de cima não foi fechado e ele tem relações com o de baixo (ex: getdate()) está acontecendo o que chamamos de replay ado, quando as mesmas informações são buscadas em ambas as tabelas, por isto este erro de não constar o campo em umas das tabelas, isto se da por que na verdade o ADO entendeu que você gostaria de solicitar em ambas as tabelas uma preliminar...a consulta, ai ele não encontra em umas das tabelas os mesmos campos, o que você pediu era para fazer separadamente porem o ADO entendeu que seria em cascata, primeiro uma e depois a outra caso tenha ok caso não este erro ai, é a mesma coisa que fosse uma session desta forma(para você entender melhor):

Session (oi) = “1”

Seisson(oi) = “2”

<%= Seisson(oi) %> resposta = 2

O ADO está vendo assim seu into, o que está valendo é o ultimo e não os dois,,. por isto a necessidade de separar eles.

O erro é de campo não encontrado.

A solução seria você separar ou fazer em loop assim não seria feita a consulta preliminar de ambas as tabelas juntas.

Espero ter ajudado você Andréia.

Obs: Andréia eu sou meio atrapalhado para me expressar, qual quer coisa que você não entendeu posta ai está.

Forte abraço.

Share this post


Link to post
Share on other sites

Oi Marcio, entendi o que voce disse... Mas acho estranho pois já fiz um SQL muito parecido com este e funciona.

alias, como eu disse, no QueryAnalyzer ele retorna o campo com o ID, teria que resgatar no ASP... mas vai saber.

bom, a noite eu vo separar e ver se funcionar... ai posto ;)

vl

Share this post


Link to post
Share on other sites
mas nem separando resolveu... eu não entendo COMO que no query analyzer me retorna o campo do ID corretamente e no ASP dá erro :ph34r:

Share this post


Link to post
Share on other sites

oi andréia este ai está meio duro de entender por que a logica do que você quer fazer você não postou, posta ai andréia a logistica da coisa para a gente entender melhor o que será feito.

se sabe ne sou meio trunco em entender as coisas. hehehehehehehe

:rolleyes:

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this