Usuário com melhor resposta
Transferir informação entre formulários de uma mesma aplicação

Pergunta
-
Olá!
Não sei como se faz para transferir um dado de um formulário para outro? Alguém poderia me dar uma luz, dizendo-me como se faz isso?
Tenho um form1 que manipula uma tabela chamada Agenda, em que tenho um campo onde está o e-mail de cada contato. Em outra formulário (2), faço a interface para a definição do assunto, corpo do e-mail e arquivos anexos. No Form1 tenho um botão que chama o Form2 e é nesse ponto que gostaria que o e-mail do registro que está sendo visualizado na tela do Form1 fosse transferido para o destinatário do e-mail que vou escrever no Form2.
Bom, espero ter conseguido explicar minha dúvida.
Paulo Afonso
Respostas
-
O Form3 está fazendo alguma conexão com a base.
Pois se o seu form1 faz conexão e passa as informações para o form3 não teria sentido o form3 trazer informações da base.
No evento cmdBuscar_Click vc comentou que o mesmo não está filtrando certo ?
Tente colocar o "%" no final também.- Editado Ninho_Blink quinta-feira, 2 de maio de 2013 15:00 editando
- Marcado como Resposta Paulo Meireles quinta-feira, 2 de maio de 2013 17:17
-
Opa sempre, compartilhar conhecimento né ?! rsrs
Então geralmente eu faço assim:
Dim conn As New MySqlConnection 'Aqui tem que ser o do sql,pois fiz conexão com o do mysql
Dim myCommand As New MySqlCommand
Dim dS As MySqlDataReader
Dim palavra As String
conn.ConnectionString = "Sua String de Conexão"
'Passando o select e a conexão
myCommand = New MySqlCommand("Seu Select com a condição", conn)
conn.Open()
dS = myCommand.ExecuteReader
'dS.Read()
palavra = dS.GetString(0)
Return palavra
Qualquer coisa tem o link :
http://www.youtube.com/watch?v=guQPjwCh7VY
Vê se consegue com esse código, ai posta aqui
- Marcado como Resposta Paulo Meireles sexta-feira, 3 de maio de 2013 17:41
Todas as Respostas
-
-
Olá Ninho_Blink,
Obrigado por ajudar-me. Ocorre que foi exatamente isso que eu havia feito, veja como estava:
Private Sub Enviar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Enviar.Click
Dim MiForm3 As New Form3
MiForm3.EmailTextBox.Text = txtMail.Text
MiForm3.Show()
End SubVeja que o MiForm3.Show() utilizo para abrir o formulário (3), que é necessário para o preenchimento dos campos de assunto e corpo do e-mail que quero remeter.
Preenchi a base dos contatos com somente dois registros, de modo a tentar comprovar que o formulário (3) utilizava o segundo endereço de e-mail. Acontece que o endereço que aparece quando abro esse formulário, ao pressionar o botão enviar, que está dentro do formulário (1), é o endereço do primeiro registro de minha agenda, não o segundo.
Não entendo porquê isso acontece.
Paulo Afonso
- Editado Paulo Meireles sexta-feira, 26 de abril de 2013 15:41
-
-
Sim, no Fomr1 todos são textbox. Mas quando o conteúdo que está apresentado na tela pelo txtMail.Text o que aparece no campo EmailTextBox.Text do Form3 é a informação que está no primeiro registro da base. Exemplo: tenho dois registros: o primeiro com o e-mail paulo@meireles.com.br e o segundo com um e-mail inventado antonio@ppt.com.br. Quando estou sobre o segundo registro, onde me aparece no Form1 o nome completo do "Antônio" e o respectivo e-mail (inventado), ao chamar o Form3 pelo botão enviar, aparece-me no Form3, no campo EmailTextBox paulo@meireles.com.br.
O que estou fazendo de errado??
Valeu a força!
Paulo Afonso
-
-
Sim Ninho, estou puxando de uma base de dados. Explico:
A programação da agenda pessoal parte de uma base do Access, denominada "Schedule.mdb". Nela tenho três tabelas: (1) Agenda, (2) Emails e (3) Param_email. Na primeira tabela é onde se localizam os contatos cadastrados, na segunda, o histórico de e-mails e, na terceira, as informações necessárias para configuração do "servidor" de e-mail, que já está carregada com os dados de uma conta que criei no yahoo.com. Tenho um único relacionamento de um para muitos entre as tabelas (1) e (2).
No [settings] de meu projeto defini uma conexão com o nome de "new_conection" com a string correspondente = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\agenda_personal\WindowsApplication1\Schedule.mdb". O projeto contém quatro formulário, sendo o primeiro o de abertura e, ainda, de cadastro e manipulação dos dados de contatos da Agenda. Nos formulário 1, 2 e 4 estou usando um BindingSource, a partir de um DataSet pré-estabelecido. Como nos formulários dois e quatro, no Form1 tenho o navegador completo (BindingNavegator), contendo as funcionalidades de movimentação e, especialmente, inserção [+], exclusão [x] e "update" [Save]. No segundo formulário, como ele corresponde à tabela de parâmetros de configuração (3) e só poderá sempre ter um único registro, o "BindingNavegator" somente dispõe de uma funcionalidade update [Save]. Já no Form4, o BindingNavegator está vinculado a um DataGrid da tabela de e-mails, onde a inclusão deve acontecer automaticamente pelo envio de uma correspondência. Assim, o BindingNavegator não tem a funcionalidade de inserção.
O código relacionado ao Form1 é o seguinte:
Option Explicit On Imports System.Data.OleDb Public Class Form1 Inherits System.Windows.Forms.Form Dim validaciones As validarcampo = New validarcampo Public comprobaciones As Boolean = True Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.AgendaTableAdapter.Fill(Me.New_dataset.Agenda) End Sub Private Sub SaveToolStripButton_Click(sender As Object, e As System.EventArgs) Handles SaveToolStripButton.Click Me.AgendaBindingSource.EndEdit() Me.AgendaTableAdapter.Update(Me.New_dataset.Agenda) End Sub Private Sub CmdSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdSalir.Click Close() End Sub Private Sub Configurar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Configurar.Click Dim MiForm As New Form2 MiForm.Show() End Sub Private Sub Enviar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Enviar.Click Dim MiForm3 As New Form3 MiForm3.EmailTextBox.Text = txtMail.Text MiForm3.Show() End Sub Private Sub mem_email_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mem_email.Click Dim MiForm4 As New Form4 MiForm4.Show() End Sub Private Sub txtNombre_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtNombre.TextChanged comprobaciones = validaciones.validartxt(txtNombre.Text.Trim, True) If comprobaciones And txtNombre.Text <> "" Then Label6.Text = "Ok" Label6.BackColor = Color.Transparent Else Label6.Text = "Err" Label6.BackColor = Color.Red End If txtNombre.Focus() End Sub Private Sub txtApellido_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtApellido.TextChanged comprobaciones = validaciones.validartxt(txtApellido.Text.Trim, True) If comprobaciones And txtApellido.Text <> "" Then Label8.Text = "Ok" Label8.BackColor = Color.Transparent Else Label8.Text = "Err" Label8.BackColor = Color.Red End If txtApellido.Focus() End Sub Private Sub txtTelefono_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTelefono.TextChanged comprobaciones = validaciones.validarnmr(txtTelefono.Text.Trim, False) If comprobaciones And txtTelefono.Text <> "" Then Label12.Text = "Ok" Label12.BackColor = Color.Transparent Else Label12.Text = "Err" Label12.BackColor = Color.Red End If txtTelefono.Focus() End Sub Private Sub txtMail_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtMail.TextChanged comprobaciones = validaciones.validar_Mail(txtMail.Text.Trim) If comprobaciones And txtMail.Text <> "" Then Label13.Text = "Ok" Label13.BackColor = Color.Transparent Else Label13.Text = "Err" Label13.BackColor = Color.Red End If txtMail.Focus() End Sub Private Sub cmdBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBuscar.Click ' Essa rotina não está funcionando adequadamente, pois não resulta na atualização ' da tela com o registro filtrado!!! Dim NvDataView As DataView = AgendaBindingSource.DataSource NvDataView.Table = New_dataset.Tables("Agenda") Dim a As String a = ComboBox1.SelectedItem MessageBox.Show(a) If a = "Nombre" Then NvDataView.RowFilter = String.Format("Nombre LIKE '%'", txtBuscar.Text) ElseIf a = "Apellidos" Then NvDataView.RowFilter = String.Format("apellidos LIKE '%'", txtBuscar.Text) ElseIf a = "Teléfono" Then NvDataView.RowFilter = String.Format("telefono LIKE '%'", txtBuscar.Text) End If NvDataView.Table.AcceptChanges() End Sub End Class
Paulo Afonso
- Editado Paulo Meireles terça-feira, 30 de abril de 2013 14:00
-
O Form3 está fazendo alguma conexão com a base.
Pois se o seu form1 faz conexão e passa as informações para o form3 não teria sentido o form3 trazer informações da base.
No evento cmdBuscar_Click vc comentou que o mesmo não está filtrando certo ?
Tente colocar o "%" no final também.- Editado Ninho_Blink quinta-feira, 2 de maio de 2013 15:00 editando
- Marcado como Resposta Paulo Meireles quinta-feira, 2 de maio de 2013 17:17
-
Ninho,
Realmente tinhas razão quanto à questão da conexão na Form3. Tirei o BindingSource e o TableAdapter referente à tabela "Agenda" e o EmailTextBox.Text ficou carregado com o conteúdo do txtMail.Text do Form1.
Mas, em relação ao procedimento de busca, está me dando um erro (Unable to cast object of type 'Agenda.new_dataset' to type 'System.Data.DataView) vinculada a linha "Dim NvDataView As DataView = AgendaBindingSource.DataSource".
Private Sub cmdBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBuscar.Click Dim NvDataView As DataView = AgendaBindingSource.DataSource NvDataView.Table = New_dataset.Tables("Agenda") ' TENGO QUE CONSEGUIR BUSCAR POR EL COMBOBOX ' NvDataView.RowFilter = "Nombre LIKE '%" & txtBuscar.Text & "%'" Dim a As String a = ComboBox1.SelectedItem MessageBox.Show(a) If a = "Nombre" Then NvDataView.RowFilter = String.Format("Nombre LIKE '%'", txtBuscar.Text & "%'") ElseIf a = "Apellidos" Then NvDataView.RowFilter = String.Format("apellidos LIKE '%'", txtBuscar.Text & "%'") ElseIf a = "Teléfono" Then NvDataView.RowFilter = String.Format("telefono LIKE '%'", txtBuscar.Text & "%'") End If 'AgendaBindingSource.DataSource = NvDataView NvDataView.Table.AcceptChanges() End Sub
Paulo Afonso
-
-
Amigo, se tu não entendes, por mais que te aches ser um novato, imagina eu! Na verdade, eu só queria fazer uma busca no base para encontrar um determinado registro e, assim que encontrado, os textbox fossem atualizados com o conteúdo do registro achado!
Aliás, muito obrigado por toda a força que tens me dado até aqui.
Abraço,
Boa noite!
Paulo Afonso
-
Opa sempre, compartilhar conhecimento né ?! rsrs
Então geralmente eu faço assim:
Dim conn As New MySqlConnection 'Aqui tem que ser o do sql,pois fiz conexão com o do mysql
Dim myCommand As New MySqlCommand
Dim dS As MySqlDataReader
Dim palavra As String
conn.ConnectionString = "Sua String de Conexão"
'Passando o select e a conexão
myCommand = New MySqlCommand("Seu Select com a condição", conn)
conn.Open()
dS = myCommand.ExecuteReader
'dS.Read()
palavra = dS.GetString(0)
Return palavra
Qualquer coisa tem o link :
http://www.youtube.com/watch?v=guQPjwCh7VY
Vê se consegue com esse código, ai posta aqui
- Marcado como Resposta Paulo Meireles sexta-feira, 3 de maio de 2013 17:41
-
Ninho, obrigado pela força! O último comando acabei não utilizando, porque com o vídeo que sugerisses por último, acabei alterando a programação. Falta-me fazer alguns ajustes, mas assim que tiver tudo pronto, posto aqui o resultado final (se assim o quiseres). Obrigadão mais uma vez.
Paulo Afonso
-