Fórum update na tabela com um CheckListBox? #431343
19/12/2012
0
Com o primeiro código lanço na tabela 13 registros referentes as mensalidades do aluno, não consigo com o segundo código fazer um update que de acordo com um CheckListBox de 13 opções insira no campo SITUACAO = 'Pago' e no campo Data_Pagamento a data atual:
1º CODIGO
procedure TFrmFinanceiro.cxButtonClick(Sender: TObject);
const
MES_MENSALIDADE : array [0..12] of String = ('MATRÍCULA', 'JANEIRO', 'FEVEREIRO', 'MARÇO',
'ABRIL', 'MAIO', 'JUNHO', 'JULHO', 'AGOSTO', 'SETEMBRO', 'OUTUBRO', 'NOVEMBRO', 'DEZEMBRO');
var
dia, mes: Word;
vencimento: TDateTime;
begin
try
DmDados.IBQryMensalidade.close;
DmDados.IBQryMensalidade.open;
dia := strtoint(EdtDia_Base.Text);
for mes := 0 to 12 do
begin
DmDados.IBQryMensalidade.Insert;
DmDados.IBQryMensalidadeMATRICULA_MENSALIDADE.AsString := DmDados.IBQryAlunoMATRICULA.AsString;
DmDados.IBQryMensalidade.FieldByName('Situacao').Value := IfThen(cxCheckListBox1.Items[mes].Checked, 'Aberta', 'Isento');
DmDados.IBQryMensalidadeMES_MENSALIDADE.AsString := MES_MENSALIDADE[mes];
DmDados.IBQryMensalidadeANO_MENSALIDADE.AsInteger := StrToInt(EdtAno.Text);
DmDados.IBQryMensalidadeVALOR_MENSALIDADE.AsFloat := EdtValorOrcado.Value;
DmDados.IBQryMensalidadeESCOLA.AsString := sEscola;
if cxCheckListBox1.Items[mes].Checked then
begin
vencimento := EncodeDate(StrToInt(EdtAno.Text), IfThen(mes = 0, 1, mes), dia);
case DayOfWeek(vencimento) of
1: DmDados.IBQryMensalidade.FieldByName('DATA_VENCIMENTO').AsDateTime := vencimento + 1;
7: DmDados.IBQryMensalidade.FieldByName('DATA_VENCIMENTO').AsDateTime := vencimento + 2;
else
DmDados.IBQryMensalidade.FieldByName('DATA_VENCIMENTO').AsDateTime := vencimento;
end;
DmDados.IBQryMensalidadeDIA_BASE.Value := EdtDia_Base.Text;
end;
end;
except on E: Exception do
begin
DmDados.IBQryMensalidade.Cancel;
Application.MessageBox(PChar('As Mensalidades deste Aluno já foram geradas neste Ano!' + #13), 'ATENÇÃO!', MB_ICONERROR);
abort;
end;
end;
DmDados.IBQryMensalidade.Post;
DmDados.IBQryMensalidade.Refresh;
DmDados.IBQryMensalidade.Close;
DmDados.IBQryMensalidade.Open;
DmDados.IBQryAluno.Close;
DmDados.IBQryAluno.Open;
Application.MessageBox('As Mensalidades foram geradas com sucesso!', 'Atenção', mb_iconinformation + mb_ok);
end;
2º CÓDIGO
procedure TFrmFinanceiro.BtnBaixarMensalidadeClick(Sender: TObject);
begin
with QryBaixarMensalidade do
begin
Close;
SQL.Clear;
SQL.ADD('Update MENSALIDADE set situacao = ''Pago'' WHERE ESCOLA = :ESCOLA and matricula_mensalidade = :matricula_mensalidade');
ParamByName('escola').AsInteger := DmDados.IBQryAlunoESCOLA.AsInteger;
ParamByName('matricula_mensalidade').AsInteger := DmDados.IBQryAlunoMATRICULA.AsInteger;
ExecSQL;
IBQryMensalidade.close;
IBQryMensalidade.open;
DmDados.IBQryAluno.Close;
DmDados.IBQryAluno.Open;
DmDados.IBTransaction.CommitRetaining;
end;
end;
Osmar
Curtir tópico
+ 0Posts
19/12/2012
Claudia Nogueira
Gostei + 0
19/12/2012
Osmar
if cxCheckListBox2.Items[mes].Checked = true
X MATRICULA
X JANEIRO
X FEVEREIRO
X MARÇO
X ABRIL
X MAIO
X JUNHO
X JULHO
X AGOSTO
X SETEMBRO
X OUTUBRO
X NOVEMBRO
X DEZEMBRO
Gostei + 0
20/12/2012
André Celestino
Não seria o caso se você fazer um loop pra checar o CheckListBox assim como você fez no primeiro código?
Gostei + 0
20/12/2012
Osmar
Tentei fazer mas não consegui, você poderia postar o código?
Gostei + 0
20/12/2012
Osmar
procedure TFrmFinanceiro.BtnBaixarMensalidadeClick(Sender: TObject);
var
mes: Word;
begin
DmDados.IBQryMensalidade.close;
DmDados.IBQryMensalidade.open;
for mes := 0 to 12 do
begin
if cxCheckListBox2.Items[mes].Checked then
begin
DmDados.IBQryMensalidade.edit;
DmDados.IBQryMensalidadeDATA_PAGAMENTO.AsDateTime := StrToDateTimeDef('dd/mm/yyyy', MonthCalendar1.Date);
DmDados.IBQryMensalidadeSITUACAO.AsString := 'Pago';
end;
end;
DmDados.IBQryMensalidade.Post;
DmDados.IBQryMensalidade.Refresh;
DmDados.IBQryMensalidade.Close;
DmDados.IBQryMensalidade.Open;
DmDados.IBQryAluno.Close;
DmDados.IBQryAluno.Open;
IBQryMensalidade.Close;
IBQryMensalidade.open;
Application.MessageBox('As Mensalidades foram baixadas com sucesso!', 'Atenção', mb_iconinformation + mb_ok);
end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)