PEGAR O ÊLTIMO REGISTRO PELA DATA
Citação::
Caro, M4R1O
Lendo os posts, na segunda resposta você afirma que [Ô]quase deu certo[Ô], pois o comando trazia todos os registros e você só precisava do último. Veja o seu comando:Select Num_ContratoBD From tblBanco Where FormaBD=[ô]CNH[ô] ORDER BY CodigoBD;
Para trazer apenas o último faltou um TOP 1Select [txt-color=#e80000]TOP 1[/txt-color] Num_ContratoBD From tblBanco Where FormaBD=[ô]CNH[ô] ORDER BY CodigoBD;
Continuou trazendo o primeiro valor....
Citação::
Tente assim conforme o Marcelo-Traze postou:Dim vSQL As String
Dim rst As New ADODB.Recorset
vSQL = [Ô]SELECT Num_ContratoDB FROM tblBanco WHERE TRIM(FormaDB) = [ô]CNH[ô] AND DataDB = (SELECT MAX(DataDB) FROM tblBanco)[Ô]
rst.Open vSQL, db, 3, 3
If rst.RecordCount > 0 Then
If IsNull(rst([Ô]Num_ContratoDB[Ô])) = False Then
MsgBox [Ô]Encontrou algum valor!![Ô]
Else
MsgBox [Ô]Retornou uma linha, mas esta nula!![Ô]
End If
Else
MsgBox [Ô]Não Encontrou nada!![Ô]
End If
Tente adaptar a sua realidade!
Jonathan,
como adapto esse código para o meu modo de conexão com o banco de dados??
como já disse antes eu sou muito fraco nessa área....
Citação::
tente outrors.Open [Ô]select Num_ContratoBD from tblBanco where (select max(databd) from tblBanco FormaBD=[ô]CNH[ô][Ô]), db, 3, 3
deu o erro logo ao inserir o código (ficou tudo vermelho) então troquei o parentese e a última aspa de lugar pra ver se resolvia, mas das 2 formas o erro é o da mensagem acima o negócio tá mal mas não ta impossivel não, talvez se alguém souber como usar esse TOP 1 que o Fabiano Couto citou e que traga o último valor ao invés do primeiro possa resolver o problema.
Select TOP 1 Num_ContratoBD From tblBanco Where FormaBD=[ô]CNH[ô] ORDER BY CodigoBD
Ola companheiro, vi a luta ai e decidi recriar o BD conforme entendi e fiz consulta em modo gráfico
o SQL ficou assim!
SELECT Max(tblBanco.Num_ContratoBD) AS MáxDeNum_ContratoBD
FROM tblBanco
ORDER BY Max(tblBanco.Num_ContratoBD) DESC;
E só add é chamar num formulário criado pelo assistente que retorna o ultimo registro, T+.
o SQL ficou assim!
SELECT Max(tblBanco.Num_ContratoBD) AS MáxDeNum_ContratoBD
FROM tblBanco
ORDER BY Max(tblBanco.Num_ContratoBD) DESC;
E só add é chamar num formulário criado pelo assistente que retorna o ultimo registro, T+.
Coloquei esse código pelo visto passou, mas não encontrou o que eu procuro:
rs.Open [Ô]SELECT Max(tblBanco.Num_ContratoBD) AS MáxDeNum_ContratoBD From tblBanco ORDER BY Max(tblBanco.Num_ContratoBD) DESC[Ô], db, 3, 3
Private Sub txtVNumCont_DblClick()
Dim vSQL As String
Dim vValor As Long
Dim vRetornoBanco As String
Dim vDadosVet() As String
Dim vResultado As String
ConnectDB
vSQL = [Ô][Ô]
vSQL = vSQL & [Ô]SELECT Num_ContratoDB [Ô]
vSQL = vSQL & [Ô] FROM tblBanco [Ô]
vSQL = vSQL & [Ô] WHERE TRIM(FormaDB) = [ô]CNH[ô]
vSQL = vSQL & [Ô] AND DataDB = (SELECT MAX(DataDB) FROM tblBanco WHERE TRIM(FormaDB) = [ô]CNH[ô])[Ô]
vSQL = vSQL & [Ô] GROUP BY Num_ContratoDB[Ô]
If rs.State Then rs.Close: Set rs = Nothing
rs.Open vSQL, db, 3, 3
If rs.RecordCount > 0 Then
If IsNull(rs([Ô]Num_ContratoDB[Ô])) = False Then
vRetornoBanco = rs([Ô]Num_ContratoDB[Ô])
vDadosVet = Split(rs([Ô]Num_ContratoDB[Ô]), [Ô]-[Ô])
vValor = CLng(vDadosVet(0)) + 1
txtVNumCont.Text = CStr(vValor) & [Ô]-[Ô] & vDadosVet(1)
Else
MsgBox [Ô]Retorno Nulo[Ô]
End If
Else
MsgBox [Ô]Não Encontrou nada!![Ô]
End If
rs.Close: Set rs = Nothing
db.Close: Set db = Nothing
End Sub
Citação::
Private Sub txtVNumCont_DblClick()
Dim vSQL As String
Dim vValor As Long
Dim vRetornoBanco As String
Dim vDadosVet() As String
Dim vResultado As String
ConnectDB
vSQL = [Ô][Ô]
vSQL = vSQL & [Ô]SELECT Num_ContratoDB [Ô]
vSQL = vSQL & [Ô] FROM tblBanco [Ô]
vSQL = vSQL & [Ô] WHERE TRIM(FormaDB) = [ô]CNH[ô]
vSQL = vSQL & [Ô] AND DataDB = (SELECT MAX(DataDB) FROM tblBanco WHERE TRIM(FormaDB) = [ô]CNH[ô])[Ô]
vSQL = vSQL & [Ô] GROUP BY Num_ContratoDB[Ô]
If rs.State Then rs.Close: Set rs = Nothing
rs.Open vSQL, db, 3, 3
If rs.RecordCount > 0 Then
If IsNull(rs([Ô]Num_ContratoDB[Ô])) = False Then
vRetornoBanco = rs([Ô]Num_ContratoDB[Ô])
vDadosVet = Split(rs([Ô]Num_ContratoDB[Ô]), [Ô]-[Ô])
vValor = CLng(vDadosVet(0)) + 1
txtVNumCont.Text = CStr(vValor) & [Ô]-[Ô] & vDadosVet(1)
Else
MsgBox [Ô]Retorno Nulo[Ô]
End If
Else
MsgBox [Ô]Não Encontrou nada!![Ô]
End If
rs.Close: Set rs = Nothing
db.Close: Set db = Nothing
End Sub
Deu o erro acima usando esse código
você verificou se os nomes dos campos estão corretos de acordo com o que você esta querendo?
Creio que os nomes dos campos não estão conforme escrito nas tabelas!
Creio que os nomes dos campos não estão conforme escrito nas tabelas!
Verifiquei
Como minha mãe costuma dizer [Ô]aà só Deus com um gancho....[Ô]
Como minha mãe costuma dizer [Ô]aà só Deus com um gancho....[Ô]
M4R10,
Desculpe-me pela falha, faltou o DESC para ordernar de forma decrescente, no caso pelo maior código da sua tabela
Se você quiser ordernar pela data troque o campo CodigoDB pelo DataDB;
Desculpe-me pela falha, faltou o DESC para ordernar de forma decrescente, no caso pelo maior código da sua tabela
Select TOP 1 Num_ContratoBD From tblBanco Where FormaBD=[ô]CNH[ô] ORDER BY CodigoBD [txt-color=#e80000]DESC[/txt-color];
Se você quiser ordernar pela data troque o campo CodigoDB pelo DataDB;
Tópico encerrado , respostas não são mais permitidas