Ir para conteúdo

Arquivado

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

coldcase

resultados possiveis aparecendo num list

Recommended Posts

Galera, o codigo da minha busca é o seguinte:

 

Private Sub Command1_Click()        ' --------------------------------.' Sistema de busca parte do campo |' --------------------------------'                Dim Nome As String        Dim Registro As Variant            Nome = InputBox("Digite o nome da Praça desejada: ", " Localizar")                If Nome = "" Then   ' CASO NAO DIGITADO NADA           Exit Sub         ' FIM DE BUSCA        End If                        Registro = datPrimaryRS.Recordset.Bookmark        datPrimaryRS.Recordset.MoveFirst                'BUSCA NOME COM PARTE DIGITADA        'Exemplo: (ra > Aarão) (do > Arraial do Cabo)        datPrimaryRS.Recordset.Find "Nome like '%" & Nome & "%'"        ' ------------------.' Caso nao encontre |' ------------------'                If datPrimaryRS.Recordset.EOF Then           datPrimaryRS.Recordset.Bookmark = Registro' MENSAGEM DE ERRO           MsgBox ("PRAÇA NÃO LOCALIZADA!")        End IfEnd Sub

Como viram, minha busca acha o registro mesmo sem digitar o nome inteiro. Mas por exemplo, se tiverem 2 registros que seriam achados com determinada busca, eu queria que eles fossem jogados em um Listbox que já coloquei no form para dar as possibilidades de busca para o usuario.

 

E aí, alguem se habilita??

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para adicionar numa lista você teria que fazer assim:

list1.clearwhile not datPrimaryRS.Recordset.eof         list1.additem datPrimaryRS.Recordset("nome_do_campo")         datPrimaryRS.Recordset.movenext wend

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok ok.. estamos quase lá!! :D Coloquei isso no codigo da minha busca.. só que ele ta inserindo na lista o campo procurado + todo o resto APÓS ele.Exemplo: Coloquei para procurar "Breno"Saida: Após feita a busca acima, na lista são carregados os registros: Breno, Bruno, Carlos, etc...Ele ta inserindo o campo procurado (perfeito), mas tambem está inserindo os campos em seguida.O certo seria assim:Eu procuro "Breno".ele me retorna todos os brenos possiveis na lista..Breno Albuquerque, Breno Carvalho, etc..Desculpe se estou pedindo demais, mas isso é muito importante para mim.Outra coisa é quando o registro for selecionado na lista, que preencha todos os campos. Como se estivesse selecionando aquele registro para ser exibido.[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

AMIGO SEU TOPICO ME LEVANTOU UMA DUVIDA, SOU NOVATO EM VB MAS PROGRAMO EM OUTRAS LINGUAGENS TENHO UM SISTEMA EM VB COM CODIGO MYSQL, COMO FACO UMA BUSCA EM MEU SISTEMA?meu comando para salvar é o seguinte, ele conecta no banco e ja salva em seguida so que queria um campo de pesquisa:Private Sub lvlsalvar_Click() Adodc1.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" & _ "SERVER=localhost;DATABASE=arteid;UID=ODBC;PWD=;" & _ "OPTION=" & 1 + 2 + 8 + 32 + 2048 + 16384 Adodc1.CommandType = adCmdText Adodc1.RecordSource = "SELECT * FROM artes_mod" Adodc1.Refresh Adodc1.Recordset.AddNew On Error GoTo Error Adodc1.Recordset!cod = txtcod Error: Adodc1.Recordset!nome = txtnome Adodc1.Recordset!Data = txtdat Adodc1.Recordset!datae = txtdate Adodc1.Recordset!linha = cmblinha Adodc1.Recordset!setor = cmbsetor Adodc1.Recordset!resp = cmbresp Adodc1.Recordset!situacao = lstsituacao 'ESTA PARTE On ERRO GOTO ERROR É A VARIAVEL DE ERRO DO VB PARA FINALIZAR E DAR CERTO 'USO EM BAIXO ERRO: ''' 'ESTA PARTE On ERRO GOTO ERROR É A VARIAVEL DE ERRO DO VB PARA FINALIZAR E DAR CERTO 'USO EM BAIXO ERRO: ''' Adodc1.Recordset!caminho = txtcaminho Adodc1.Recordset.Update txtcod.Text = " " txtdat = " " txtnome = " " cmblinha = " " cmbsetor = " " cmbresp = " " txtdate = " " txtcod.SetFocusEnd SubPrivate Sub txtcaminho_GotFocus() CommonDialog1.InitDir = "d:\" CommonDialog1.DialogTitle = "Abrir arquivo" CommonDialog1.Filter = "Arquivos do Corel Draw|*.cdr" CommonDialog1.ShowOpen MsgBox CommonDialog1.FileName, vbInformation, "Arquivo" txtcaminho.Text = CommonDialog1.FileNameEnd SubPrivate Sub txtnome_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii)))End SubGRATO

Compartilhar este post


Link para o post
Compartilhar em outros sites

@coldcase

Eu nunca me apronfundei no Data, então não sei se o método find ele filtra os registros deixando somente os que concordem com requisito ou somente posiciona o cursor no registro, mas caso você esteja usando esse data somente para essa pesquisa você poderia somente substituir essa linha:

datPrimaryRS.Recordset.Find "Nome like '%" & Nome & "%'"
por:
datPrimaryRS.Recordsource "select * from tabela where Nome like '%" & Nome & "%'"datPrimaryRS.refresh
Ou se você estiver usando para mais uma coisa, depois de mostrar o resultado você poderia voltar as propriedades originais.

 

Para fazer o "efeito" da list, você usa o evento List1_click dessa maneira:

Private Sub List1_click()   'você efetua uma busca utilizando a propriedade list1.list(list1.listindex) da listEnd Sub
Isso aí é para caso você ñ permita cadastrar nomes iguais.

 

@SoloPlayer

Seguindo como você está fazendo, poderia ser assim:

Adodc1.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" & _"SERVER=localhost;DATABASE=arteid;UID=ODBC;PWD=;" & _"OPTION=" & 1 + 2 + 8 + 32 + 2048 + 16384Adodc1.CommandType = adCmdTextAdodc1.RecordSource = "SELECT * FROM tabela where campo=valor, campo2 = valor"Adodc1.Refresh
Assim o objeto adodc voltaria com o resultado da pesquisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui de outra forma, fazer com que na lista só apareça registros que tenham os caracteres digitados na busca.

 

O codigo ficou assim:

 

Private Sub Command1_Click()               Dim Nome As String        Dim Registro As Variant            Nome = InputBox("Digite o nome da Praça desejada: ", " Localizar")                If Nome = "" Then   ' CASO NAO DIGITADO NADA           Exit Sub         ' FIM DE BUSCA        End If                        Registro = datPrimaryRS.Recordset.Bookmark        datPrimaryRS.Recordset.MoveFirst                'Preenchimento da lista        List1.Clear        While Not datPrimaryRS.Recordset.EOF        List1.AddItem datPrimaryRS.Recordset("Nome")        datPrimaryRS.Recordset.Find "Nome like '%" & Nome & "%'"        Wend        End Sub
Agora só falta selecionar o registro desejado na lista e ele abrir no ADODC.

Luizgrs, não entendi o que voce colocou nessa parte.

 

Se alguem tiver o codigo para colocar no "Private Sub List1_Click()" que faça isso que to querendo, da uma luz ae..

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria algo assim:

datPrimaryRS.Recordset.Find "Nome like '%" & list1.list(list1.listindex) & "%'"'carrega os campos

Compartilhar este post


Link para o post
Compartilhar em outros sites

boa tarde amigo, ele não esta retornando no campo txtcod,txtnome,text..... Tipow como sera que ele retorna?@SoloPlayerSeguindo como você está fazendo, poderia ser assim:CODEAdodc1.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" & _"SERVER=localhost;DATABASE=arteid;UID=ODBC;PWD=;" & _"OPTION=" & 1 + 2 + 8 + 32 + 2048 + 16384Adodc1.CommandType = adCmdTextAdodc1.RecordSource = "SELECT * FROM tabela where campo=valor, campo2 = valor"Adodc1.RefreshAssim o objeto adodc voltaria com o resultado da pesquisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É só pegar o valor do campo e jogar para a text assim:

text1 = adodc1.recordset!campo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nessa parte aqui você tem que colocar as condições na instrução SQL:

Adodc1.RecordSource = "SELECT * FROM tabela where campo=valor and campo2 = valor"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dae amigo boa noite, vou testar amanha na parte da manha, agora estou na faculdade, mas agora eu estou comecando a entender amigo, tipow eu acho que vai rolar agora amanha antes das 8:00 posto para ver se deu certo ou nÃO.....Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adodc1.RecordSource = "SELECT * FROM tabela where campo=valor and campo2 = valor"o que seria campo=valorminha tabela se chama busca e meu campo cod, não estou entendendo o que seria CAMPO=VALOR.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dae amigo, consegui fazer a pesquisa ficou asim ô

 

 Adodc1.RecordSource = "SELECT * FROM artes_mod where artes_mod.cod=440"

so que eu precisava comparar o campo ARTES_MOD='CAMPO_DO_VB', mas nao sei como fazer.

 

grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria algo assim:

datPrimaryRS.Recordset.Find "Nome like '%" & list1.list(list1.listindex) & "%'"'carrega os campos

<{POST_SNAPBACK}>

Eu coloquei isso no List1_Click() e deu erro na hora de rodar..

 

Onde eu tinha que colocar isso? coloquei no lugar errado?

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dae amigo, consegui fazer a pesquisa ficou asim ô

 

Adodc1.RecordSource = "SELECT * FROM artes_mod where artes_mod.cod=440"

so que eu precisava comparar o campo ARTES_MOD='CAMPO_DO_VB', mas nao sei como fazer.

 

grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

@soloplayer

Nesse exemplo abaixo eu coloquei como se fosse uma text é só você adaptar

Adodc1.RecordSource = "SELECT * FROM artes_mod where artes_mod.cod=" & text1.text

@coldcase

Hmm...não era para dar erro, qual erro está dando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá o seguinte erro:Run-time error '3001'Os argumentos são incorretos, estão fora do intervalo aceitavel ou estão em conflito.Quando eu clico no botão debug, ele sublinha a parte do List1.click.e quando eu clico no stop (pra fechar o programa), aparece: Unable to bind to field or DataMember: 'Nome'Agora não sei porque, quando eu faço uma busca, os resultados estão vindo duplicados. Oq pode ser??[]´s

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.