PASSAR VALOR PARA CAMPO DE UMA CELULA DO GRID
Opa pessoal blz,
to com uma duvida meio chata aqui, eu tenho um grid com onde em cada linha do grid eu tenho um checkbox,pois a ideia é que o usuario selecione os produtos que deseja baixar (pode ser apenas um só,como varios), até ai blz,consigo fazer ele percorrer todas as linhas do grid e verificar se o checkbox esta checado ou nao,porem para cada linha que ele percorre e confirma que esta checado eu passo os valores da linha para as variaveis e depois salvar no banco o registro comparando pelo seu ID,
meu problema esta sendo que nao estou achando uma forma de ele passar o valor para as variaveis depois que ele ja percorreu uma linha checada,pois em algumas variaveis estou passando o valor da linha corrente e ele atribui o valor anterior que estava checado e que conseguiu salvar.
nao sei se deu pra entender direito,aqui ta o codigo,eu fiz a chamada das linhas no botao,e a parte das variaveis em uma função.
Private Sub totbntAlterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles totbntAlterar.Click
If (MessageBox.Show([Ô]Deseja fazer a baixa dos itens?[Ô], [Ô]ATENÇÃO[Ô], MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.No) Then Exit Sub
frmBaixaEmpenho.ShowDialog()
[ô]Percorre as linhas do grid e verifica quais estao com o campo ticado para baixar
For Each Row As DataGridViewRow In dgvDados.Rows
dgvDados.ReadOnly = True
If Row.Cells(0).Value = True Then
[ô]Chama a função que faz a baixa do empenho
BaixaEmpenho()
End If
Next
MessageBox.Show([Ô]Empenho Baixado com sucesso[Ô], Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information)
CarregaGridCombo()
End Sub
[ô]-------------- AQUI é A FUNÇÃO -----------------------
Private Function BaixaEmpenho()
Dim clnProduto As New DllEngenharia.clnProduto
clnProduto.PROD_ID = dgvDados.CurrentRow.Cells(2).Value
Dim cldBaixaEmpenho As New DllEngenharia.clnEmpenho
With cldBaixaEmpenho
.Emp_ID = dgvDados.CurrentRow.Cells(1).Value
.EMP_CLIENTE = dgvDados.CurrentRow.Cells(5).Value
.clnProduto = clnProduto
.EMP_QTDE = dgvDados.CurrentRow.Cells(6).Value
.EMP_PEDIDO = dgvDados.CurrentRow.Cells(4).Value
.EMP_STATUS = [Ô]ENCERRADO[Ô]
.EMP_NRONF = nronf
.EMP_DATABAIXA = databaixaempenho
.EMP_DT_ALT = Date.Now.ToString([Ô]yyyy-MM-dd hh:mm:ss.fff[Ô])
.EMP_USU_ALT = frmLogin.cbxUsuario.Text
End With
cldBaixaEmpenho.Alterar()
End Function
to com uma duvida meio chata aqui, eu tenho um grid com onde em cada linha do grid eu tenho um checkbox,pois a ideia é que o usuario selecione os produtos que deseja baixar (pode ser apenas um só,como varios), até ai blz,consigo fazer ele percorrer todas as linhas do grid e verificar se o checkbox esta checado ou nao,porem para cada linha que ele percorre e confirma que esta checado eu passo os valores da linha para as variaveis e depois salvar no banco o registro comparando pelo seu ID,
meu problema esta sendo que nao estou achando uma forma de ele passar o valor para as variaveis depois que ele ja percorreu uma linha checada,pois em algumas variaveis estou passando o valor da linha corrente e ele atribui o valor anterior que estava checado e que conseguiu salvar.
nao sei se deu pra entender direito,aqui ta o codigo,eu fiz a chamada das linhas no botao,e a parte das variaveis em uma função.
Private Sub totbntAlterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles totbntAlterar.Click
If (MessageBox.Show([Ô]Deseja fazer a baixa dos itens?[Ô], [Ô]ATENÇÃO[Ô], MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.No) Then Exit Sub
frmBaixaEmpenho.ShowDialog()
[ô]Percorre as linhas do grid e verifica quais estao com o campo ticado para baixar
For Each Row As DataGridViewRow In dgvDados.Rows
dgvDados.ReadOnly = True
If Row.Cells(0).Value = True Then
[ô]Chama a função que faz a baixa do empenho
BaixaEmpenho()
End If
Next
MessageBox.Show([Ô]Empenho Baixado com sucesso[Ô], Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information)
CarregaGridCombo()
End Sub
[ô]-------------- AQUI é A FUNÇÃO -----------------------
Private Function BaixaEmpenho()
Dim clnProduto As New DllEngenharia.clnProduto
clnProduto.PROD_ID = dgvDados.CurrentRow.Cells(2).Value
Dim cldBaixaEmpenho As New DllEngenharia.clnEmpenho
With cldBaixaEmpenho
.Emp_ID = dgvDados.CurrentRow.Cells(1).Value
.EMP_CLIENTE = dgvDados.CurrentRow.Cells(5).Value
.clnProduto = clnProduto
.EMP_QTDE = dgvDados.CurrentRow.Cells(6).Value
.EMP_PEDIDO = dgvDados.CurrentRow.Cells(4).Value
.EMP_STATUS = [Ô]ENCERRADO[Ô]
.EMP_NRONF = nronf
.EMP_DATABAIXA = databaixaempenho
.EMP_DT_ALT = Date.Now.ToString([Ô]yyyy-MM-dd hh:mm:ss.fff[Ô])
.EMP_USU_ALT = frmLogin.cbxUsuario.Text
End With
cldBaixaEmpenho.Alterar()
End Function
Se você passar a linha como parametro?
Veja se funciona...
Private Sub totbntAlterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles totbntAlterar.Click
If (MessageBox.Show([Ô]Deseja fazer a baixa dos itens?[Ô], [Ô]ATENÇÃO[Ô], MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.No) Then Exit Sub
frmBaixaEmpenho.ShowDialog()
dgvDados.ReadOnly = True
[ô]Percorre as linhas do grid e verifica quais estao com o campo ticado para baixar
For N As Integer = 0 To Me.dgvDados.Rows.Count -1
If Me.dgvDados.Rows(N).Cells(0).Value = True Then
[ô]Chama a função que faz a baixa do empenho
BaixaEmpenho(Me.dgvDados.CurrentRow.Index)
End If
Next
MessageBox.Show([Ô]Empenho Baixado com sucesso[Ô], Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information)
CarregaGridCombo()
End Sub
Private Function BaixaEmpenho(ByVal RowIndex as Integer)
Dim clnProduto As New DllEngenharia.clnProduto
clnProduto.PROD_ID = dgvDados.CurrentRow.Cells(2).Value
Dim cldBaixaEmpenho As New DllEngenharia.clnEmpenho
With cldBaixaEmpenho
.Emp_ID = dgvDados.Rows(RowIndex).Cells(1).Value
.EMP_CLIENTE = dgvDados.Rows(RowIndex).Cells(5).Value
.clnProduto = clnProduto
.EMP_QTDE = dgvDados.Rows(RowIndex).Cells(6).Value
.EMP_PEDIDO = dgvDados.Rows(RowIndex).Cells(4).Value
.EMP_STATUS = [Ô]ENCERRADO[Ô]
.EMP_NRONF = nronf
.EMP_DATABAIXA = databaixaempenho
.EMP_DT_ALT = Date.Now.ToString([Ô]yyyy-MM-dd hh:mm:ss.fff[Ô])
.EMP_USU_ALT = frmLogin.cbxUsuario.Text
End With
cldBaixaEmpenho.Alterar()
End Function
Obs.: Não testei... Mas acredito que assim funcione.
- Atualizado por erro de digitação.
Veja se funciona...
Private Sub totbntAlterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles totbntAlterar.Click
If (MessageBox.Show([Ô]Deseja fazer a baixa dos itens?[Ô], [Ô]ATENÇÃO[Ô], MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.No) Then Exit Sub
frmBaixaEmpenho.ShowDialog()
dgvDados.ReadOnly = True
[ô]Percorre as linhas do grid e verifica quais estao com o campo ticado para baixar
For N As Integer = 0 To Me.dgvDados.Rows.Count -1
If Me.dgvDados.Rows(N).Cells(0).Value = True Then
[ô]Chama a função que faz a baixa do empenho
BaixaEmpenho(Me.dgvDados.CurrentRow.Index)
End If
Next
MessageBox.Show([Ô]Empenho Baixado com sucesso[Ô], Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information)
CarregaGridCombo()
End Sub
Private Function BaixaEmpenho(ByVal RowIndex as Integer)
Dim clnProduto As New DllEngenharia.clnProduto
clnProduto.PROD_ID = dgvDados.CurrentRow.Cells(2).Value
Dim cldBaixaEmpenho As New DllEngenharia.clnEmpenho
With cldBaixaEmpenho
.Emp_ID = dgvDados.Rows(RowIndex).Cells(1).Value
.EMP_CLIENTE = dgvDados.Rows(RowIndex).Cells(5).Value
.clnProduto = clnProduto
.EMP_QTDE = dgvDados.Rows(RowIndex).Cells(6).Value
.EMP_PEDIDO = dgvDados.Rows(RowIndex).Cells(4).Value
.EMP_STATUS = [Ô]ENCERRADO[Ô]
.EMP_NRONF = nronf
.EMP_DATABAIXA = databaixaempenho
.EMP_DT_ALT = Date.Now.ToString([Ô]yyyy-MM-dd hh:mm:ss.fff[Ô])
.EMP_USU_ALT = frmLogin.cbxUsuario.Text
End With
cldBaixaEmpenho.Alterar()
End Function
Obs.: Não testei... Mas acredito que assim funcione.
- Atualizado por erro de digitação.
na verdade desse jeito ele da erro na parte:
BaixaEmpenho(Me.dgvDados.CurrentRow.Index)
ele fala que são muitos argumentos para a função...
BaixaEmpenho(Me.dgvDados.CurrentRow.Index)
ele fala que são muitos argumentos para a função...
é que escrevi errado.
Tente assim...
BaixaEmpenho(N)
Tente assim...
BaixaEmpenho(N)
estranho,continua o mesmo erro ainda
Veja esse modelo...
Jonathan, consegui fazer funcionar ,de uma maneira um poco diferente mas interessante tbm....valeu pela ajuda...
Private Sub totbntAlterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles totbntAlterar.Click
If (MessageBox.Show([Ô]Deseja fazer a baixa dos itens?[Ô], [Ô]ATENÇÃO[Ô], MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.No) Then Exit Sub
frmBaixaEmpenho.ShowDialog()
[ô]Percorre as linhas do grid e verifica quais estao com o campo ticado para baixar
Dim i As Integer
For i = 0 To dgvDados.RowCount - 1
dgvDados.ReadOnly = True
If dgvDados.Rows(i).Cells(0).Value = True Then
[ô]Chama a função que faz a baixa do empenho
Dim clnProduto As New DllEngenharia.clnProduto
clnProduto.PROD_ID = dgvDados.Rows(i).Cells(2).Value
Dim cldBaixaEmpenho As New DllEngenharia.clnEmpenho
With cldBaixaEmpenho
.Emp_ID = dgvDados.Rows(i).Cells(1).Value
.EMP_CLIENTE = dgvDados.Rows(i).Cells(5).Value
.clnProduto = clnProduto
.EMP_QTDE = dgvDados.Rows(i).Cells(6).Value
.EMP_PEDIDO = dgvDados.Rows(i).Cells(4).Value
.EMP_STATUS = [Ô]ENCERRADO[Ô]
.EMP_NRONF = nronf
.EMP_DATABAIXA = databaixaempenho
.EMP_DT_ALT = Date.Now.ToString([Ô]yyyy-MM-dd hh:mm:ss.fff[Ô])
.EMP_USU_ALT = frmLogin.cbxUsuario.Text
End With
cldBaixaEmpenho.Alterar()
End If
Next
MessageBox.Show([Ô]Empenho Baixado com sucesso[Ô], Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information)
CarregaGridCombo()
End Sub
Private Sub totbntAlterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles totbntAlterar.Click
If (MessageBox.Show([Ô]Deseja fazer a baixa dos itens?[Ô], [Ô]ATENÇÃO[Ô], MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.No) Then Exit Sub
frmBaixaEmpenho.ShowDialog()
[ô]Percorre as linhas do grid e verifica quais estao com o campo ticado para baixar
Dim i As Integer
For i = 0 To dgvDados.RowCount - 1
dgvDados.ReadOnly = True
If dgvDados.Rows(i).Cells(0).Value = True Then
[ô]Chama a função que faz a baixa do empenho
Dim clnProduto As New DllEngenharia.clnProduto
clnProduto.PROD_ID = dgvDados.Rows(i).Cells(2).Value
Dim cldBaixaEmpenho As New DllEngenharia.clnEmpenho
With cldBaixaEmpenho
.Emp_ID = dgvDados.Rows(i).Cells(1).Value
.EMP_CLIENTE = dgvDados.Rows(i).Cells(5).Value
.clnProduto = clnProduto
.EMP_QTDE = dgvDados.Rows(i).Cells(6).Value
.EMP_PEDIDO = dgvDados.Rows(i).Cells(4).Value
.EMP_STATUS = [Ô]ENCERRADO[Ô]
.EMP_NRONF = nronf
.EMP_DATABAIXA = databaixaempenho
.EMP_DT_ALT = Date.Now.ToString([Ô]yyyy-MM-dd hh:mm:ss.fff[Ô])
.EMP_USU_ALT = frmLogin.cbxUsuario.Text
End With
cldBaixaEmpenho.Alterar()
End If
Next
MessageBox.Show([Ô]Empenho Baixado com sucesso[Ô], Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information)
CarregaGridCombo()
End Sub
Tópico encerrado , respostas não são mais permitidas