Fórum Repetir o mesmo dia para todos os meses da tabela #193046
05/11/2003
0
Tenho uma tabela com 15 registros, onde a única coisa q será alterada é o mês e o ano, isto é,:
10/11/2003
10/12/2003
10/01/2004
10/02/2004
10/03/2004
10/04/2004
10/05/2004
...
Como posso fazer isso?
Grato,
Ilano.
Ilanocf
Curtir tópico
+ 0Posts
05/11/2003
Motta
var i,ano,mes,dia : word;
d : TDateTime;
begin
ano := 2003;
mes := 1;
dia := 10; //cuidado com 29/30/31
for i := 1 to 15 do
begin
d := EncodeDate(ano,mes,dia);
memo1.Lines.Add(DateTimeTostr(d));
Inc(mes);
if mes > 12 then
begin
mes := 1;
Inc(ano);
end;
end;
end;
Gostei + 0
05/11/2003
Ilanocf
Gostei + 0
05/11/2003
Motta
vc parece ter mais dúvidas do que apresenta.
tente ler mais sobre acesso a base de dados.
componentes
ttable,tquery e derivados.
nao dá para responder sua pergunta de forma rápida
Gostei + 0
05/11/2003
Ilanocf
Mota, realmente eu ainda tenho muitas dúvidas em Delphi, pois ainda sou aprendiz, mas quebrei bastante a cabeça e consegui resolver meu problema, não sei se esta era a melhor forma de se fazer isso, mas foi a melhor forma q encontrei e por isso vou compartilhar com vcs:
1º) Coloquei mais dois campos Edit2 e Edit3 para pegarem a parte do dia das datas;
2º) No botão Salvar, fiz:
------------------------------------------------
Try
DMDados.TBDetCarne.Post;
Edit3.Text:=Copy(DMDados.TBDetCarneVencimento.Text, 1, 2); //Edit3 será igual ao dia da data informada no primeiro registro.
DMDados.TBDetCarne.Active:=False;
DMDados.TBDetCarne.Active:=True;
Label5.Enabled:=False;
DBEdit4.Enabled:=False;
Label4.Enabled:=False;
ComboVencimento.Enabled:=False;
BtnImprimir1.Enabled:=True;
BtnImprimir2.Enabled:=True;
BtnNovo2.SetFocus;
Except
ShowMessage(´Comando não disponível.´);
End;
------------------------------------------------
3º) Coloquei um botão para fazer o cácluo, isto é, colocar o dia igual ao valor do campo Edit3:
------------------------------------------------
procedure TFrmCarne.BtnCalcularClick(Sender: TObject);
Var
cVencto, VDia, VCorrecao: String; //As variáveis VDia e VCorreção irão pegar o dia das datas
begin
DMDados.TBDetCarne.Last;
While (DMDados.TBDetCarne.RecordCount < StrToIntDef(Edit1.Text, 0)) Do
Begin
cVencto:=DateToStr(DMDados.TBDetCarneVencimento.AsDateTime);
DMDados.TBDetCarne.Append;
DMDados.TBDetCarneValorDoCurso.Value:=DMDados.TBCarneValorDoCurso.Value;
DMDados.TBDetCarneNomeDoAluno.Text:=DBEdit6.Text;
DMDados.TBDetCarneVencimento.Text:=DateToStr(StrToDate(cVencto) + 30);
Edit2.Text:=DMDados.TBDetCarneVencimento.Text;
VDia:=copy(Edit2.Text, 2, 2);
If VDia <> Edit3.Text Then
Begin
VDia:=Edit3.Text;
VCorrecao:=Edit3.Text + copy(Edit2.Text, 3,8);
Edit2.Text:=VCorrecao;
DMDados.TBDetCarneVencimento.Text:=Edit2.Text;
DMDados.TBDetCarne.Post
End
Else
DMDados.TBDetCarne.Post;
End;
DMDados.TBDetCarne.First;
Edit1.Clear;
RzPanel4.Visible:=False;
With DMDados.TotalDetCurso Do
Begin
Close;
SQL.Clear;
SQL.Add(´SELECT Sum(TB_DetalheDoCarne.ValorDoCurso) AS SomaDeValorDoCurso FROM TB_DetalheDoCarne´);
Open;
End;
DMDados.TBDetCarne.Active:=False;
DMDados.TBDetCarne.Active:=True;
Panel2.Caption:= ´ Nº de Parcelas: ´ + FormatFloat(´00´, DMDados.TBDetCarne.RecordCount) + ´ x Valor Unitário: ´ + FormatFloat(´#,0.00´, DMDados.TBCarneValorDoCurso.Value) + ´ = Total R$: ´ + FormatFloat(´,0.00´, DMDados.TotalDetCursoSomaDeValorDoCurso.Value);
end;
------------------------------------------------
Ufa! Finalmente deu certo, como eu já disse, só não sei se é a melhor maneira, mas foi a melhor maneira q encontrei.
Grato pela ajuda.
Ilano.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)