TAMANHO DO RESULTADO DA PESQUISA...

MARCELO.VB.PIRA 12/03/2005 22:55:25
#72699
ja reduzi o numero de dataobject... agora são 8...

sei q deveria usar um so e alterar as suas propriedades.. mas... td bem...

o problema no momento num é esse kapela... o problema é descobrir como fazer para saber se o resultado da pesquisa gerou ou não algum registro...

Obrigado...
LCSD 12/03/2005 23:13:47
#72707
Marcelo

Para abrir um RecordSet localmente é fácil. Vamos lá:

[txt-color=#008000]cnnAtiva é um Connection declarado no início do Programa [/txt-color]
Public cnnAtiva As ADODB.Connection

[txt-color=#008000]Na Procedure AbreConexao você cria o objeto Connection e chama no início do Programa.[/txt-color]

Sub AbreConexao()

Set cnnAtiva = New ADODB.Connection
cnnAtiva.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & App.Path & "\Dados\Nwind.MDB;User ID=Admin;Password=;"
cnnAtiva.Open
End Sub


[txt-color=#008000]'Aqui eu Declaro o rsTemp Localmente, por exemplo, em um Click [/txt-color]
Dim rsTemp as ADODB.RecordSet

[txt-color=#008000]'Cria-se o RecordSet [/txt-color]
Set rsTemp = New ADODB.RecordSet

[txt-color=#008000]Manipula-se as informações e depois Fecha-se (Close) e Destrói-se (Nothing) o Recordset [/txt-color]

rsTemp.Close 'Fecha
Set rsTemp = Nothing 'Destrói


Abaixo uma rotina que uso em um dos Forms

Private Sub AlimentaGrid(sSQL As String)
Dim rsGrid As ADODB.Recordset
Dim X As Integer

Set rsGrid = New ADODB.Recordset

Set rsGrid.ActiveConnection = cnnAtiva

rsGrid.Open sSQL, , adOpenStatic, adLockOptimistic

If rsGrid.RecordCount < 1 Then Exit Sub
With FlexEstatistica
.Visible = False
.Rows = rsGrid.RecordCount
.Cols = 4
.ColWidth(0) = 300
.ColWidth(1) = 1500
.ColWidth(2) = 3500
.ColWidth(3) = 500

For X = 1 To rsGrid.RecordCount - 1
.TextMatrix(X, 1) = rsGrid(0).Value
.TextMatrix(X, 2) = rsGrid(1).Value
.TextMatrix(X, 3) = rsGrid(2).Value
rsGrid.MoveNext
Next

.Visible = True
End With

rsGrid.Close
Set rsGrid = Nothing

End Sub

LCSD 12/03/2005 23:16:49
#72708
Para tanto, lembre-se de referenciar o ADO no References, de preferência o último, ADO 2.8 mas até o 2.7 não terá problemas.

2 Perguntas, tem atualizado o VB com os Services Packs e o MDAC?
[s92]
USUARIO.EXCLUIDOS 12/03/2005 23:21:08
#72709
isso é facil
Pelo que entendi

utilize o RecordCount do objeto Criado

verifique se for igual a zero e pronto

hehe

Kpella ele esta usando o objeto dataControl do Dao e nao do ADO
Agora nao sei dizer porque Trocentos objetos datacontrols no form

MARCELO.VB.PIRA 12/03/2005 23:27:59
#72710
pelamordedeus gente...

ta atualiza com sp6 mdca, etc..

mas sera q cardosos ta esquecendo q o recordcount para ler o tamanho tem se mover o ponteiro para o ultimo registro???

e como mover para o ultimo registros se naõ existem registros na consulta?????????????????????????????????????????????????

NAO quero mudar a fomra de acesso aos arquivos AGORA... eu sei q TENHO q mudar para norma(ti)(li)zar os BD,s... mas agora meu problema é outro...

affffffffff.....

apenas como saber se uma pesquisqa que que fiz em um bd q tem 2341 clientes já gravados retornou ou não algun registro...

sabe??? tipo: quero os clientes inadiplentes e descubro q não tem nenhum...

mas eu quero saber se num tem uma funcao magica tipo:

este catzo de recordset não tem nenhum registro gravado nele...

ou:

esta bendita clausula sql não retornou nenhum registro em sua pesquisa...

simples...

obrigado...

(ps... eu sei q devo e vou norma(ti)(li)zar os bd,,, so naõ agora... obrigado pelas dicas)
LCSD 12/03/2005 23:33:49
#72711
Marcelo

Você está confundindo Normatização, por exemplo, NÃO deveria ser '04' (Texto) e sim 4 (Número) o tipo de dados, porque agiliza internamente o BD é mais fácil montar SQL, com acesso a DADOS, DAO ou ADO, eu prefiro ADO.

Eu te falei sobre as atualizações porque eles retiraram BUGS e este seu problema pode decorrer de um BUG do DataControl!
[s55]

Como eu não uso DataControls e devo ter usado a MUITO TEMPO atrás, não posso te dizer com certeza o que está ocorrendo.
[s50]
USUARIO.EXCLUIDOS 12/03/2005 23:39:29
#72712
Utilizando o DAO e nao o objeto datacontrol do dao

Crie uma Referencia para Microsoft DAO 3.51 Object Library

Ai vai meu Amigo

Public Consulta as QueryDef
Public Base as DataBase
Public Tabela as RecordSet

Set Base = opendatabase("PATH")

Sql = "Instrução SQL"

Set Consulta = Base.CreateQuerydef("Resultado",SQL)

Set Tabela = base.openRecordSet("Resultado",dbopenDynaset)

IF Tabela = 0 then
msgbox "Nao Existe nenhum Usuário Inadimplente",vbinformation,"Atenção"
end if



Espero ter Ajudado



USUARIO.EXCLUIDOS 12/03/2005 23:40:30
#72714
Corrigindo um Erro

If tabela.Recordcount = 0 then
msgbox "Nao Existe nenhum Usuário Inadimplente",vbinformation,"Atenção"
end if
USUARIO.EXCLUIDOS 13/03/2005 00:08:56
#72715
Resposta escolhida
Bom, nunca utilizo controlos vinculados, pelo que tive que elaborar um exemplo para testar.
Bom, fiz assim:
1. Abri um novo Projecto
2. Para o form1 arrastei um DataControl e 1 Command Botton
3. Elaborei o seguinte código:

Dim strSQL As String, nom As String

Private Sub Command1_Click()
nom = "pedro"
strSQL = "SELECT * FROM TABELA1 "
strSQL = strSQL & "WHERE nome LIKE '" & nom & "%" & "'"

Data1.DatabaseName = "C:    estes2000    este.mdb"
Data1.RecordSource = strSQL
Data1.Refresh

If Data1.Recordset.EOF Then
MsgBox "Não há registos"
Else
Data1.Recordset.MoveLast
MsgBox Data1.Recordset.RecordCount
End If
End Sub

De salientar que esta tabela tem dois registos, mas no campo nome só figuram joao e antonio.

O resultado foi que não obtive quaqluer erro e dá-me a mensagem " Não existem registos"

Bom, espero que, depois de algum trabalho e a esta hora da manhã(aqui são 3h40), tenha servido para alguma coisa.


USUARIO.EXCLUIDOS 13/03/2005 00:15:58
#72717
Marcelo, acho que descobri o seu erro!

No meio das alterações de código você perdeu o refresh do DataControl, senão veja , este código me dá exactamente o erro que referiu:
Dim strSQL As String, nom As String

Private Sub Command1_Click()
nom = "pedro"
strSQL = "SELECT * FROM TABELA1 "
strSQL = strSQL & "WHERE nome LIKE '" & nom & "%" & "'"

Data1.DatabaseName = "C:    estes2000    este.mdb"
Data1.RecordSource = strSQL
'Data1.Refresh

If Data1.Recordset.EOF Then
MsgBox "Não há registos"
Else
Data1.Recordset.MoveLast
MsgBox Data1.Recordset.RecordCount
End If
End Sub

"Object variable or with block variable not set"


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