Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

gastao

datagrid selecionar valor e carregar num outro form

Mensagens Recomendadas

gastao

Boa tarde,

bem a minha duvida é a seguinte, eu tenho um form onde tenho uma datagridview onde me aparecem os clientes na minha base de dados, o que eu quero fazer, é ao seleccionar um dos clientes ele me carregar esses dados num outro form desenhado para os clientes.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duduml

ah...ou seja, esses dados para um form onde tens textbox para o nome e coisas assim certo???

(eu não sou  grande coisa nisto, mas acho que posso ajudar  (mas tens de ter calma, sou lento lol) )

vou ver se tenho aqui um exemplo que sirva...:)

CUMPS


"use windows, você merece!"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duduml

Private Sub DataGridView1_CellDoubleClick(..) 'tens de ir ao evento dois cliques da datagrid
            Dim Nome_familia, cod_familia As String
            Nome_familia = DataGridView1.Rows(e.RowIndex).Cells(0).Value 'guardas os dados de cada coluna em vars
            cod_familia = DataGridView1.Rows(e.RowIndex).Cells(1).Value
            Dim form As New familia2 'abres o form onde tens os dados
            form.MdiParent = MDIParent1
            form.Show()
            form.Alterar(Nome_familia, cod_familia) 'passas para la os valoes....
end sub

espero ter ajudado....:)


"use windows, você merece!"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
gastao

ah...ou seja, esses dados para um form onde tens textbox para o nome e coisas assim certo???

(eu não sou  grande coisa nisto, mas acho que posso ajudar  (mas tens de ter calma, sou lento lol) )

vou ver se tenho aqui um exemplo que sirva...:)

CUMPS

tranquilo, vou ver se csg pegar no teu exemplo e fazer...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duduml

esqueci-me...

tens de por isto no form onde alteras os dados...

vars globais

Dim nome_familia_anterior, cod_familia_anterior As String

Sub Alterar(ByVal nome_familia As String, ByVal cod_familia As String)
        Nome_familiaTextBox.Text = nome_familia
        Cód_familiaTextBox.Text = cod_familia
        nome_familia_anterior = nome_familia
        cod_familia_anterior = cod_familia
    End Sub

desculpa-la..xD

abraço


"use windows, você merece!"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
gastao

eu no outro form tenho uma textbox1.text por exemplo como e q a vou preencher vindo dessa mesma datagrid... aquele codigo nao me tem nenhuma referencia ao form e a textbox ou ao proprio indice para eu prencher os restos dos campos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duduml

preenches como está esse código aí em cima...passar para la os valores...

depois quando tiveres isso, basta fazer o update...

tipo isto:

Dim adapter_familia As New BD_StocksDataSetTableAdapters.familiaTableAdapter
        Try
            adapter_familia.Update(Me.Nome_familiaTextBox.Text, Me.Cód_familiaTextBox.Text, _
                                   nome_familia_anterior, cod_familia_anterior)
            MsgBox("Registo alterado com sucesso!", MsgBoxStyle.Information, Me.Text)
        Catch ex As Exception
            MsgBox(ex.Message)
            Me.Cód_familiaTextBox.SelectAll()
            Me.Cód_familiaTextBox.Focus()
        End Try

PS: agora está o código todo...

põe as tuas duvidas e explico tudinho...:) xD

cumps


"use windows, você merece!"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
gastao

preenches como está esse código aí em cima...passar para la os valores...

depois quando tiveres isso, basta fazer o update...

tipo isto:

Dim adapter_familia As New BD_StocksDataSetTableAdapters.familiaTableAdapter
        Try
            adapter_familia.Update(Me.Nome_familiaTextBox.Text, Me.Cód_familiaTextBox.Text, _
                                   nome_familia_anterior, cod_familia_anterior)
            MsgBox("Registo alterado com sucesso!", MsgBoxStyle.Information, Me.Text)
        Catch ex As Exception
            MsgBox(ex.Message)
            Me.Cód_familiaTextBox.SelectAll()
            Me.Cód_familiaTextBox.Focus()
        End Try

PS: agora está o código todo...

põe as tuas duvidas e explico tudinho...:) xD

cumps

tipo eu fiz o codigo parecido meio adaptado como tu disses te, abro o form da datagrid e ao carregar numa das cells ele abre me sim o outro form, mas sem valores

pus da seguinte forma...

no form da datagrid

Private Sub DataGridView1_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick

        Dim idcliente As String

        idcliente = DataGridView1.Rows(e.RowIndex).Cells(0).Value 'guardas os dados de cada coluna em vars

        Dim cliente As New Cliente 'abres o form onde tens os dados

        cliente.MdiParent = MdiParent

        cliente.Show()

        '  cliente.Alterar(idcliente) 'passas para la os valoes....:P esta variavel disses te me para passar para aonde???

    End Sub

na form de preencher os datagrids

nao fiz nada

nao percebo e onde queres q meta

vars globais

Código (vb.net): [seleccione]

Dim nome_familia_anterior, cod_familia_anterior As String

Código (vb.net): [seleccione]

Sub Alterar(ByVal nome_familia As String, ByVal cod_familia As String)

        Nome_familiaTextBox.Text = nome_familia

        Cód_familiaTextBox.Text = cod_familia

        nome_familia_anterior = nome_familia

        cod_familia_anterior = cod_familia

    End Sub

meto num modulo???

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duduml

na form onde abres, os registos para alterar, antes da class começar crias as vars globais...

depois crias um procedimento para o qual passas as vars....

como isto:

Sub Alterar(ByVal nome_familia As String, ByVal cod_familia As String)
        Nome_familiaTextBox.Text = nome_familia
        Cód_familiaTextBox.Text = cod_familia
        nome_familia_anterior = nome_familia
        cod_familia_anterior = cod_familia
    End Sub

(aqui os dados passam para as tuas textbox e assim...

depois é o codigo que faz o update a BD...

CUMPS


"use windows, você merece!"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
gastao

ja csg por a passar os valores para o form, mas imagina a seguinte situaçao eu mando esses codigos para o form e a partir desse mesmo valor ele filtra me a informaçao para o cliente que quer!

fazer do genero algo assim...

con.Open()

            Dim cmd As New OleDbCommand("select * from cliente where nomecliente = '" & textbox1.text & "'", con)

            Dim drdr As OleDbDataReader

            drdr = cmd.ExecuteReader

            drdr.Read()

            ' TextBox1.Text = drdr.Item("IDCliente")

            TextBox2.Text = drdr.Item("nomecliente")

é que pelos vistos ele assume que o focus está vazio

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmaster

Tenta assim, que espero que resulte:

Dim cmd As New OleDbCommand("select * from cliente where nomecliente = '" & textbox1.text & "'", con)
Dim drdr As OleDbDataReader
drdr = cmd.ExecuteReader
While drdr.Read()
            TextBox1.Text = drdr.Item("IDCliente")
            TextBox2.Text = drdr.Item("nomecliente")
End While

Espero ter ajudado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
gastao

Tenta assim, que espero que resulte:

Dim cmd As New OleDbCommand("select * from cliente where nomecliente = '" & textbox1.text & "'", con)
Dim drdr As OleDbDataReader
drdr = cmd.ExecuteReader
While drdr.Read()
            TextBox1.Text = drdr.Item("IDCliente")
            TextBox2.Text = drdr.Item("nomecliente")
End While

Espero ter ajudado

esta me a dar a mesma situação, "select * from cliente where idcliente = ''" diz me q o meu select está vazio e o valor vem passado de outro form,,,

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vbtipo

Tens que utilizar variáveis públicas ou globais senão as variáveis vão em branco.


Lema: Se eu não saber de alguma coisa não se preocupem porque tento sempre ajudar alguma coisita, nem que seja, por palpites/sugestões.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
gastao

esqueci-me...

tens de por isto no form onde alteras os dados...

vars globais

Dim nome_familia_anterior, cod_familia_anterior As String

meti a variavel global num modulo e nao me funciona ele ta me a passar o valor sempre a ""   

Public nome_familia_anterior As String

Sub Alterar(ByVal nome_familia As String, ByVal cod_familia As String)
        Nome_familiaTextBox.Text = nome_familia
        Cód_familiaTextBox.Text = cod_familia
        nome_familia_anterior = nome_familia
        cod_familia_anterior = cod_familia
    End Sub

desculpa-la..xD

abraço

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
gastao

tenho um modulo onde pus aquela variavel!

Module Module1
    Public nome_familia_anterior, cod_familia_anterior As String
end module

De seguida fui ao form onde tenho a datagrid e onde quero seleccionar o indice da datagrid para me passar o valor para o outro form para ele carregar toda a informação referente ao desejavel e fiz da seguinte forma:

Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
        Dim Nome_familia As String
        Nome_familia = DataGridView1.Rows(e.RowIndex).Cells(0).Value 'guardas os dados de cada coluna em vars
        Dim form As New Cliente 'abres o form onde tens os dados
        form.MdiParent = MdiParent
        form.Show()
        form.Alterar(Nome_familia) 'passas para la os valoes....
    End Sub

de seguida no form onde ele vai carregar a informação desejada fiz:

Public Sub Alterar(ByVal nome_familia As String)
        TextBox1.Text = nome_familia
        nome_familia_anterior = nome_familia
    End Sub

Ele carrega me o indiice da textbox1 com valor mas so visivel, porque eu agora quero carregar a informaçao da seguinte forma e nao da que fiz desta forma:

'con.Open()
        'Dim cmd As New OleDbCommand("select * from cliente where idcliente = '" & TextBox1.Text & "'", con)
        'Dim drdr As OleDbDataReader
        'drdr = cmd.ExecuteReader
        'While drdr.Read()
        '    TextBox1.Text = drdr.Item("idcliente")
        '    TextBox2.Text = drdr.Item("nomecliente")
        'End While
        'con.Close()

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duduml

em vez de pores

Dim cmd As New OleDbCommand("select * from cliente where idcliente = '" & TextBox1.Text & "'", con)

põe assim:

Dim cmd As New OleDbCommand("select * from cliente where idcliente = '" & nome_familia & "'", con)

CUMPS


"use windows, você merece!"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
gastao

em vez de pores

Dim cmd As New OleDbCommand("select * from cliente where idcliente = '" & TextBox1.Text & "'", con)

põe assim:

Dim cmd As New OleDbCommand("select * from cliente where idcliente = '" & nome_familia & "'", con)

CUMPS

dessa maneira o meu select ja me passa com valor mas continua me a dar erro e continua a me nao me preencher os restantes campos...

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.