TAMANHO DO RESULTADO DA PESQUISA...
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...
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...
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
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
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]
2 Perguntas, tem atualizado o VB com os Services Packs e o MDAC?
[s92]
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
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
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)
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)
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]
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]
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
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
Corrigindo um Erro
If tabela.Recordcount = 0 then
msgbox "Nao Existe nenhum Usuário Inadimplente",vbinformation,"Atenção"
end if
If tabela.Recordcount = 0 then
msgbox "Nao Existe nenhum Usuário Inadimplente",vbinformation,"Atenção"
end if
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.
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.
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"
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"
Tópico encerrado , respostas não são mais permitidas