ADODC METODO FIND X FILTER

USUARIO.EXCLUIDOS 31/07/2007 22:23:05
#228659
Lembrando que uso o controle ADODC

Gostaría de saber porque o FILTER não encontra campos com letras, tirei esta conclusão porque tenho o campo CPF que apesar de ser inserido números é um campo text em meu BD access e o método FILTER funciona, porém ele não funciona quando tento pesquisar o campo NOME que também é um campo text no BD porém possui letras e não números.

O método FIND funciona em todos os casos porém ele só aponta para o primeiro registro verdadeiro, ou seja, se numa pesquisa com o método FILTER pesquisando por CPF tiver mais de uma ocorrência o FILTER me retorna todas as ocorrências com o CPF procurado, enquanto o FIND só me aponta o primeiro registro.

alguem tem dicas ou sugestões ou ainda pode me passar algum esclarecimento a mais sobre esses métodos
RODRIGUESRM 01/08/2007 07:42:41
#228680
JILNEY,

Poste o seu código para dar uma olha, pois aqui na empresa onde trabalho eu uso os dois e funciona belezinha.
USUARIO.EXCLUIDOS 01/08/2007 09:40:29
#228709
Resposta escolhida
Também sempre utilizei o Filter, e nunca tive problemas nem com Letras nem com números.

Expresse um pouco melhor como está fazendo e qual exatamente o resultado que lhe faz tirar a conclusão de que o Filter não funciona.
USUARIO.EXCLUIDOS 01/08/2007 09:46:11
#228712
lEMBRANDO QUE ESTE CÓDIGO ESTÁ FUNCIONANDO VALEU? ... a questão é o porquê do FILTER não funcionar no campo NOME, o qual, precisei usar o método FIND, porém o FIND não retorna mais de uma ocorrência com o mesmo nome como o método FILTER.


Private Sub Command3_Click()
If Option2.Value And Txtbuscacheque = "" Then
Dim vOK As Integer
vOK = MsgBox("O número do cheque não foi digitado!", vbOKOnly + vbCritical, "Atenção!")
Txtbuscacheque.SetFocus
ElseIf Option2.Value And Txtbuscacheque <> "" Then
Adodc1.Recordset.Filter = " cheque = " & Txtbuscacheque
ElseIf Option1.Value And TxtbuscaCPF = "" Then
vOK = MsgBox("O número do CPF não foi digitado!", vbOKOnly + vbCritical, "Atenção!")
TxtbuscaCPF.SetFocus
ElseIf Option1.Value And TxtbuscaCPF <> "" Then
Adodc1.Recordset.Filter = " CPF = " & TxtbuscaCPF
ElseIf Option3.Value Then
If (DataGrid1.SelBookmarks.Count <> 0) Then
DataGrid1.SelBookmarks.Remove 0
End If
If Adodc1.Recordset.RecordCount <> 0 Then
Adodc1.Recordset.MoveFirst
Adodc1.Recordset.Find "nome = '" & Txtbuscanome.Text & "'"
If Adodc1.Recordset.EOF Then
MsgBox "Nome não registrado !", vbOKOnly, "Atenção"
Else
MsgBox "Encontrado!", vbOKOnly, "Atenção"
DataGrid1.SelBookmarks.Add Adodc1.Recordset.Bookmark
End If
End If
End If

End Sub


Agradeço desde já a atenção!
USUARIO.EXCLUIDOS 01/08/2007 09:57:04
#228717
Amigo, pode ser pq quando vc usa o .Filter, o recordset considera Miúsculas e minúsculas. Vc tentou usar o Like em vez de "=" ???

Tipo assim:

  Adodc1.Recordset.Filter = "nome Like '" & Txtbuscanome.Text & "'"

USUARIO.EXCLUIDOS 01/08/2007 10:26:06
#228727
Coloquei exatamente como vc postou MARCELOHF

Sempre da erro 3001
argumentos incorretos ou fora do intervalo aceitavel ou estão em conflito

quando clico em DEBUG e ponho o cursor do mouse sobre a linha de erro que fica com uma linha amarela na janela de código aparece:
txtbuscanome.text = "JILNEY OLIVEIRA DE MACEDO"

Quanto as letras serem minusculas ou maiusculas acho que não deveria dar problemas pois os campos de inserção dos dados assim como o de busca só aceitam digitação de letras maiusculas
USUARIO.EXCLUIDOS 01/08/2007 10:37:16
#228734
Eu não sabia que dava erro, pensei que não encontrava os registros, aí pensei que poderia ser o caso de maiúsculas e minúsculas, mais realmente não é este o problema.


Este erro, o que ele está lhe falando é que o Campo nome não existe (ou então não está sendo retornado no select dentro do Adodc), ou que o conteúdo do campo não condiz com o tipo do mesmo.


Como vc está abrindo este ADODC??
USUARIO.EXCLUIDOS 01/08/2007 11:16:41
#228752
Vamos em partes

O campo nome existe, pois de acordo código acima com o método FIND a busca é realizada.

como pode não estar sendo retornado no select ? este adodc está sendo usado com o Recordsource = command type = adcmdtable, ele retorna todos os campos da tabela. Estava se referindo a isto?
USUARIO.EXCLUIDOS 01/08/2007 11:32:25
#228759
se eu utilizar assim:

Adodc1.Recordset.Filter "nome = " & Txtbuscanome

como utilizo nos outros campos ele dá o erro: INVALID USER OF PROPERTIES

devería funcionar pois nos outros campos utilizo desta forma, é muito estranho.
JB207 01/08/2007 11:32:32
#228760
Como se trata de um campo Alfanumerico a consulta tem que estar entre apostrofes.

Adodc1.Recordset.Filter = "nome Like '" & Campo.Text & "'"

Talves seja isso....a falta dos apóstrofes, "'"

Abraços.
USUARIO.EXCLUIDOS 01/08/2007 11:37:46
#228761
Isso mesmo, queria saber se retornava o Campo nome.

Estranho...

Quando vc usa o "=" no filter ao invés do like da o mesmo erro?
Página 1 de 2 [16 registro(s)]
Tópico encerrado , respostas não são mais permitidas