Boa noite pessoal, estou quebrando a cabeça em uma questão aqui faz dois dias, já pesquisei em vários Fóruns e vídeo aulas mais sem sucesso.
O Problema é o Seguinte.
Tenho duas tabelas (contas_a_pagar) e (conta_a_pagar detalhes), em uma delas tenho um atualizo via "FORM" as contas com valores total da mesma, na outra atualizo "Botão Gerar Parcelas" e utilizo para gerar as parcelas. A Parte 1 que uso para gerar parcelas e inserir na minha tabela "contas_a_pagar_detalhe" esta funcionando normalmente e usei o comando abaixo:
Pergunta
mmousinho
Boa noite pessoal, estou quebrando a cabeça em uma questão aqui faz dois dias, já pesquisei em vários Fóruns e vídeo aulas mais sem sucesso.
O Problema é o Seguinte.
Tenho duas tabelas (contas_a_pagar) e (conta_a_pagar detalhes), em uma delas tenho um atualizo via "FORM" as contas com valores total da mesma, na outra atualizo "Botão Gerar Parcelas" e utilizo para gerar as parcelas.
A Parte 1 que uso para gerar parcelas e inserir na minha tabela "contas_a_pagar_detalhe" esta funcionando normalmente e usei o comando abaixo:
procedureTfrm_ContasAPagar.BitBtn_GerarParcaela_MovClick(Sender: TObject);varqend, qend1 : TZQuery;LongintVar, i :Integer;DataConta : TDate;DataUltParcela : TDate;beginqend := TZQuery.Create(nil);qend.Connection := dm.Conect;qend1 := TZQuery.Create(nil);qend1.Connection := dm.Conect;qend.SQL.Clear;qend.SQL.Add(' SELECT ID, CENTRODECUSTO, VALORTOTAL '+#10+' FROM CONTAS_A_PAGAR WHERE ID = '''+dm.qContasaPagar.FieldByName('id').asstring +''' ');qend.Open;qend1.SQL.Clear;qend1.SQL.Add('SELECT IDCONTA FROM CONTAS_A_PAGAR_DETALHE '+'WHERE IDCONTA = '''+ qend.FieldByName('ID').AsString +''' ');qend1.Open;LongintVar := StrToInt(edt_QtdParcelas_CP.Text);DataConta := StrToDate(edt_Data_CP.text);tryifLongintVar =1thenbeginMessagedlg('Este Pagamento não tem Parcelas a Ser Geradas!',mtinformation,[mbok],0);exit;endelseifqend1.RecordCount >0thenbeginMessagedlg('As Parcelas Já Foram Geradas Anteriormente!',mtinformation,[mbok],0);exit;endelsebeginLongintVar := StrToInt(edt_QtdParcelas_CP.Text);forI :=1toLongintVardobeginqend1.SQL.Clear;qend1.SQL.Add(' INSERT INTO CONTAS_A_PAGAR_DETALHE '+#10+' (CENTRODECUSTO, IDCONTA, VALOR, JUROS, '+#10+' DESCONTOS, DATAVENCIMENTO, PARCELA, VALORDEVEDOR) ');qend1.SQL.Add(' VALUES ');qend1.SQL.Add(' (:P1, :P2, :P3, :P4, :P5, :P6, :P7, :P8) ');qend1.ParamByName('P1').asString :=qend.FieldByName('CENTRODECUSTO').asString;qend1.ParamByName('P2').asString := qend.FieldByName('ID').asString;qend1.ParamByName('P3').AsCurrency:= qend.FieldByName('VALORTOTAL').Value / LongintVar;qend1.ParamByName('P4').asString :='0';qend1.ParamByName('P5').asString :='0';qend1.ParamByName('P6').asDate := incMonth(DataConta, i);qend1.ParamByName('P7').AsString := IntToStr(i)+'/'+ IntToStr(LongintVar);qend1.ParamByName('P8').AsCurrency:= qend.FieldByName('VALORTOTAL').Value / LongintVar;qend1.ExecSQL;end;end;exceptOnE: ExceptiondoraiseException.Create(E.Message);end;ShowMessage('Foram Geradas '+ IntToStr(LongintVar) +' Parcela(s) com Sucesso');end;A Segunda Parte que é para atualizar meu campo "DatavUltParcela" na minha tabela conforme a "contas_a_pagar" é que mora o problema.
Segue o comando que estou usando para ela.
beginqend.SQL.Clear;qend.SQL.Add(' UPDATE CONTAS_A_PAGAR SET (DATAVULTPARCELA) '+#10+' WHERE ID = '''+ qend1.FieldByName('IDCONTA').AsString +''' ');qend.SQL.Add(' VALUES ');qend.SQL.Add(' (:CP1) ');qend.ParamByName('CP1').asDate := incMonth(DataConta, i);qend.ExecSQL;end;Será que estou fazendo algo de errado?
Segue o código Completo do codigo:
procedureTfrm_ContasAPagar.BitBtn_GerarParcaela_MovClick(Sender: TObject);varqend, qend1 : TZQuery;LongintVar, i :Integer;DataConta : TDate;DataUltParcela : TDate;beginqend := TZQuery.Create(nil);qend.Connection := dm.Conect;qend1 := TZQuery.Create(nil);qend1.Connection := dm.Conect;qend.SQL.Clear;qend.SQL.Add(' SELECT ID, CENTRODECUSTO, VALORTOTAL '+#10+' FROM CONTAS_A_PAGAR WHERE ID = '''+dm.qContasaPagar.FieldByName('id').asstring +''' ');qend.Open;qend1.SQL.Clear;qend1.SQL.Add('SELECT IDCONTA FROM CONTAS_A_PAGAR_DETALHE '+'WHERE IDCONTA = '''+ qend.FieldByName('ID').AsString +''' ');qend1.Open;LongintVar := StrToInt(edt_QtdParcelas_CP.Text);DataConta := StrToDate(edt_Data_CP.text);tryifLongintVar =1thenbeginMessagedlg('Este Pagamento não tem Parcelas a Ser Geradas!',mtinformation,[mbok],0);exit;endelseifqend1.RecordCount >0thenbeginMessagedlg('As Parcelas Já Foram Geradas Anteriormente!',mtinformation,[mbok],0);exit;endelsebeginLongintVar := StrToInt(edt_QtdParcelas_CP.Text);forI :=1toLongintVardobeginqend1.SQL.Clear;qend1.SQL.Add(' INSERT INTO CONTAS_A_PAGAR_DETALHE '+#10+' (CENTRODECUSTO, IDCONTA, VALOR, JUROS, '+#10+' DESCONTOS, DATAVENCIMENTO, PARCELA, VALORDEVEDOR) ');qend1.SQL.Add(' VALUES ');qend1.SQL.Add(' (:P1, :P2, :P3, :P4, :P5, :P6, :P7, :P8) ');qend1.ParamByName('P1').asString :=qend.FieldByName('CENTRODECUSTO').asString;qend1.ParamByName('P2').asString := qend.FieldByName('ID').asString;qend1.ParamByName('P3').AsCurrency:= qend.FieldByName('VALORTOTAL').Value / LongintVar;qend1.ParamByName('P4').asString :='0';qend1.ParamByName('P5').asString :='0';qend1.ParamByName('P6').asDate := incMonth(DataConta, i);qend1.ParamByName('P7').AsString := IntToStr(i)+'/'+ IntToStr(LongintVar);qend1.ParamByName('P8').AsCurrency:= qend.FieldByName('VALORTOTAL').Value / LongintVar;qend1.ExecSQL;end;beginLongintVar := StrToInt(edt_QtdParcelas_CP.Text);forI :=1toLongintVardobeginqend.SQL.Clear;qend.SQL.Add(' UPDATE CONTAS_A_PAGAR SET (DATAVULTPARCELA) '+#10+' WHERE ID = '''+ qend1.FieldByName('IDCONTA').AsString +''' ');qend.SQL.Add(' VALUES ');qend.SQL.Add(' (:CP1) ');qend.ParamByName('CP1').asDate := incMonth(DataConta, i);qend.ExecSQL;end;end;end;exceptOnE: ExceptiondoraiseException.Create(E.Message);end;ShowMessage('Foram Geradas '+ IntToStr(LongintVar) +' Parcela(s) com Sucesso');end;Estou trabalhando com banco de dados Mysql.
Será que estou colocando a segunda parte no lugar errado? Falta algo? ou o Procedimento é errado?
Alguém pode me ajudar por favor?
Estou iniciando meus trabalhos com Delphi Tokio 10.2 e ainda sou um pouco leigo no assunto!!!
Desde já agradeço a todos que ajudarem ou pelo menos tentarem.
Link para o comentário
Compartilhar em outros sites
12 respostass a esta questão
Posts Recomendados
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.