Ir para o conteúdo
Blue_Wings

[Resolvido] Pesquisa em Textbox com botão, retorna registos da BD noutras textbobx´s

Mensagens Recomendadas

Blue_Wings

Boas tardes a todos,

Tenho o seguinte código que funciona para pesquisar através de uma combobox e retornar os valores da base de dados nessa posição para as outras textbox´s que tenho.

Exemplo:

Private Sub btnOKNumero_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOKNumero.Click
 Dim pesquisaP As Integer

 pesquisaP = Me.cboNumP.SelectedIndex
 With Me.BindingContext(Me.DsProcessos1, "Processos")
	 .Position = pesquisaP
 End With
End Sub

Alguém me pode dizer como faço uma pesquisa deste género mas para utilizar uma textbox validada premindo num botão (para usar o que foi inserido ai e retornar a posição em que está registada da base de dados, mostrando esses mesmos dados nas outras textbox que têm databinds?)

É que andei a pesquisar e não consegui encontrar forma de arranjar um "SelectedIndex" para uma textbox.

Obrigado :)

Editado por Blue_Wings

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Blue_Wings

O que eu pretendia era o seguinte: tenho um Windows Form com várias texbox´s com informações de uma pessoa (nome, morada, número de empregado, etc)

Queria poder pesquisar em outra textbox por "numero de empregado" para aparecerem todos os detalhes dessa pessoa (os dados das pessoas que estou a usar estão todos na mesma tabela), caso não exista na base de dados, que retornasse uma mensagem a avisar disso.

Editado por Blue_Wings

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Blue_Wings

estas a usar bindingsource ?

Sim todas as informações das várias textbox´s estão ligadas a várias bindingsource´s até já tenho botões de navegação para o primeiro, registo seguinte, anterior e ultimo registo a funcionar, só me falta é ter uma texbox á parte (ao lado) para pesquisar e ir diretamente para a pessoa pretendida em vez de "navegar" nos registos de todas as pessoas.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Leonardo Pereira

solução:

Tb..BindingSoure.Position = Tb..BindingSource.Find("ID... = '" & TextBox.. "'")

Podes meter no evento TextChanged ou num botão

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Blue_Wings

O que significa Tb ? Table?

Estou a tentar fazer isso mas está a dar-me alguns erros, podes dar-me um exemplo prático ?

Até agora estava a tentar assim:


Private Sub btnPNCSearchEmployeeNr_Click(sender As Object, e As EventArgs) Handles btnPNCSearchEmployeeNr.Click

 BindingSource.Position = BindingSource.Find("EMPLOYEE_NR = '" & txtbxPNCSearchByEmplyeeNr.Text"'")

End Sub

Assim não me dá erro mas também não funciona:

Private Sub btnPNCSearchEmployeeNr_Click(sender As Object, e As EventArgs) Handles btnPNCSearchEmployeeNr.Click

 PNCBindingSource.Position = PNCBindingSource.Find("EMPLOYEE_NR", txtbxPNCSearchByEmplyeeNr.Text)

End Sub

Editado por Blue_Wings

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Leonardo Pereira

Private Sub btnPNCSearchEmployeeNr_Click(sender As Object, e As EventArgs) Handles btnPNCSearchEmployeeNr.Click

 PNCBindingSource.Position = PNCBindingSource.Find("EMPLOYEE_NR", txtbxPNCSearchByEmplyeeNr.Text)

End Sub

é assim mesmo , devia funcionar

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Blue_Wings

Já funciona... mas teve de ser assim:

Private Sub btnPNCSearchEmployeeNr_Click(sender As Object, e As EventArgs) Handles btnPNCSearchEmployeeNr.Click
 With Me.BindingContext(Uniforms_SoftwareDataSet, "PNC")
	 .Position = PNCBindingSource.Find("EMPLOYEE_NR", txtbxPNCSearchByEmplyeeNr.Text)
 End With
End Sub

Por acaso sabes porquê? Só mesmo para eu ter uma ideia e tentar perceber melhor e aprender :)

Porque consegui por a funcionar mas não entendi o porquê da maneira que explicaste não funcionou.

E se eu quiser mostrar uma mensagem ao utilizador a avisar que a pesquisa que está a tentar fazer não se encontra na base de dados?

É assim:

É necessário declarar fora desta secção: Dim foundIndex As Integer

Private Sub btnPNCSearchEmployeeNr_Click(sender As Object, e As EventArgs) Handles btnPNCSearchEmployeeNr.Click
 With Me.BindingContext(Uniforms_SoftwareDataSet, "PNC")
	 foundIndex = PNCBindingSource.Find("EMPLOYEE_NR", txtbxPNCSearchByEmplyeeNr.Text)
	 If foundIndex > -1 Then
		 .Position = foundIndex
	 Else
		 MessageBox.Show("Record not found.")
	 End If
 End With
End Sub

Editado por Blue_Wings

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Leonardo Pereira

Nunca usei essa função (bindingcontext) por isso não te posso esclarecer essa duvida...

Dá de várias maneiras, mas não estou a ver a mais fácil neste caso xD

Editado por Leonardo Pereira

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.