Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rogério Orlando

[Resolvido] Auto completar no VB com MySql

Recommended Posts

Aí pessoal, Paulo Mendes, Faewman.

 

Novamente recorro-me aos conhecimentos desta comunidade para sanar dúvidas e progredir nos conhecimentos em VB 6.

 

Desta vez meu problema, como deve ser o de muitas pessoas, está relacionado a uma forma de um determinado dado se auto completar de acordo com o que se vai digitando, como se fosse o auto completar do Explorer.

 

 

Tenho um projeto VB onde entre outros dados cadastro o endereço dos funcionários, que são digitados completamente.

Gostaria de saber se existe a possibilidade e como fazer para que ao se digitar num textbox, automaticamente buscar-se numa tabela pré existente, as coincidências entre o dado teclado e o início das palavras existentes na tabela.

 

Para ser mais preciso tenho um banco de dados (MySql 4.01), onde estão várias tabelas, entre elas uma de nome logradouros, onde existem os seguintes campos (TipoLogr - NomeLogr - CEPLogr - CidLogr - BairLogr) e outra tabela onde cadastro o endereço dos funcionários.

Quero que na hora do cadastro, quando começar a digitar o nome do logradouro, este faça uma pesquisa (SQL) na tabela logradouros, campo NomeLogr e vá apresentando as possibilidades.

 

Se houver Possibilidades eu agradeço as dicas..

 

 

 

Um agraço e valeu aos que colaboraram com outras dúvidas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Duvida!

 

Você quer 'autocompletar' com o primeiro registro que retornar ou aparecer a lista ?

 

 

Dica: Você vai ter que fazer no evento Change, e fazer um lógica usando SelStart SelLenght da TextBox.

 

Se foi o que eu entendi é por ae!

 

=)

 

flw VLW

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer 'autocompletar' com o primeiro registro que retornar ou aparecer a lista ?

 

 

Dica: Você vai ter que fazer no evento Change, e fazer um lógica usando SelStart SelLenght da TextBox.

 

Se foi o que eu entendi é por ae!

 

Tá, mais como eu faço?

 

Faço uma sql dentro de um looping para pesquisar a cada vez que teclar no textbox?

 

Se possível dê um exemplo prático.

 

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

você nao precisa do loop...

monta uma query assim

 

select top 1 SEU_CAMPO from SUA_TABELA where SEU_CAMPO = TXT.Text

no evento Change do txt

 

com o que retornar você vai fazer algo mais ou menos assim

 

tam = len(txt.text)
TXT.Text = O_QUE_RETORNOU
TXT.SelStart = tam
txt.SelLength = Len(txt.text)-tam

o select e o codigo poe no change

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que fiz isso uma vez, dai, pra que quando digitasse um valor inexistente na tabela ele aceite, se nao me engano fiz algo assim.

 

______________________________________________________________________

 

SQL = "SELECT * FROM <<TABELA1>> WHERE <<Campo>> =" & <CRITERIO>>

 

______________________________________________________________________

 

depois, apenas pedi um if, verificando o Retorno, tipo

If <<Retorno>> = "" Then

 

Nda = Mantendo o Textox Aberto a Digitacao de Qualquer valor.

 

Else

tam = Len(Text1.Text)

Text1.Text = <<Retorno>>

Text1.SelStart = tam

Text1.SelLength = Len(<<Campo Autopreencher>>) - tam

End If

 

 

Acho que foi isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, adaptei o código de vocês as minhas necessidades, porém não retorna o registro que foi localizando que comece com a letra digitada.

O que está errado ou faltando em meu código para que de certo.

(NÃO ESQUECENDO QUE PRECISO DIGITAR A LETRA "R" E O CÓDIGO TERÁ QUE ME APRESENTAR O PRIMEIRO NOME QUE COMECE COM A LETRA, SUPONHAMOS QUE ELE LOCALIZE "ROBERTO DE FARIA", QUANDO DIGITAR O "O" TRARÁ A MESMA PESSOA, QUANDO DIGITAR UM "G", POR EXEMPLO, SUMIRIA COM O ROBERTO E SURGIRIA, QUEM SABE, "ROGÉRIO ----", ENTENDERAM?

 

VALEU AGUARDO RESPOSTA. UM ABRAÇO.

 

Private Sub txtNome_Change()
Dim tam As String
		strSql = "SELECT NOME FROM EFETIVO WHERE NOME= '" & txtNome.Text & "%'"
		Call abrirBD1("assuntosinternos", strSql)
	tam = Len(txtNome.Text)
	
			If rsMySQL.BOF = True And rsMySQL.EOF = True Then
			txtNome.SetFocus
			Exit Sub
			End If

	
	txtNome.Text = rsMySQL("Nome").Value & "" ' valor retornado de rsmysql
	txtNome.SelStart = tam
	txtNome.SelLength = Len(txtNome.Text) - tam

End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

rorlando,

 

Utilize like ao invés do igual.

SELECT NOME FROM EFETIVO WHERE NOME like 'rorl%'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Scorpio, você é f_ _ a!

Mais uma vez resolveu meus problemas.

 

Continue assim, compartilhando seus conhecimentos com estes pobres novatos.

 

Valeu amigão.

 

Caso necessite de algo pela zona leste de Sampa pode contar comigo.

 

Valeu mais uma vez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.