PEGAR O ÊLTIMO REGISTRO PELA DATA

MARIOANDRADE 07/09/2014 18:18:19
#441030
meus amigos, preciso pegar o último registro cadastrado conforme código abaixo, vi em um tutorial mas estou quebrando a cabeça aqui
meu banco de dados é Access:

   ConnectDB
rs.Open [Ô]select Num_ContratoBD from tblBanco where FormaBD=[ô]CNH[ô] and DataBD=[Ô] & Last(Date) & [Ô][ô][Ô], db, 3, 3
MsgBox rs
rs.Close: Set rs = Nothing
db.Close: Set db = Nothing


Alguém tem ideia de como se faz?
NAUTILUZ 07/09/2014 18:31:02
#441032
Use a clausula ORDER BY DESC no final do comando
assim vai pegar o ultimo registro
rs.Open [Ô]select Num_ContratoBD from tblBanco where FormaBD=[ô]CNH[ô] ORDER BY DESC[Ô], db, 3, 3

Se não aparecer nada pode ser a maneira que esta se conectando

Sintaxe do propio Access
SELECT fieldlist
FROM table
WHERE selectcriteria
[ORDER BY field1 [ASC | DESC ][, field2 [ASC | DESC ]][, ...]]]

MARIOANDRADE 07/09/2014 19:08:13
#441033
Quase deu certo ,eu ordenei pelo código, com o [Ô]DESC[Ô] não deu erro, o problema é que ele traz todos o valores, eu só queria o último pois preciso fazer um cálculo:

ConnectDB
Dim vValor As Long
Dim vRetornoBanco As String
Dim vDadosVet() As String
Dim vResultado As String
rs.Open [Ô]select Num_ContratoBD from tblBanco where FormaBD=[ô]CNH[ô] ORDER BY CodigoBD[Ô], db, 3, 3
vRetornoBanco = rs!Num_ContratoBD
vDadosVet = Split(vRetornoBanco, [Ô]-[Ô])
vValor = CLng(vDadosVet(0)) + 1
txtVNumCont = CStr(vValor) & [Ô]-[Ô] & vDadosVet(1)

rs.Close: Set rs = Nothing
db.Close: Set db = Nothing


NAUTILUZ 07/09/2014 19:36:20
#441035
Use o limitador LIMIT 1,1, ele limita a pesquisa no numero que pretende
rs.Open [Ô]select Num_ContratoBD from tblBanco where FormaBD=[ô]CNH[ô] ORDER BY DESC CodigoBD LIMIT 1,1[Ô], db, 3, 3

Boa sorte, T+.
NILSONTRES 07/09/2014 19:41:55
#441036
Se vc precisa do ultimo e tiver um campo como referencia, ou a data for a referencia, utilize por exemplo : Select max(nomedocampo) as Maximo
MARCELO.TREZE 07/09/2014 20:11:54
#441037
é o nilson ta certo o mais correto é utilizar o max, ficaria algo mais ou menos assim

rs.Open [Ô]select Max(DataBD),Num_ContratoBD from tblBanco where FormaBD=[ô]CNH[ô][Ô], db, 3, 3
MARIOANDRADE 07/09/2014 20:29:14
#441039
Deu esse erro....
   ConnectDB
Dim vValor As Long
Dim vRetornoBanco As String
Dim vDadosVet() As String
Dim vResultado As String
rs.Open [Ô]select Max(databd)as Maximo from tblBanco where FormaBD=[ô]CNH[ô][Ô], db, 3, 3
vRetornoBanco = rs!Num_ContratoBD
vDadosVet = Split(vRetornoBanco, [Ô]-[Ô])
vValor = CLng(vDadosVet(0)) + 1
txtVNumCont = CStr(vValor) & [Ô]-[Ô] & vDadosVet(1)
rs.Close: Set rs = Nothing
db.Close: Set db = Nothing

NILSONTRES 07/09/2014 20:38:06
#441040
Num_contratoBd, vc não selecionou esse campo na query.
coloca rs!Maximo
MARCELO.TREZE 07/09/2014 20:52:50
#441041
coloca a query assim

rs.Open [Ô]select Max(databd)as Maximo, * from tblBanco where FormaBD=[ô]CNH[ô][Ô], db, 3, 3
MARIOANDRADE 07/09/2014 21:10:22
#441042
deu o erro acima ao usar:
rs.Open [Ô]select Max(databd)as Maximo, * from tblBanco where FormaBD=[ô]CNH[ô][Ô], db, 3, 3

e o
rs.Open [Ô]select Max(DataBD),Num_ContratoBD from tblBanco where FormaBD=[ô]CNH[ô][Ô], db, 3, 3

também dá erro

O código abaixo funciona perfeitamente, só que ele me traz o primeiro valor e eu preciso do último:
rs.Open [Ô]select Num_ContratoBD from tblBanco where FormaBD=[ô]CNH[ô][Ô], db, 3, 3
NILSONTRES 07/09/2014 21:32:12
#441043
Mar,
Se vc coloca *From , não pode selecionar campos na query, isso é para selecionar todos os campos, O Marcelo cometeu um erro ali.

seria assim:
rs.Open [Ô]select Max(databd)as Maximo,Num_contratoBD from tblBanco where FormaBD=[ô]CNH[ô][Ô], db, 3, 3
Página 1 de 4 [32 registro(s)]
Tópico encerrado , respostas não são mais permitidas