|
Postada em 02/03/2007 07:05 hs
Uso o VB 6.0, DAO 3.6, e acess 2000. quero fazer uma busca automatica no textbox. à medida que eu digitar no txtNome, o nome do cliente aparecer no proprio txtNome ou entoa numa lista para depois eu clicar e aparecer na tela todas informaçoes do cliente. Utilizei esta rotina fornecida no forum por um colega nosso, esta rotina porem deu erro na linha. o que será que deu errado , agradeço desde ja, Rogerio. Private Sub Tpes_KeyPress(KeyAscii As Integer) Dim busca busca = Tpes.Text KeyAscii = Asc(UCase(Chr(KeyAscii))) ' transforma para letras maiuslas If KeyAscii = 13 Then If busca = Empty Then Exit Sub End If (DEU ERRO NESTA LINHA AQUI, dizendo objeto requerido) DtaDBcli.RecordSource = "select*from Tabcliente where NomeCli like'" & busca & " '" '"*' " busca tudo que tiver a mesma letra inicial DtaDBcli.Refresh If Tnm = "" Then MsgBox "Cliente Não Encontrado!" DtaDBcli.RecordSource = "select*from Tabcliente order by NomeCli" DtaDBcli.Refresh End If KeyAscii = 0 End If End Sub
|
|
|
|
Carlos Alberto
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 02/03/2007 10:00 hs
O que vc pode fazer e o seguinte se vc quiser fazer essa busca a cada letra que digitar vc faz no seu keypress uma SQL que busque no seu banco de dados...se for uma SQL pequena nao vai ter problema de performace...A cada vez que vc digitar vc roda uma sql e joga pra onde vc quiser...Pelo o que estou vendo ai em cima ele esta fazendo isso so quando aperta ENTER...
um abraço qualquer duvida manda um e-mail
|
|
|
Rogerio
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 03/03/2007 01:46 hs
Carlos Alberto, É exatamente istoque vc falou que eu estou querendo, pois vi num programa executável já pronto esta maneira mesmo, só nao acertei fazer ainda, se vc tiver algum site com alguma dica ou apostila, me forneça paraa eu estudar a situação, obrigado mesmo. Rogério
|
|
|
Ama
|
UBERLÂNDIA MG - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 05/03/2007 22:14 hs
Cara tente algo +- assim Data1.RecordSource = "select ID, Nome, Usuario from " & _ "usuarios where Nome like '" & Trim$(txtDescricao) & "*'"
|
|
|
|
Postada em 06/03/2007 05:08 hs
AMA, obrigado pela dica, mas continua dando o mesmo erro. O que vc chamou de "Data1" é o recordset? pois eu coloquei dim rsAtendimentos as recordset, e fiz rsAtendimentos.RecordSouce, e deu erro, Nao sei como faz a chamada em SQL
|
|
|
CSRocha
|
BRASILIA DF - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 06/03/2007 12:36 hs
Uso um combobox para isso, em vez de textbox. Alimento o combo no Load do Form (ou use uma rotina separada, se precisar).
O combobox deve ser setado com a propriedade Style = 1, que ele fica com a aparência de textbox (sem a setinha para abrir)
Coloque no módulo:
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const CB_ERR = -1 Public Const CB_FINDSTRING = &H14C
Public Sub AutoMatch(cbo As ComboBox, KeyAscii As Integer) Dim sBuffer As String Dim lRetVal As Long sBuffer = Left(cbo.Text, cbo.SelStart) & Chr(KeyAscii) lRetVal = SendMessage((cbo.hwnd), CB_FINDSTRING, -1, ByVal sBuffer) If lRetVal <> CB_ERR Then cbo.ListIndex = lRetVal cbo.Text = cbo.List(lRetVal) cbo.SelStart = Len(sBuffer) cbo.SelLength = Len(cbo.Text) KeyAscii = 0 End If
End Sub
E no form:
No evento Keypress fica assim:
AutoMatch NOMEDACOMBO, Keyascii, como no exemplo abaixo:
Private Sub cboResp_KeyPress(KeyAscii As Integer) AutoMatch cboResp, KeyAscii End Sub
Não tem erro. Uso há anos.
|
|
|
|