Jump to content

Fazer aparecer numa label um valor do datagridview


kazzx

Recommended Posts

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,  😉

Link to comment
Share on other 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=

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other 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.

Link to comment
Share on other 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.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other 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..

Link to comment
Share on other 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.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other 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

Link to comment
Share on other 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

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other 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.

Link to comment
Share on other 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?

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.