RESULTADO DE BUSCA EM OUTRO FORM

DANLEONHART 03/02/2011 08:14:24
#364178
Pessoal...

Como faço para abrir outro formulario contendo nele o resultado de uma busca no BD ?

Meu objetivo é que o 1º Form fique inacessível enquanto o outro estiver aberto... no VB-6 faz-se assim: [Ô]Form2.Show vbModal[Ô].

Fiz assim:

Public Sub BuscaID()
Dim vUser As String = InputBox([Ô]Informe o Nome do Usuário[Ô], [Ô]ATENÇÂO ![Ô], [Ô][Ô])
Dim Conn As OleDbConnection = New OleDbConnection([Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & Application.StartupPath & [Ô]\bd1.mdb[Ô])
Dim Da As OleDbDataAdapter = New OleDbDataAdapter([Ô]select * from table1 where Nome=[ô][Ô] & vUser & [Ô][ô][Ô], Conn)
Dim Ds As DataSet = New DataSet

Try
Conn.Open()
Da.Fill(Ds, [Ô]table1[Ô])

Infos.ShowDialog() [ô] Infos é o nome do 2º Form;

Infos.lb_id.Text = Ds.Tables([Ô]table1[Ô]).Rows(0).Item(0).ToString
Infos.txt_nome.Text = Ds.Tables([Ô]table1[Ô]).Rows(0).Item(1).ToString
Infos.txt_cidade.Text = Ds.Tables([Ô]table1[Ô]).Rows(0).Item(2).ToString

Catch ex As Exception
MsgBox([Ô]O Erro encontrado foi:[Ô] & vbCrLf & ex.Message)
Finally
Conn.Close()
End Try

End Sub



Até que abre, porém no primeiro acesso as caixas estão vazias... aí quando faço a 2ª busca, as caixas aparecem preenchidas com os resultados da 1ª busca e assim sucessivamente...
Quando deixo apenas o [Ô]Infos.Show()[Ô], funciona beleza, porém permite o acesso ao 1º Form...

alguém tem uma solução para isso ?
JONATHANSTECKER 03/02/2011 08:36:56
#364180
Resposta escolhida
    [ô] Passe esses dados como parâmetros para o form Infos
Public Sub BuscaID()
Dim vUser As String = InputBox([Ô]Informe o Nome do Usuário[Ô], [Ô]ATENÇÂO ![Ô], [Ô][Ô])
Dim Conn As OleDbConnection = New OleDbConnection([Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & Application.StartupPath & [Ô]\bd1.mdb[Ô])
Dim Da As OleDbDataAdapter = New OleDbDataAdapter([Ô]select * from table1 where Nome=[ô][Ô] & vUser & [Ô][ô][Ô], Conn)
Dim Ds As DataSet = New DataSet

Try
Conn.Open()
Da.Fill(Ds, [Ô]table1[Ô])

Dim ID As String = Ds.Tables([Ô]table1[Ô]).Rows(0).Item(0).ToString
Dim Nome As String = Ds.Tables([Ô]table1[Ô]).Rows(0).Item(1).ToString
Dim Cidade As String = Ds.Tables([Ô]table1[Ô]).Rows(0).Item(2).ToString

Dim Info As New Infos(ID, Nome, Cidade)
Info.ShowDialog()

Catch ex As Exception
MsgBox([Ô]O Erro encontrado foi:[Ô] & vbCrLf & ex.Message)
Finally
Conn.Close()
End Try

End Sub

Public Class Infos

[ô] No contrutor da classe adicione esses parâmetros
Public Sub New(ByVal pID As String, ByVal pNome As String, ByVal pCidade As String)
[ô] This call is required by the Windows Form Designer.
InitializeComponent()

[ô] Add any initialization after the InitializeComponent() call.
Me.lb_id.Text = pID
Me.txt_nome.Text = pNome
Me.txt_cidade.Text = pCidade
End Sub

[ô] Limpe os campos ao fechar o formulário
Private Sub Infos_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Me.lb_id.Text = String.Empty
Me.txt_nome.Text = String.Empty
Me.txt_cidade.Text = String.Empty
End Sub

End Class
MITSUEDA 03/02/2011 09:02:10
#364182
Ou limpe as caixas antes

Public Sub BuscaID()
Dim vUser As String = InputBox([Ô]Informe o Nome do Usuário[Ô], [Ô]ATENÇÂO ![Ô], [Ô][Ô])
Dim Conn As OleDbConnection = New OleDbConnection([Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & Application.StartupPath & [Ô]\bd1.mdb[Ô])
Dim Da As OleDbDataAdapter = New OleDbDataAdapter([Ô]select * from table1 where Nome=[ô][Ô] & vUser & [Ô][ô][Ô], Conn)
Dim Ds As DataSet = New DataSet

Try
Conn.Open()
Da.Fill(Ds, [Ô]table1[Ô])

Infos.lb_id.Text = [Ô][Ô]
Infos.txt_nome.Text = [Ô][Ô]
Infos.txt_cidade.Text = [Ô][Ô]

Infos.ShowDialog() [ô] Infos é o nome do 2º Form;

Infos.lb_id.Text = Ds.Tables([Ô]table1[Ô]).Rows(0).Item(0).ToString
Infos.txt_nome.Text = Ds.Tables([Ô]table1[Ô]).Rows(0).Item(1).ToString
Infos.txt_cidade.Text = Ds.Tables([Ô]table1[Ô]).Rows(0).Item(2).ToString

Catch ex As Exception
MsgBox([Ô]O Erro encontrado foi:[Ô] & vbCrLf & ex.Message)
Finally
Conn.Close()
End Try

End Sub
DANLEONHART 03/02/2011 20:12:01
#364289
@ MITSUEDA : => Não funcionou...

@ JONATHANSTECKER : => Nossa cara ! tudo isso só para apresentar um resultado de uma pesquisa em outro Form
fazia isso brincando no VB-6 ,
Mas valeu cara ! funcionou beleza
FOXMAN 03/02/2011 20:55:17
#364295
Tente alterar essa parte do seu código.

[txt-color=#e80000] Infos.ShowDialog() [ô] Infos é o nome do 2º Form;
Infos.lb_id.Text = Ds.Tables([Ô]table1[Ô]).Rows(0).Item(0).ToString
Infos.txt_nome.Text = Ds.Tables([Ô]table1[Ô]).Rows(0).Item(1).ToString
Infos.txt_cidade.Text = Ds.Tables([Ô]table1[Ô]).Rows(0).Item(2).ToString[/txt-color]

Por esta :

Dim f as Form
f= new infos
f.lb_id.text = bla.bla.bla.
f.txt_nome.text = bla.bla.bla
f.txt_cidade.text = bla.bla.lba.
f.showDialog()



MITSUEDA 03/02/2011 20:55:21
#364296
Tente assim então

Public Sub BuscaID()
Dim vUser As String = InputBox([Ô]Informe o Nome do Usuário[Ô], [Ô]ATENÇÂO ![Ô], [Ô][Ô])
Using conn As OleDbConnection = New OleDbConnection([Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & Application.StartupPath & [Ô]\bd1.mdb[Ô])
Try
conn.Open()

Dim sql As String = ([Ô]select * from table1 where Nome=[ô][Ô] & vUser & [Ô][ô][Ô])

Dim cmd As OleDbCommand = New OleDbCommand(sql, conn)

Dim Da As OleDbDataAdapter = New OleDbDataAdapter(cmd)

Dim dt As DataTable = New DataTable

Da.Fill(dt)

Infos.ShowDialog() [ô] Infos é o nome do 2º Form;

Infos.lb_id.Text = dt.Rows(0).Item(0).ToString
Infos.txt_nome.Text = dt.Rows(0).Item(1).ToString
Infos.txt_cidade.Text = dt.Rows(0).Item(2).ToString

Catch ex As Exception
MsgBox([Ô]O Erro encontrado foi:[Ô] & vbCrLf & ex.Message)
Finally
conn.Close()
End Try
End Using
End Sub
MITSUEDA 03/02/2011 20:58:41
#364297
Opa agora acho que entendi, o que você que é passar parametros para o 2 Form

Eu estava pensado que você estava querendo o contrario

Ai desse jeito que o Jonathan falou e o FoxMan resolve

Abraço
JONATHANSTECKER 03/02/2011 22:10:42
#364306
Desculpa discordar... mas não acho que seja [Ô]tudo isso[Ô], exitem N maneiras de se passar parâmetros, eu lhe apresentei uma delas. (E detalhado)
Este código abaixo é basicamente o mesmo que o seu, a única diferença é que no construtor do formulário Infos está sendo adicionado os parâmetros recebidos nos controles.

Public Sub BuscaID()
Dim vUser As String = InputBox([Ô]Informe o Nome do Usuário[Ô], [Ô]ATENÇÂO ![Ô], [Ô][Ô])
Dim Conn As OleDbConnection = New OleDbConnection([Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & Application.StartupPath & [Ô]\bd1.mdb[Ô])
Dim Da As OleDbDataAdapter = New OleDbDataAdapter([Ô]select * from table1 where Nome=[ô][Ô] & vUser & [Ô][ô][Ô], Conn)
Dim Ds As DataSet = New DataSet

Try
Conn.Open()
Da.Fill(Ds, [Ô]table1[Ô])

Dim Info As New Infos(Ds.Tables([Ô]table1[Ô]).Rows(0).Item(0).ToString, Ds.Tables([Ô]table1[Ô]).Rows(0).Item(1).ToString, Ds.Tables([Ô]table1[Ô]).Rows(0).Item(2).ToString)
Info.ShowDialog()

Catch ex As Exception
MsgBox([Ô]O Erro encontrado foi:[Ô] & vbCrLf & ex.Message)
Finally
Conn.Close()
End Try

End Sub

Public Class Infos
Public Sub New(ByVal pID As String, ByVal pNome As String, ByVal pCidade As String)
InitializeComponent()
Me.lb_id.Text = pID
Me.txt_nome.Text = pNome
Me.txt_cidade.Text = pCidade
End Sub
End Class


Obs.: Este código é exatamente o mesmo que eu havia postado anteriormente, porém mais simplificado.
DANLEONHART 03/02/2011 22:30:03
#364307
Pessoal, obrigado mesmo !

JONATHANSTECKER : Eu não reclamei não cara ! fiquei apenas surpreso com os detalhes que temos de ter para que o script rode beleza !

Obrigado a todos !
Tópico encerrado , respostas não são mais permitidas