none
Insert para mais de 1 registro RRS feed

  • Pergunta

  • Alguém tem alguma sugestão para o seguinte problema com Insert?

    se escolher a opção 1 tenho uma data de pagto (lblDataPgto1) e consequentemente um registro, agora se escolher outras opção de um RadioButtonList terei mais de uma data de pagto então terei mais de um registro que varia até 6. Abaixo o comando VB:

    Protected Sub rblQuantasVezes_SelectedIndexChanged(sender As Object, e As EventArgs) Handles rblQuantasVezes.SelectedIndexChanged
            If rblQuantasVezes.Text = "1" Then
                lblDataPgto1.Visible = True
                lblDataPgto2.Visible = False
                lblDataPgto3.Visible = False
                lblDataPgto4.Visible = False
                lblDataPgto5.Visible = False
                lblDataPgto6.Visible = False
            ElseIf rblQuantasVezes.Text = "2" Then
                lblDataPgto1.Visible = True
                lblDataPgto2.Visible = True
                lblDataPgto3.Visible = False
                lblDataPgto4.Visible = False
                lblDataPgto5.Visible = False
                lblDataPgto6.Visible = False
            ElseIf rblQuantasVezes.Text = "3" Then
                lblDataPgto1.Visible = True
                lblDataPgto2.Visible = True
                lblDataPgto3.Visible = True
                lblDataPgto4.Visible = False
                lblDataPgto5.Visible = False
                lblDataPgto6.Visible = False
            ElseIf rblQuantasVezes.Text = "4" Then
                lblDataPgto1.Visible = True
                lblDataPgto2.Visible = True
                lblDataPgto3.Visible = True
                lblDataPgto4.Visible = True
                lblDataPgto5.Visible = False
                lblDataPgto6.Visible = False
            ElseIf rblQuantasVezes.Text = "5" Then
                lblDataPgto1.Visible = True
                lblDataPgto2.Visible = True
                lblDataPgto3.Visible = True
                lblDataPgto4.Visible = True
                lblDataPgto5.Visible = True
                lblDataPgto6.Visible = False
            ElseIf rblQuantasVezes.Text = "6" Then
                lblDataPgto1.Visible = True
                lblDataPgto2.Visible = True
                lblDataPgto3.Visible = True
                lblDataPgto4.Visible = True
                lblDataPgto5.Visible = True
                lblDataPgto6.Visible = True
            End If
        End Sub


    Private Sub inserir()    

            Dim conecte As New OleDbConnection
            conecte.ConnectionString = My.Settings.SIADSConecte
            Try
                conecte.Open()
            Catch ex As System.Data.OleDb.OleDbException
                Label3.Text = "Erro de conexao com o Banco de Dados: " & ex.Message.ToString
                Return
            End Try
            Dim selcom As New System.Data.OleDb.OleDbCommand
            selcom.Connection = conecte
            selcom.CommandText = "INSERT INTO tb_Finan_Lancamentos (cod_Pl,cod_Origem,data_Lanc,data_Pagto,valor1,valor2,valor3,cod_Destino,historico)" & _
                                 " VALUES(@cod_PlanoContasResumo,@cod_Origem,@data_Lancamento,@data_Pagto,@valor_Receita_Corrente,@valor_Despesa_Corrente,@valor_Aplicacao,@cod_Destino,@historico)"
            selcom.Parameters.Clear()
            selcom.Parameters.Add("@cod_Pl", OleDbType.Integer).Value = Convert.ToInt32(rblLanc.SelectedValue)
            selcom.Parameters.Add("@cod_Origem", OleDbType.Integer).Value = Convert.ToInt32(ddlFormaPagto.SelectedValue)
            Dim data_Lanc As DateTime
            data_Lanc = Convert.ToDateTime(txtDataDespesa.Text)
            selcom.Parameters.Add(New OleDbParameter("@data_Lanc", data_Lanc))
            Dim data_Pagto As DateTime
            data_Pagto = Convert.ToDateTime(lblDataPgto1.Text)
            selcom.Parameters.Add(New OleDbParameter("@dataNascPac", data_Pagto))
            selcom.Parameters.Add("@valor1", OleDbType.Currency).Value = String.Format("{0:c}", Val(txtValor1.Text.Replace(",", ",")))
            selcom.Parameters.Add("@valor2", OleDbType.Currency).Value = String.Format("{0:c}", Val(txtValor2.Text.Replace(",", ",")))
            selcom.Parameters.Add("@valor3", OleDbType.Currency).Value = String.Format("{0:c}", Val(txtValor3.Text.Replace(",", ",")))
            selcom.Parameters.Add("@cod_Destino", OleDbType.Integer).Value = Convert.ToInt32(ddlDestinoDespesa.SelectedValue)
            selcom.Parameters.Add("@historico", OleDbType.WChar).Value = txtHistoricoDespesa.Text

            Dim teste As Boolean
            Try
                teste = selcom.ExecuteNonQuery
            Catch ex As System.Data.OleDb.OleDbException
                Label5.Text = "Erro: " & ex.Message.ToString
                Return
            End Try
            conecte.Close()
            Label4.Text = "Registro inserido e gravado"
            ddlFormaPagto.Focus()
            cargaGrid()
        End Sub

    domingo, 7 de outubro de 2012 14:28

Respostas

Todas as Respostas

  • Para de repetir teu post. 

    domingo, 7 de outubro de 2012 14:30
  • qual e o teu problema? 

    so existe uma problema no teu codigo, voce a abre a conecao depois diz que se existir erro mostar. certo. depois tem codigo, ele vai executar este codigo....

    Eu nao uso muito vb, mais esta mal a tua logica...


    http://malange-levi.blogspot.co.uk/

    domingo, 7 de outubro de 2012 21:49
    Moderador
  • Malange - Levi,

    também não entendi a sua dúvida. Desculpe-me se não fui claro.

    Acredito ser simples o meu problema, apenas ainda não me deparei com esta situação com um Insert para mais de um registro.

    Pense em inserir uma compra com um cartão de crédito pago em mais de 1 parcela, onde ele retorna com a data das parcelas em label(s).

    Observe que com um radiobutonlist eu faço a escolha do número de parcelas.

    O código do Insert tem um erro, altere-se de:

    selcom.Parameters.Add(New OleDbParameter("@dataNascPac", data_Pagto))

    Para:

    selcom.Parameters.Add(New OleDbParameter("@data_Pagto", data_Pagto))

    domingo, 7 de outubro de 2012 22:29
  • Malange - Levi,

    também não entendi a sua dúvida. Desculpe-me se não fui claro.

    Acredito ser simples o meu problema, apenas ainda não me deparei com esta situação com um Insert para mais de um registro.

    Pense em inserir uma compra com um cartão de crédito pago em mais de 1 parcela, onde ele retorna com a data das parcelas em label(s).

    Observe que com um radiobutonlist eu faço a escolha do número de parcelas.

    O código do Insert tem um erro, altere-se de:

    selcom.Parameters.Add(New OleDbParameter("@dataNascPac", data_Pagto))

    Para:

    selcom.Parameters.Add(New OleDbParameter("@data_Pagto", data_Pagto))


    Há alguma sugestão para postar mais adequadamente a duvida VB?
    Qual a lógica adequada para estes casos? seria uma situação para criar juntamente If ElseIf EndIf com uma Sub para cada parcela com um Insert?
    • Editado Wilson Boris segunda-feira, 8 de outubro de 2012 10:36 complemento
    segunda-feira, 8 de outubro de 2012 00:14
  • Olá Wilson

    Pelo que entendi seria mais ou menos como gerar parcelas à pagar, correto?

    No link abaixo tem um exemplo de como gerar parcelas e adicioná-las em um datagridview usando laço FOR, dê uma olhada e adapte a sua necessidade, com certeza irá otimizar muito o seu código.

    http://www.portugal-a-programar.pt/topic/46471-gerar-parcelas-em-data-grid/

    Att.,

    Jeimes

    "Caso a resposta seja útil, marque como resposta."

    • Marcado como Resposta Wilson Boris segunda-feira, 8 de outubro de 2012 13:46
    segunda-feira, 8 de outubro de 2012 12:46
  • Jeimes você é 100%, a referência é excelente, muito obrigado gigante.
    segunda-feira, 8 de outubro de 2012 13:46