CONSULTA SQL, EM BANCO DADOS .DBF

USUARIO.EXCLUIDOS 03/08/2007 09:50:37
#229271

Galera, to com um probleminha ai...

Estou tentando realizar uma consulta SQL em um banco de dados .dbf
utilizando o componente ADODC... preciso que essa minha consulta seja montada em um grid, no meu caso é um bd de ruas, então no meu grid eu terei a coluna "Rua", "N.º"

eu vou colar o cod abaixo da funcão "Montarlista" pra vcs verem o que tem de errado:



Private Sub MontarLista()

Dim rs As New ADODB.Recordset 'aqui eu não sei se eu realmente declaro essa val.
Dim SQL As String
Dim Criterio As String

'montando grid
grdPesquisa.TextMatrix(0, 0) = "Ruas"
grdPesquisa.TextMatrix(0, 1) = "Número"

Criterio = Chr$(39) & txtDadosPesquisa & "%" & Chr(39)

SQL = "SELECT NumRua, NomeRua FROM TabRuas where TabRuas.NomeRua Like " & Criterio & " ORDER BY NomeRua"

On Error Resume Next

With rs

'aqui eu declaro o componente
.Open SQL, Adodc1, adOpenForwardOnly, adLockReadOnly

If .EOF Then

MsgBox "Registro não encontrado", vbExclamation, "Atenção"

'eu já declarei essa função LimpaGrid aqui embaixo

Limpa
grdPesquisa.TextMatrix(1, 0) = ""
grdPesquisa.TextMatrix(1, 1) = ""
grdPesquisa.TextMatrix(1, 2) = ""

Else

Limpa

Do Until .EOF

'aqui eu monto a pesquisa no meu grid
grdPesquisa.AddItem rs(0) & vbTab & rs(1) & vbTab & rs(2)

.MoveNext
Loop
grdPesquisa.RemoveItem 1

End If

.Close

End With

End Sub



Então galera, o que tem de errado no codigo?

eu configurei meu adodc certinho utilizando um provedor que eu criei com suporte a versão DBaseIII, que é nativo a banco de dados em formato dbf,
e no meu componente eu declaro meu provedor, chamo as tabelas também corretamente...

é isso, alguém me da um help ai galera???

Abraçoss!!!
USUARIO.EXCLUIDOS 03/08/2007 09:58:54
#229277
Resposta escolhida
Amigo, aqui está errado!!

'aqui eu monto a pesquisa no meu grid
grdPesquisa.AddItem rs(0) & vbTab & rs(1) & vbTab & rs(2)



Vc só retorna dois campos no seu Recordset, e tem 3 aí nessa linha, vai dar "Subscript Out of Range", só que vc não enxerga este erro pelo "On error Resume Next" que colocou lá em cima.
Tente assim:
[c]'aqui eu monto a pesquisa no meu grid
grdPesquisa.AddItem rs(0) & vbTab & rs(1)c]

USUARIO.EXCLUIDOS 03/08/2007 10:45:58
#229304
Bom, isso é apenas 1 dos erros do código,

porém ele ainda emite a msg de "Registro não encontrado" Respectivamente decladada!!!
USUARIO.EXCLUIDOS 03/08/2007 10:56:11
#229309
Amigo, tira o "On Error Resume Next" do seu código, ve a linha que ele dá o erro, e qual o erro...


Eu creio que não está conseguindo abrir o recordset, por algum problema de conexão do Adodc1, mais pra ter certeza do que é, e de como arrumar, só sabendo a linha e o erro que ele dá...
USUARIO.EXCLUIDOS 03/08/2007 11:16:09
#229317
deveria ter feito isso antes,

removi o "On error resume next"

então ele diz, "Os argumentos são incorretos, estão fora do intervalo aceitável ou estão em conflito"

e ele aponta para a seguinte linha

.Open SQL, Adodc1, adOpenForwardOnly, adLockReadOnly

acho que é algum pau no meu adodc1...

blááá!!! =/
Tópico encerrado , respostas não são mais permitidas