Ir para conteúdo
Fórum Script Brasil
  • 0

Problema Com Scope_identity Na Execução No Asp


.Andreia.

Pergunta

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

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...