Ir para conteúdo

POWERED BY:

Arquivado

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

Clenilton

[Resolvido] Obter valor de campo autoincremento ao realizar INSER

Recommended Posts

Prezados do forum,

 

sou novo por aqui, e no uso da programação ASP também. Pesquisei em algumas apostilas e também em alguns tópicos do forum mas não consegui chegar na solução. Se eu estiver repetindo a pergunta, me perdoem. Ë que o forum eh vasto demais.

 

Peço ajuda para solucionar a seguinte situação:

 

Tenho duas tabelas:

paciente

id_paciente (int 10 auto)

id_leito (int 3)

 

leito.

id_leito (int 3 auto)

id_paciente (int 10)

 

Ao cadastrar o paciente e indicar o leito, preciso atualizar a tabela de leitos, colocando no campo id_paciente o código gerado automaticamente (autoincrement) da tabela paciente.

 

Tentei fazer deste jeito, mas não funcionou.

 

set rsPacientes = conexaodatabase.Execute("insert into pacientes nome, idade, id_leito.. values ('&request.form("nome")&', "&request.form("txtidade")&", "&request.form("comboleito")&" )")

set rsLeito = conexaodatabase.Execute("update leitos set id_paciente="&rsPacientes("id_paciente")&" where id_leito="&request.form("comboleito"))

 

Mas nao funcionou.

 

Agradeço a ajuda de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz um select recuperando apenas o ultimo registro inserido e com esse registro, você pega o id e soma +1 e insere na tabela que deseja.

Normalmente usa-se select TOP ou select MAX, depende de qual banco de dados você está usando, existem variações quanto a sintexe dependendo do banco usado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vinicius,

obrigado pela resposta. Mas aí, nesse caso, você estaria sugerindo como fazer para gerar um número automático.

 

No meu caso, este número já é gerado pelo MYSQL, porque o campo id_paciente é um campo autoincrement.

 

Minha questão é justamente pegar este número, que é gerado no momento que eu dou um INSERT, e dar um update noutra tabela.

 

Vinícius,

 

segui sua sugestão e funcionou. Mas aí eu não corro o risco de estar pegando o código do paciente de algum usuário que deu um INSERT no mesmo momento?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode usar o SQL Last()

A função Last() retorna o último valor da coluna selecionada.

 

SELECT LAST(column_name) FROM table_name

 

existem alguns tópicos sobre este assunto no forum, da´uma pesquisada...

 

no SQL SERVER, você pode recuperar essa valor com

 

SELECT @@IDENTITY

 

no MySQL você pode usar o LAST_INSERT_ID()

 

========

 

ultimo registro e somar + 1 e inserir no bd

<%@ Language=VBScript %>
<% Option Explicit %>
<%
'conexao teste com  mdb
Dim localbd, bd

Set bd = Server.CreateObject("ADODB.Connection")
localbd = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & Server.MapPath("banco.mdb") 
bd.Open localbd 

Dim sql, rs
Dim cd_pedido

Set rs = Server.CreateObject("ADODB.RecordSet")

if Request.Form("btenvia") = "Gerar Numero" then
       'Novo numero
       SQL = "SELECT MAX(N_PEDIDO)+1 AS ULITMO_PEDIDO FROM PEDIDO"
       Set rs = bd.Execute (sql)
       cd_pedido = rs.Fields("ULITMO_PEDIDO").Value 

       'inserindo novo numero
       bd.Execute ("INSERT INTO PEDIDO (N_PEDIDO) VALUES (" & cd_pedido & ")")
       rs.Close

end if

'verificando numero
SQL = "SELECT MAX(N_PEDIDO) AS ULITMO_PEDIDO FROM PEDIDO"
Set rs = bd.Execute (sql)
cd_pedido = rs.Fields("ULITMO_PEDIDO").Value 


rs.Close
Set rs = Nothing

bd.Close
Set bd = Nothing
%>
<html>
<head>
<title>Numero Sequencial</title>
</head>
<body>
<center>
<form  id="frm" action="Numero_Sequencial.asp" method="post">
Numero do ultimo pedio:<%=cd_pedido%><br>
<input type="submit" id="btenvia" name="btenvia" value="Gerar Numero" />
</form>
</center>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu, vou experimentar.

 

 

 

 

 

você pode usar o SQL Last()

A função Last() retorna o último valor da coluna selecionada.

 

SELECT LAST(column_name) FROM table_name

 

existem alguns tópicos sobre este assunto no forum, da´uma pesquisada...

 

no SQL SERVER, você pode recuperar essa valor com

 

SELECT @@IDENTITY

 

no MySQL você pode usar o LAST_INSERT_ID()

 

========

 

ultimo registro e somar + 1 e inserir no bd

<%@ Language=VBScript %>
<% Option Explicit %>
<%
'conexao teste com  mdb
Dim localbd, bd

Set bd = Server.CreateObject("ADODB.Connection")
localbd = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & Server.MapPath("banco.mdb") 
bd.Open localbd 

Dim sql, rs
Dim cd_pedido

Set rs = Server.CreateObject("ADODB.RecordSet")

if Request.Form("btenvia") = "Gerar Numero" then
       'Novo numero
       SQL = "SELECT MAX(N_PEDIDO)+1 AS ULITMO_PEDIDO FROM PEDIDO"
       Set rs = bd.Execute (sql)
       cd_pedido = rs.Fields("ULITMO_PEDIDO").Value 

       'inserindo novo numero
       bd.Execute ("INSERT INTO PEDIDO (N_PEDIDO) VALUES (" & cd_pedido & ")")
       rs.Close

end if

'verificando numero
SQL = "SELECT MAX(N_PEDIDO) AS ULITMO_PEDIDO FROM PEDIDO"
Set rs = bd.Execute (sql)
cd_pedido = rs.Fields("ULITMO_PEDIDO").Value 


rs.Close
Set rs = Nothing

bd.Close
Set bd = Nothing
%>
<html>
<head>
<title>Numero Sequencial</title>
</head>
<body>
<center>
<form  id="frm" action="Numero_Sequencial.asp" method="post">
Numero do ultimo pedio:<%=cd_pedido%><br>
<input type="submit" id="btenvia" name="btenvia" value="Gerar Numero" />
</form>
</center>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

não esqueça ter uma relacionamento entre as tabelas, na verdade, a impôrtancia de uma modelagem de dados bem definida até os mínimos detalhes, como os campos de relacionamentos, um velho ditado diz, que um relacionamento bem definido é a alma do aplicativo, pois daí saem todas as consultas e operações com o banco, influenciando diretamente na otimização e performance do aplicativo

Compartilhar este post


Link para o post
Compartilhar em outros sites

A solução mais viável que encontrei foi associar o MAX com o login do usuário que inseriu. Assim eu terei o valor máximo inserido pelo usuário em questão, logo, será o último registro que este usuário inseriu.

 

SELECT MAX(id_paciente) AS ultimopac from pacientes where idusuario='57946663234'

 

Valeu pela ajuda de todos.

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.