PASSAR VALOR PARA CAMPO DE UMA CELULA DO GRID

VINICIUSEROICO 12/08/2010 16:22:42
#350098
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
JONATHANSTECKER 12/08/2010 16:40:33
#350099
Resposta escolhida
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.
VINICIUSEROICO 12/08/2010 16:48:19
#350101
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...
JONATHANSTECKER 12/08/2010 16:54:56
#350103
é que escrevi errado.

Tente assim...
BaixaEmpenho(N)
VINICIUSEROICO 12/08/2010 16:59:42
#350104
estranho,continua o mesmo erro ainda
JONATHANSTECKER 12/08/2010 17:08:27
#350105

Veja esse modelo...
VINICIUSEROICO 13/08/2010 09:19:35
#350152
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
Tópico encerrado , respostas não são mais permitidas