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:
procedure
Tfrm_ContasAPagar
.
BitBtn_GerarParcaela_MovClick(Sender: TObject);
var
qend, qend1 : TZQuery;
LongintVar, i :
Integer
;
DataConta : TDate;
DataUltParcela : TDate;
begin
qend := 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);
try
if
LongintVar =
1
then
begin
Messagedlg(
'Este Pagamento não tem Parcelas a Ser Geradas!'
,mtinformation,[mbok],
0
);
exit;
end
else
if
qend1
.
RecordCount >
0
then
begin
Messagedlg(
'As Parcelas Já Foram Geradas Anteriormente!'
,mtinformation,[mbok],
0
);
exit;
end
else
begin
LongintVar := StrToInt(edt_QtdParcelas_CP
.
Text);
for
I :=
1
to
LongintVar
do
begin
qend1
.
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
;
except
On
E: Exception
do
raise
Exception
.
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.
begin
qend
.
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:
procedure
Tfrm_ContasAPagar
.
BitBtn_GerarParcaela_MovClick(Sender: TObject);
var
qend, qend1 : TZQuery;
LongintVar, i :
Integer
;
DataConta : TDate;
DataUltParcela : TDate;
begin
qend := 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);
try
if
LongintVar =
1
then
begin
Messagedlg(
'Este Pagamento não tem Parcelas a Ser Geradas!'
,mtinformation,[mbok],
0
);
exit;
end
else
if
qend1
.
RecordCount >
0
then
begin
Messagedlg(
'As Parcelas Já Foram Geradas Anteriormente!'
,mtinformation,[mbok],
0
);
exit;
end
else
begin
LongintVar := StrToInt(edt_QtdParcelas_CP
.
Text);
for
I :=
1
to
LongintVar
do
begin
qend1
.
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
;
begin
LongintVar := StrToInt(edt_QtdParcelas_CP
.
Text);
for
I :=
1
to
LongintVar
do
begin
qend
.
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
;
except
On
E: Exception
do
raise
Exception
.
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.