Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

pedrovisk

Usando o @@IDENTITY

Recommended Posts

Olá!

 

Estou querendo recuperar o último ID gravado na tabela utilizando a ASP abaixo:

 

'Cria um conjunto de registros	Set rsCesta = Server.CreateObject("ADODB.Recordset")		'Executa a SP para criar a nova Cesta para o cliente	SQL = "Insert into Cesta (IDCliente) Values ("&Session("idCliente")&") "	SQL = SQL & "SELECT @@IDENTITY AS IDCesta "	'Response.Write SQL	'Response.End()		'Executa a expressão SQL	Set rsCesta = abredb.Execute(SQL)		'Recupera o ID da cesta retornado da SPLinha 31	idCesta = rsCesta("IDCesta")		'Atribui o ID da cesta a uma Session	Session("idCesta") = idCesta
Mas sempre gerar a seguinte mensagem de erro:

 

Tipo de erro:

ADODB.Recordset (0x800A0CC1)

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

/fortalmag_2006/Orcamento/Orcamento_Adiciona_Produto.asp, line 31

 

Esse campo existe me minha tabela sim, é justamente ele que estou querendo recuperar.

 

Quando eu dou um Response.Write, exibe esse SQL:

 

Insert into Cesta (IDCliente) Values (1) SELECT @@IDENTITY AS IDCesta
Quando roda a consulta acima no Query Analyzer, ela funciona perfeitamente.

 

Utilizo o MSSQL 2000 Personal Edtion com Windows XP SP2

 

Muito obrigado,

 

Pedro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

As instruções não teriam que ser separadas? 1º o INSERT depois o SELECT?Insert into Cesta (IDCliente) Values (1) 'executa a SQLSELECT @@IDENTITY AS IDCesta'executa a SQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Camarada,

 

Segue mais uma sugestão:

Insert into Cesta (IDCliente) Values (1) goSELECT @@IDENTITY AS IDCestago

Isto na mesma string SQL que esta sendo usada no execute.

 

Acho q

 

Camarada,

 

Segue mais uma sugestão:

Insert into Cesta (IDCliente) Values (1) goSELECT @@IDENTITY AS IDCestago

Isto na mesma string SQL que esta sendo usada no execute.

 

Acho que a sugestão do arr tb pode funcionar.

 

Agora o mais indicado mesmo é stored procedure´s para efetuar as transações no banco de dados.

 

Intel +

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma q uso aqui, depois de inserir na tabela recupera o ultimo assim...<%Sql = "SELECT max(id) as ident from tabela"Set Rs2 = Conn.Execute(Sql)id_produto = Rs2("ident") %>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual das soluções apresentadas você utilizou?Qual o erro que aprecere e em qual linha?Senão meu Borther fica impossivel de te ajudar.Todas as sugestões apresentadas resolveriam seu caso.Post o código que você esta usando agoara.t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.