Repetir o mesmo dia para todos os meses da tabela

Delphi

05/11/2003

Olá pessoal,

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

Ilanocf

Curtidas 0

Respostas

Motta

Motta

05/11/2003

procedure TForm1.Button1Click(Sender: TObject);
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
Ilanocf

Ilanocf

05/11/2003

Como faço para jogar isso nos registros da minha tabela?


GOSTEI 0
Motta

Motta

05/11/2003

Como vc faz gravação em tabela ?

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
Ilanocf

Ilanocf

05/11/2003

Olá pessoal,

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
POSTAR