• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

kazzx

Fazer aparecer numa label um valor do datagridview

17 mensagens neste tópico

viva de novo,

tenho dois formulários, onde num deles tenho um datagridview e um botão, noutro tenho apenas uma label.

sempre que eu clicar no botão é aparecido um novo campo no datagridview, seleccionado da BD.

a minha questão é: como faço para esse mesmo campo que apareceu no datagridview, aparecer também ao mesmo tempo na label do outro formulário.

cumps,  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quando dizes campo, referes-te a uma linha com uma coluna, correcto?

Basta aproveitares o dataadapter ou a datatable que preenches quando executas a query e retirares o valor da coluna zero na linha zero e dares directamente ao label.

Caso seja uma coluna de uma série delas, basta escolher a coluna que pretendes.

Como é para preencher algo numa label, estou a assumir que o teu resultado vem sempre como uma única linha.

Por exemplo, assumindo que não estás a criar instâncias do form2:

Form2.Label1.Text=

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é a row e coluna sim ..

portanto, quero que na label do outro formulário, apareça sempre a primeira row da primeira coluna do datagridview..

por exemplo, após o clique do botão apareceu "João" na row da primeira coluna do datagridview, esse mesmo 'João' terá de aparecer na label ..

tipo isso

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então basta o que eu te disse.

Ou até se quiseres, vais buscar o valor mesmo à datagrid. É como desejares.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É raro usar datagridview, mas penso que podes fazer algo do género:

Dim o_tal_valor as String = DGView.Rows(0).Cells(0).Value.ToString)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu ando para aqui a inventar e colocar isto:

 'Verificar se podemos adicionar mais um user aos postos
        If dgv1.Rows.Count - 1 = postos Then
            Beep()
            MsgBox("Todos os postos já se encontram ocupados.")
        Else
            'Tratar aqui de ir buscar o próximo
            'Dim cmd As OleDbCommand = conn.CreateCommand
            cmd.CommandText = "Select nome FROM espera"

            painel.Label1.Text = dgv1.Rows(0).Cells(0).Value.ToString

            leitor.Close()
            leitor = cmd.ExecuteReader()

            If leitor.Read() Then
                dgv1.Rows.Add(leitor("nome"), pst.Items(0), Format(DateAndTime.TimeSerial(Hour(Now), Minute(Now) + 30, Second(Now)), "hh:mm:ss"))
                Dim nome As String = leitor("nome")
                leitor.Close()
                'Eliminar o nome da tabela Espera
                cmd.CommandText = "delete FROM espera where nome='" & nome & "'"
                cmd.ExecuteNonQuery()
            Else
                Beep()
                MsgBox("Não existem pessoas em fila de espera.", MsgBoxStyle.Exclamation)
            End If
        End If 

há ali pelo meio do código qualquer coisa como:

  painel.Label1.Text = dgv1.Rows(0).Cells(0).Value.ToString 

está claramente incorrecto.

está incorrecto por várias razões.. não sei qual o método a atribuir, nem em que parte do código colocar :x

além disso dá-me erro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens de meter isso, obviamente, depois de lá teres os dados que pretendes, e não antes.

Eu não tinha a certeza do código que te dei, mas entretanto já testei e funcionou perfeitamente para uma datatable que dei ao datasource da datagridview.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

alterei a parte do código que dizia:

 If leitor.Read() Then
                dgv1.Rows.Add(leitor("nome"), pst.Items(0), Format(DateAndTime.TimeSerial(Hour(Now), Minute(Now) + 30, Second(Now)), "hh:mm:ss"))
                Dim nome As String = leitor("nome")
                leitor.Close()
                'Eliminar o nome da tabela Espera
                cmd.CommandText = "delete FROM espera where nome='" & nome & "'"
                cmd.ExecuteNonQuery()
            Else 

para:

 If leitor.Read() Then
                dgv1.Rows.Add(leitor("nome"), pst.Items(0), Format(DateAndTime.TimeSerial(Hour(Now), Minute(Now) + 30, Second(Now)), "hh:mm:ss"))
                painel.Label1.Text = dgv1.Rows(0).Cells(0).Value
                Dim nome As String = leitor("nome")
                leitor.Close()
                'Eliminar o nome da tabela Espera
                cmd.CommandText = "delete FROM espera where nome='" & nome & "'"
                cmd.ExecuteNonQuery()
            Else 

e na label já aparece alguma coisa, ou seja, aparece sempre o primeiro campo do datagridview.

agora, eu queria que sempre que clicasse no tal botão,  o nome que aparecesse na label desaparecesse e que aparecesse o novo nome do datagridview.. faço-me entender?

por exemplo: clico no botão e aparece 'João' no datagridview e por consequente na label, clico outra vez no botão e aparece 'Maria' no datagridview e ao mesmo tempo queria que desaparecesse o 'João' da label e aparecesse 'Maria' e por aí fora..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só tens de meter a tal linha sempre que a datagrid sofrer alterações.

Se queres um ponto de referência, deves meter essa linha depois dos CLOSE dos leitores.

Agora só tens de a espalhar para todos os sítios que causam alteração aos dados que vês na datagrid.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mas tipo, eu não posso colocar a linha porque há medida que clico no botão novas linhas são geradas no datagridview. faço-me entender?

por exemplo, clico no botão e na linha 0 aparece o 'João', por consequente na label.

torno a clicar no botão e na linha 1 aparece a 'Maria', já não aparece a 'Maria' na label.

no datagridview temos N nomes, cada um em linhas diferentes.

é tipo isto .. :x

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se há linhas diferentes tens de alterar o índice do Rows(indice).

Se a ideia é aparecer sempre o nome da última linha, acho que podes fazer alguma coisa do género:

DG.Rows(DG.Rows.Count-1)

ou seja:

painel.Label1.Text = dgv1.Rows(dgv1.Rows.Count-1).Cells(0).Value.ToString

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e coloco a seguir de quê?

ou entre que linhas do código (podes-me dizer olhando para o código que deixei em respostas anteriores)

é que assim como disseste não está a dar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No mesmo sítio onde está a outra.

"Não está a dar" é vago. Eu não tenho a certeza dessa síntaxe, mas a IDE dá uma ajudinha.

Qual é o erro?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

simplesmente não aparece nada na label, nada mesmo.

coloquei assim:

 If leitor.Read() Then
                dgv1.Rows.Add(leitor("nome"), pst.Items(0), Format(DateAndTime.TimeSerial(Hour(Now), Minute(Now) + 30, Second(Now)), "hh:mm:ss"))
                painel.Label1.Text = dgv1.Rows(dgv1.Rows.Count - 1).Cells(0).Value
                Dim nome As String = leitor("nome")
                leitor.Close()
                'painel.Label1.Text = dgv1.Rows(0).Cells(0).Value
                'Eliminar o nome da tabela Espera
                cmd.CommandText = "delete FROM espera where nome='" & nome & "'"
                cmd.ExecuteNonQuery()
            Else
                Beep()
                MsgBox("Não existem pessoas em fila de espera.", MsgBoxStyle.Exclamation)
            End If 

simplesmente nao aparece nada na label.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Parece-me tudo bem.

Excepto talvez isto: Se tiveres na tua datagridview, a linha de registo novo activa, terás de fazer

painel.Label1.Text = dgv1.Rows(dgv1.Rows.Count - 2).Cells(0).Value

Fora isso, deveria funcionar. Acabei de o testar.

Tens a certeza que o estás a chamar em todos os sítios que alterem os dados na datagrid?

0

Partilhar esta mensagem


Link 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