TAMANHO DO RESULTADO DA PESQUISA...

MARCELO.VB.PIRA 12/03/2005 17:19:22
#72600
eu!!!!!!!!!!!!!!!

seguinte: preciso fazer uma pesquisa e saber o tamanho (quantidade de registros) do resultado.

atualmente estou usando assim:

SQL = "Select * From clientes Where area like '*" + TxArea + "*' AND ativo = 'S' Order by nome , codigo"
DtCliente.RecordSource = SQL
DtCliente.Refresh
DtCliente.Recordset.MoveLast
fimdosclientes = DtCliente.Recordset.RecordCount

mas se a pesquisa não retornar nenhum registro, dá erro e tenho q tratar do error para informar que ficou tamanho=0

pergunta:

num tem alguma forma de retornar true ou false de acordo com o resultado da pesquisa??? ou mesmo de saber quantos registros estão neste resultado???


VALEU!!!!!!!
CLINS 12/03/2005 18:25:45
#72612
Tem sim.

Se o recordset não encontrar nenhum registro a propriedade EOF (e BOF) será true, logo :


if DtCliente.[txt-color=#0000ff]eof[/txt-color] then
msgbox "não há registros !!"
end if
MARCELO.VB.PIRA 12/03/2005 19:29:08
#72628
infelizmente esta errado... nem existe essa função ligada a um dataobject.....

deu METHOD OR DATA MENBER NOT FOUND...

num terias outra ideia???
ALMARTI 12/03/2005 19:35:09
#72633
Se vc está utilizando DAO, (não sei explicar o porque disto acontecer), você precisa reposicionar o ponteiro para que consiga contar. Por exemplo


DtCliente.Recordset.MoveFirst
DtCliente.Recordset.MoveLast
fimdosclientes = DtCliente.Recordset.RecordCount
MARCELO.VB.PIRA 12/03/2005 19:39:28
#72634
mas acontece, que se vc utilizar o movefirst ou movelast em um recordset vazio, dá erro... e o q preciso ÂÂÂ'q saber se pelo menos ele ta vazio ou naum...

pq se naum vou ter q tratar do erro para ele pular esta consulta...

existe 28 consultas com 28 objects data diferentes que estão em serie...

e para não ter q usar um tratamento de erro para cada um deles, querioa apenas checar se existe registros, se existir continue e caso contrario, pule para a proxima pesquisa...

ou seja: contar eu posso desde q haja registros para isso...

obrigado e continua na espera de ajuda de vcs amigos...
USUARIO.EXCLUIDOS 12/03/2005 20:23:59
#72650
cara, no caso, é o cursor que está referenciado errado,
no caso da qtde não ser informada diretamente pela função
data.recordset.recordcount

e já no caso do movefirst e movelast, basta voce informar assim:

dim qtde as integer
if data.recordset.eof = false then
data.recordset.movelast
data.recordset.movefirst
contador = data.recordset.recordcount
else
qtde = 0
end if


e sobre essa sua foto, ela expressa direitinho o que nós passamos quando um código não dá certo... mas cuidado com as gastrites... hehehe [S20][S53]
CLINS 12/03/2005 22:17:34
#72677
Que tipo de acesso está utilizando ?
CLINS 12/03/2005 22:20:16
#72678
Agora que vi se tratar de um objeto data...

Ficaria assim :

if  DtCliente.recordset.eof then 
msgbox "não há registros !!"
end if
MARCELO.VB.PIRA 12/03/2005 22:41:07
#72687
20 DtVenda.DatabaseName = DriveTrabalho + "\Arquivos de programas\Down_Ups\dados\" + Viniciais + "\vendas\vendas" + CbAno + ".mdb"
30 DtVenda.RecordSource = "vendas"
40 SQL = "Select * From vendas Where codigo_do_cliente = '" + DtCliente.Recordset.Fields("codigo") + "' AND entregue = 'NÃO' Order by codigo"
50 DtVenda.RecordSource = SQL

60 If DtVenda.Recordset.EOF = False Then
70 Data.Recordset.MoveLast
80 Data.Recordset.MoveFirst
90 qtde = Data.Recordset.RecordCount
100 Else
110 qtde = 0
120 End If


deu erro na linha 60
OBJECT VARIABLE OR WITH BLOCK VARIABLE NOT SET

EU VOU DAR UM SOCO NESTE MONITOR MEU DEUS!!!!!!!!!!!!!!!
MARCELO.VB.PIRA 12/03/2005 22:47:21
#72691
20 DtVenda.DatabaseName = DriveTrabalho + "\Arquivos de programas\Down_Ups\dados\" + Viniciais + "\vendas\vendas" + CbAno + ".mdb"
30 DtVenda.RecordSource = "vendas"
40 SQL = "Select * From vendas Where codigo_do_cliente = '" + DtCliente.Recordset.Fields("codigo") + "' AND entregue = 'NÃO' Order by codigo"
50 DtVenda.RecordSource = SQL

60 If DtVenda.Recordset.EOF Then
70 MsgBox "não há registros !!"
80 Else
90 MsgBox "há registros !!"
100 End If

deu erro na linha 60
OBJECT VARIABLE OR WITH BLOCK VARIABLE NOT SET

(ACABO DE DESTRONCAR UM DEDO... O VIDRO DO MONITOR é BEM FORTE VISSE???)
LCSD 12/03/2005 22:51:14
#72694
Marcelo

Eu não entendi direito quando você diz "28 Objetos Data". Você quer dizer 28 DataCotrols no mesmo Form?

Se for, tem algo muito errado, uma consulta ou 2, no máximo 3 ainda vá lá, mas 28 não tem o porque, além disto um RecordSet Local seria mais interessante, no exemplo que mencionei, abrindo até 3 consultas e depois fechando e destruindo, sem conexões paralelas ao BD.
[s50]

Vai por mim, terá uma boa dor de cabeça.
[s55]
Página 1 de 3 [21 registro(s)]
Tópico encerrado , respostas não são mais permitidas