Ir para conteúdo
Fórum Script Brasil
  • 0

Contas a receber


Jhowcs

Pergunta

bom estou com problema em gravar no contas a receber, na tabela do banco de dados firebird eu vou gravar o seguinte:

codigocli, nomecli, codigoven, codigovenda, datavenda, parcela, datavenct, valorparcela, valortotal.

meu código é esse

If cboFormaPagto.ListIndex <> 0 Then
        parcela = Round(total / CInt(cboParcelas.Text), 2)
        diferenca = total - parcela * CInt(cboParcelas.Text)
        Vencto = Now()
For x = 1 To CInt(cboParcelas.Text)

    frase = "INSERT INTO contasreceber (Codigocli, Nomecli,Codigoven,Codigovenda, Datavenda, parcela, datavenct, valorparcela, ValorTotal)"
     
    
    frase = frase & "VALUES(" & txtCodigo.Text & ","
    frase = frase & "'" & txtNome.Text & "',"
    frase = frase & "" & txtCodigoven.Text & ","
    frase = frase & "" & txtCodigoVenda.Text & ","
    frase = frase & "'" & mskDatavenda.Text & "',"
    frase = frase & "" & x & ","
    frase = frase & "'" & Format(Vencto, "dd/mm/yyyy") & "',"
        If x = 1 Then
            frase = frase & "" & parcela + diferenca & ","
        Else
            frase = frase & "" & parcela & ","
        End If
            frase = frase & "" & total & ")"
            Vencto = DateAdd("m", 1, Vencto)
Next x
End If
Con.Execute (frase)

só que o jeito que está gravando está errado e não estou conseguindo consertar... está assim exemplo:

codigocli=1, nomecli=Jonathan, codigoven=1, codigovenda=1, datavenda=11/12/2008, parcela3, datavenct=11/02/2009, valorparcela=30, valortotal=90

eu quero que grave assim:

codigocli=1, nomecli=Jonathan, codigoven=1, codigovenda=1, datavenda=11/12/2008, parcela=1, datavenct=11/12/2008, valorparcela=30, valortotal=90

codigocli=1, nomecli=Jonathan, codigoven=1, codigovenda=1, datavenda=11/12/2008, parcela=2, datavenct=11/01/2009, valorparcela=30, valortotal=90

codigocli=1, nomecli=Jonathan, codigoven=1, codigovenda=1, datavenda=11/12/2008, parcela=3, datavenct=11/02/2009, valorparcela=30, valortotal=90

me ajudem por favor!!!

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

você tem q executar a cada vez. você ta montando a string, ai chega no final do for, você não faz nd, ele volta e comeca a montar a otra string. ai na ultima vez, ele sai ca string montada e depois disso sim ta o execute la. ou seja, ele so vai executar a ultima mesmo.

se você quer q executa as tres, tem q executar dentro do for.

Link para o comentário
Compartilhar em outros sites

  • 0

Kuroi de certo obrigado!!!!!

Só que eu cai em outro problema, se por exemplo o valor de cada parcela for 19,73 dá erro por causa da vírgula.

Esse erro quando eu dou debug

INSERT INTO contasreceber (Codigocli, Nomecli,Codigoven,Codigovenda, Datavenda, parcela, datavenct, valorparcela, ValorTotal)VALUES(4,'ADRIANA CÁSSIA',5,8,'08/12/2008',1,'12/12/2008',19,34,58)

perceba que no valor da parcela está 19,34 ou seja eu tenho quase certeza que essa vírgula tá dando erro...

Obrigado você tem me ajudado muito!!!

Link para o comentário
Compartilhar em outros sites

  • 0

ai o numero com virgula tem q ser com ponto. tipo grave 19.34 em vez de 19,34.

usa replace pra tirar a virgula.

exemplo, se x for uma variavel double com o valor 19,34:

Replace(CStr(x), ",", ".")

em relacao ao q você pergunto, me formei no tecnico em 2003.

e agora to sem trampo, mas trabalhei uns 2 anos e poco com o visual basic 6.

Link para o comentário
Compartilhar em outros sites

  • 0

Kuroi inde eu uso esse Replace?

Private Sub cmdFechamento_Click()
Dim x As Integer
Dim total, parcela, diferenca As Double
Dim Vencto As Date

total = 0
parcela = 0

For x = 1 To (GridProdutos.Rows - 1)

'gravando na tabela vendas

    frase = "INSERT INTO Vendas (Codigocli,Codigoven,Codigovenda, Datavenda, CodigoProduto, ValorUnit, Qtde, ValorTotal, FormaPagto, QtdeParcelas)"
    frase = frase & "VALUES(" & txtCodigo.Text & ","
    
    frase = frase & "" & txtCodigoven.Text & ","
    frase = frase & "" & txtCodigoVenda.Text & ","
    frase = frase & "'" & mskDatavenda.Text & "',"
    frase = frase & "" & GridProdutos.TextMatrix(GridProdutos.Rows - x, 1) & ","    'Codigo Produto
    frase = frase & "" & CCur(GridProdutos.TextMatrix(GridProdutos.Rows - x, 3)) & ","  'Valor Unitario
    frase = frase & "" & GridProdutos.TextMatrix(GridProdutos.Rows - x, 4) & ","    'Qtde
    frase = frase & "" & CCur(GridProdutos.TextMatrix(GridProdutos.Rows - x, 5)) & ","    'Vlr Total
    
    frase = frase & "'" & cboFormaPagto.Text & "',"
    frase = frase & "'" & cboParcelas.Text & "')"
   
    Con.Execute (frase)
    
    
    'baixando do estoque
    frase = "update CadastroProduto set qtde= qtde - " & GridProdutos.TextMatrix(GridProdutos.Rows - x, 4) & " where codigo = " & GridProdutos.TextMatrix(GridProdutos.Rows - x, 1)
    Con.Execute (frase)
    
    'gravando no contas a receber
           total = total + CDbl(GridProdutos.TextMatrix(GridProdutos.Rows - x, 5))
Next x
If cboFormaPagto.ListIndex <> 0 Then
        parcela = Round(total / CInt(cboParcelas.Text), 2)
        diferenca = total - parcela * CInt(cboParcelas.Text)
        Vencto = Now()
For x = 1 To CInt(cboParcelas.Text)

    frase = "INSERT INTO contasreceber (Codigocli, Nomecli,Codigoven,Codigovenda, Datavenda, parcela, datavenct, valorparcela, ValorTotal)"
     
    
    frase = frase & "VALUES(" & txtCodigo.Text & ","
    frase = frase & "'" & txtNome.Text & "',"
    frase = frase & "" & txtCodigoven.Text & ","
    frase = frase & "" & txtCodigoVenda.Text & ","
    frase = frase & "'" & mskDatavenda.Text & "',"
    frase = frase & "" & x & ","
    frase = frase & "'" & Format(Vencto, "dd/mm/yyyy") & "',"
        If x = 1 Then
            frase = frase & "" & parcela + diferenca & ","
        Else
            frase = frase & "" & parcela & ","
        End If
            frase = frase & "" & total & ")"
            Vencto = DateAdd("m", 1, Vencto)

Con.Execute (frase)

Next x
End If

Link para o comentário
Compartilhar em outros sites

  • 0

a não sei, nesse seu codigo qual é esse campo q tem virgula??

não sei qual é, mas por exemplo, se for o total, seria isso:

....
    frase = frase & "'" & Format(Vencto, "dd/mm/yyyy") & "',"
        If x = 1 Then
            frase = frase & "" & parcela + diferenca & ","
        Else
            frase = frase & "" & parcela & ","
        End If
            frase = frase & Replace(CStr(total), ",", ".") & ")"
            Vencto = DateAdd("m", 1, Vencto)[/code]

Link para o comentário
Compartilhar em outros sites

  • 0

http://s484.photobucket.com/albums/rr201/j...ew¤t=contas.jpg

Tenho uma tela de contas a receber onde eu vou dar baixa nas parcelas pagas, mas to em dúvida sobre como eu vou fazer o delete, porque se eu fizer Con.Execute ("Delete from contasreceber where codigocli = " & Val(txtCodigo.Text))

ele vai deletar tudo onde o código do cliente for igual ao que está no txtcodigo.text

Mande alguma sugestão sobre o melhor Delete a fazer....

Link para o comentário
Compartilhar em outros sites

  • 0
valeu kuroi, mas eu nem precisei usar replace eu apenas converti na minha tabela o valor de numerico para varchar.

a isso não é uma coisa muito boa de se fazer. se é pra guardar numero é melhor usar numerico, é pra isso mesmo q existe o tipo de dados numerico.

primero porque vai ocupar bem menos espaco em disco (e na memoria quando você fizer a selecao) se você fizer como numerico.

e depois q se você tiver q fazer soma, ou funcaos tipo sum(), você vai ter problemas como texto.

Tenho uma tela de contas a receber onde eu vou dar baixa nas parcelas pagas, mas to em dúvida sobre como eu vou fazer o delete, porque se eu fizer Con.Execute ("Delete from contasreceber where codigocli = " & Val(txtCodigo.Text))

ele vai deletar tudo onde o código do cliente for igual ao que está no txtcodigo.text

Mande alguma sugestão sobre o melhor Delete a fazer....

ai você tem q saber, o q identifica cada registro??

não eu não defini chave primaria

a mas tem q ter. mesmo q você não sete no access como chave, você tem q ter um codigo, alguma coisa q seja identidade mesmo q sejam mais de dois campos. você não tem o codigo da conta ou qualquer coisa assim?? se não tiver então vai ter q incluir, mesmo q seja um campo autonumeracao.

puts não to conseguindo adcionar a foto da minha tela de contas a receber, alguém poderia me ajudar?

ela ta hospedada em servidor?? é so passar o link então. aquele link q você passo em cima não ta funcionando.

tem a opcao la embaxo pra anexar arquivo tb.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...