Ir para conteúdo

POWERED BY:

Arquivado

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

bimpercursso

ultimo ID

Recommended Posts

Ola pessoal, estou com a seguinte duvida

 

estou precisando fazer o seguinte, quando inserir um paciente preciso recuperar o id do ultimo paciente cadastrado para fazer uma inclusao em outra tabela do banco com ID do paciente cadastrado.

 

pensei em quando inserir na tabela de pacientes em seguida dar uma select de top 1 em order by id desc, mas pode ocorrer de alguem inserir algum outro usuario ao mesmo tempo com outro login d sistema, isso implicaria, estou certo? ou essa possibilidade nao existe?

 

se sim, alguempoderia me dar uma ajuda?

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não vai atrapalhar não cara, pois quando o sistema recuperar o último registro ele ira recuperar o id, e este id é único, então mesmo que entre outro cadastro ele será com outro id, e quando seu sistema for cadastrar ele ira cadastrar no id solicitado pelo select top.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi cara, mas quando eu insiro um paciente e logo depois um outro usuario do sistema insere tbm ai ele vai dar as 2 selects, para buscar o ultimo de cada um, mas acheui qie isso poderia cusar alguma confusao para buscar o ultimo id

 

 

valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você fizer só uma simples consulta existe a possibilidade de pegar o ID errado.

 

Além da forma que foi citada acima, você também pode criar o ID no momento do cadastro, ao invés de usar auto-numeração. Assim é mais seguro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se for recuperar recupere o ultimo que tenha todos os campos com valores iguais ao que acabou de inserir e não apenas pegue o ID

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depende do banco q você está utilizando..

 

Se for SQLServer, MYSQL existem função própria para recuperar o ultimo registro adicionado daquela determinada conexão, independente se outro usuario adicionar um registro depois irá recuperar o ultimo adicionado por você ....

 

No mysql

SELECT LAST_INSERT_ID()

SqlServer

SELECT @@IDENTITY

Compartilhar este post


Link para o post
Compartilhar em outros sites

ve se ajuda este code.

 

<%@ Language="VBScript" %>
<% Option Explicit %> 

<%
Response.expires = 0
Response.expiresabsolute = Now() - 1
Response.addHeader "pragma", "no-cache"
Response.addHeader "cache-control", "private"
Response.CacheControl = "no-cache"
Response.Buffer = True
%>

<% 
dim CursorType,adOpenStatic



dim connection, recordset, sConnString, sql
dim intRandomNumber, intTotalRecords, i

sql = "SELECT * FROM SITES"


Set connection = Server.CreateObject("ADODB.Connection")
Set recordset = Server.CreateObject("ADODB.Recordset") 
sConnString="PROVIDER=Microsoft.Jet.OLEDB.4.0;" & _ 
"Data Source=" & Server.MapPath("buddyring.mdb") 


connection.Open(sConnString)


recordset.Open sql, connection, 3, 3
intTotalRecords = recordset.RecordCount


recordset.movelast
dim strLast, strLurl
strLast = (recordset.Fields("siteID"))
strLurl = (recordset.Fields("URL"))

recordset.movefirst
dim strFirst,str1sturl
strFirst = (recordset.Fields("siteID"))
str1sturl = (recordset.Fields("URL"))
dim strNum
strNum = CInt((request.querystring("site")))



do until recordset.Fields("siteID")=strNum
recordset.MoveNext
loop
dim strRec, strURL
strRec = (recordset.Fields("siteID"))
strURL = (recordset.Fields("URL"))
response.write"First Record: " & strFirst &"<BR>"
response.write"Current Record: "& strRec & "<BR>"
response.write"Last Record: " & strLast &"<BR>"

dim strNPrev
dim strFURL
if strFirst < strNum then
do until recordset.Fields("siteID")<strNum
recordset.MovePrevious
loop
strNPrev = recordset.Fields("siteID")
strFURL = recordset.Fields("URL")
else 
strNPrev = strLast
strFURL = strLurl
end if

response.write "Previous Record: " & strFURL & "?siteid="& strNPrev &"<BR>"


dim strNext
dim strNURL
if strNum < strLast then
do until recordset.Fields("siteID")>strNum
recordset.MoveNext
loop
strNext = recordset.Fields("siteID")
strNURL = recordset.Fields("URL")
else
strNext = strFirst
strNURL = str1sturl
end if
response.write "Next Record: " & strNURL &"?siteid=" & strNext &"<BR>"
if request.querystring("pg")="prev" then
response.redirect strFURL & "?siteid="& strNPrev
elseif request.querystring("pg")="next" then
response.redirect strNURL &"?siteid=" & strNext
elseif request.querystring("pg")="random" then


Dim rndMax
rndMax = CInt(recordset.RecordCount)

recordset.MoveFirst

Dim rndNumber
Randomize Timer
rndNumber = Int(RND * rndMax)

recordset.Move rndNumber

Response.Redirect(recordset("URL"))
end if

recordset.Close
Set recordset=Nothing
connection.close
Set connection=Nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

complementando tb http://forum.imasters.com.br/index.php?showtopic=343491

O mySQL possui um comando q pega o ultimo ID (se o campo for 'auto_increment') gerado, o nome é LAST_INSERT_ID()

tb va vi alguns usarem SELECT MAX(CAMPO_AUTOINCREMENTO) FROM TABELA

e você tb pode usar um bloqueio no recordset para enquanto um inserir outro aguarda até completar a execucao, tb pode utilizar o LAST() do SQL,

a função LAST retorna o último valor da coluna seleccionada.

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.