PEGAR O ÊLTIMO REGISTRO PELA DATA

MARIOANDRADE 08/09/2014 17:36:04
#441065
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 1

Select [txt-color=#e80000]TOP 1[/txt-color] Num_ContratoBD From tblBanco Where FormaBD=[ô]CNH[ô] ORDER BY CodigoBD;



Continuou trazendo o primeiro valor....
MARIOANDRADE 08/09/2014 17:40:10
#441066
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....
MARIOANDRADE 08/09/2014 17:48:47
#441067
Citação:

:

tente outro

rs.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


NAUTILUZ 08/09/2014 20:14:28
#441069
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+.
MARIOANDRADE 08/09/2014 20:39:29
#441070
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
FILMAN 08/09/2014 21:02:32
#441071
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
MARIOANDRADE 08/09/2014 21:08:31
#441072
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
FILMAN 08/09/2014 21:16:35
#441073
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!
MARIOANDRADE 08/09/2014 21:31:23
#441074
Verifiquei

Como minha mãe costuma dizer [Ô]aí só Deus com um gancho....[Ô]
FFCOUTO 08/09/2014 21:36:11
#441075
M4R10,

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;

Página 3 de 4 [32 registro(s)]
Tópico encerrado , respostas não são mais permitidas