| Mensagem : |
Tenho duas tabelas com as seguintes estruturas:
tbCaixa:
idCaixa-Data-idFormaPagamento-Descricao-Entrada-Saida
tbFormaPagamento:
idFormaPagamento-Descricao-Tipo
1 Cheque C
2 Pgto Forne D
3 Dinheiro C
E o seguinte código em vb.net:
Dim tipoPagamento as Char 'variável global
Private Sub carregaComboBox()
Dim formaPagamento = From f In bd.FormaPagamentos Select f
cboFormaPagamento.Items.Clear()
cboFormaPagamento.DataSource = formaPagamento.ToList
cboFormaPagamento.DisplayMember = "Descricao"
cboFormaPagamento.ValueMember = "idFormaPagamento"
End Sub
Private Sub carregaGrid()
Dim caixa = From c In bd.Caixas Select c.idCaixa, c.Data, c.idFormaPagamento, c.Descricao, c.Entrada, c.Saida
dgvCaixa.DataSource = caixa.ToList
End Sub
Private Sub btnSalvar_Click(sender As System.Object, e As System.EventArgs) Handles btnSalvar.Click
Dim caixa As New Caixa
With caixa
.Data = dtpDataLancamento.Value 'data
.idFormaPagamento = cboFormaPagamento.SelectedValue '3 (Cheque)
.Descricao = txtDescricao.Text 'descricao
If tipoPagamento = "C" Then
.Entrada = txtValor.Text 'se SelectedValue = 3 =>C
Else
.Saida = txtValor.Text 'se SelectedValue = 2 =>D
End If
End With
bd.Caixas.InsertOnSubmit(caixa)
bd.SubmitChanges()
carregaGrid()
End Sub
O trecho If Else deveria funcionar (se tipoPagamento for C, então Entrada recebe txtValor, senão Saida recebe txtValor), porém não funciona porque tipoPagamento é sempre C.
Gostaria de saber onde está o erro? Fiz esta consulta linq abaixo porém não funciona como eu gostaria.
Private Sub cboFormaPagamento_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cboFormaPagamento.SelectedIndexChanged
'consulta linq responsável em retornar o tipo de pagamento (C/D)
Dim formaPagamento = From f In bd.FormaPagamentos, c In bd.Caixas Where f.idFormaPagamento = c.idFormaPagamento Select f.idFormaPagamento, c.idFormaPagamento, f.Tipo, c.idCaixa
With formaPagamento.ToList.Item(0)
tipoPagamento = .Tipo.ToString
End With
End Sub |