Delphi 插入年天数、月数、月天数

Delphi 插入年天数、月数、月天数,delphi,Delphi,如何在数据库中插入一年中的天数,同时在同一记录中插入月份、月份和星期几? 这是我的桌子: tabela/coluna.Dias_ano(注册号1…365) 迪萨诺| Mes | diames | dia semana| 1 |里约热内卢| 1 |塞贡达| 2 |里约热内卢| 2 |特里萨| ... 365 |迪赞布罗| 31 |塞贡达 也许我没有回答这个问题,但如果我没有,你可以在“DateUtils.pas”中找到你需要的。它具有诸如“一年中的一天”、“一年中的一个月”、“一个月中的一天”、“

如何在数据库中插入一年中的天数,同时在同一记录中插入月份、月份和星期几? 这是我的桌子:

tabela/coluna.Dias_ano(注册号1…365)

迪萨诺| Mes | diames | dia semana| 1 |里约热内卢| 1 |塞贡达| 2 |里约热内卢| 2 |特里萨| ... 365 |迪赞布罗| 31 |塞贡达
也许我没有回答这个问题,但如果我没有,你可以在“DateUtils.pas”中找到你需要的。它具有诸如“一年中的一天”、“一年中的一个月”、“一个月中的一天”、“一周中的一天”等功能。我想你会把它们储存在不同的领域,但有可能你根本不需要储存它们;您正在使用的数据库可能提供类似的功能,在这种情况下,您可以构造查询以提供所需的筛选/排序

编辑:下面第三条注释的代码

procedure TForm1.Button1Click(Sender: TObject);
var
  Year, DaysInYear: Word;
  FirstDay, i: Integer;
begin
  Year := StrToInt(ano.Text);
  DaysInYear := DaysInAYear(Year);
  diasano.Text := IntToStr(DaysInYear);

  FirstDay := Trunc(EncodeDate(Year, 1, 1));
  for i := FirstDay to FirstDay + DaysInYear - 1 do begin
    Planeamento.Append;
    Planeamento.FieldByName('diasAno').Value := DayOfTheYear(i);
    Planeamento.FieldByName('Month').Value := LongMonthNames[MonthOfTheYear(i)];
    Planeamento.FieldByName('DayOfMonth').Value := DayOfTheMonth(i);
    Planeamento.FieldByName('DayOfWeek').Value := LongDayNames[DayOfTheWeek(i)];
    Planeamento.Post;
  end;
end;

编辑:带计算字段

对于下面的示例,该表有五列,而不是四列。让我们将第一列命名为“日期”。此列是存储数据的唯一列,并将保存日期(根据ldsandon的,因为通过存储日期而不是天数,您不必跟踪哪个表表示哪一年,计算将更简单)。 其他四列与问题中的完全相同,只是它们都是“计算字段”


也许我没有回答这个问题,但如果我没有,你可以在“DateUtils.pas”中找到你需要的。它具有诸如“一年中的一天”、“一年中的一个月”、“一个月中的一天”、“一周中的一天”等功能。我想你会把它们储存在不同的领域,但有可能你根本不需要储存它们;您正在使用的数据库可能提供类似的功能,在这种情况下,您可以构造查询以提供所需的筛选/排序

编辑:下面第三条注释的代码

procedure TForm1.Button1Click(Sender: TObject);
var
  Year, DaysInYear: Word;
  FirstDay, i: Integer;
begin
  Year := StrToInt(ano.Text);
  DaysInYear := DaysInAYear(Year);
  diasano.Text := IntToStr(DaysInYear);

  FirstDay := Trunc(EncodeDate(Year, 1, 1));
  for i := FirstDay to FirstDay + DaysInYear - 1 do begin
    Planeamento.Append;
    Planeamento.FieldByName('diasAno').Value := DayOfTheYear(i);
    Planeamento.FieldByName('Month').Value := LongMonthNames[MonthOfTheYear(i)];
    Planeamento.FieldByName('DayOfMonth').Value := DayOfTheMonth(i);
    Planeamento.FieldByName('DayOfWeek').Value := LongDayNames[DayOfTheWeek(i)];
    Planeamento.Post;
  end;
end;

编辑:带计算字段

对于下面的示例,该表有五列,而不是四列。让我们将第一列命名为“日期”。此列是存储数据的唯一列,并将保存日期(根据ldsandon的,因为通过存储日期而不是天数,您不必跟踪哪个表表示哪一年,计算将更简单)。 其他四列与问题中的完全相同,只是它们都是“计算字段”


您可以简单地计算什么值具有1/1/,然后检查是否为leap,然后使用简单的for循环计算每天的TDateTime值(只需将天数添加到1月1日的值),使用DateUtils函数提取所需的信息,并将其写入每天的记录中。
但我建议你不要这样做。这些都是已经编码成日期时间值的信息。我只需存储每个项目及其日期,整个日历可以在需要时在客户端轻松构建(并且只需要所需的部分),而无需将其全部存储在数据库中。

您只需计算值为1/1/,然后检查是否为leap,然后使用简单的for循环计算每天的TDateTime值(只需将日数添加到1月1日值),使用DateUtils函数提取所需信息,并将其写入每天的记录中。
但我建议您再次使用这样的解决方案。这些都是已经编码为datetime值的信息。我只需将每个项目及其日期存储起来,整个日历可以在需要时在客户端轻松构建(并且只需要所需的部分),而不必将其全部存储在数据库中。

您确定这是一个好主意吗?当然,最好使用日历代码从日期中计算出日数或日名,而不是(有效地)将其硬编码到数据库中。它每年都会更改。我建议您也用英语发布示例。这样也会更容易理解您试图获取的内容。您确定这是一个好主意吗?当然,使用日历代码从日期中计算日数或日名会更好,而不是(有效地)将其硬编码到数据库中。它每年都会更改。我建议您也用英语发布示例。这也会使您更容易理解您试图获取的内容。我必须使用类似于我所说的代码的内容,因为它就像全年工作日的工作日历。因此,我将给出年份,并且我必须插入de n一年中的天数(2010=365天),其中第一天将是1月1日、1日、星期二等。在每个记录(365条记录)中,我只需要在今天(DaysInAYear(year)之前输入inseart task的amd过滤器,但我如何能一次插入墙!!感谢您在计算“工作日”时可以循环使用“否”值并为每次迭代将其插入到表中。但我认为这不会是“一次插入所有”…不过,如果您需要的信息都在客户端,则不需要存储它们。您可以通过计算字段来显示它们。您所需要的是从“无日”表到“任务”的一对多关系table.i一年中要做的事情如下所示:程序TPlaneamento.Button1Click(发送者:TObject);变量i j k m begin inherited;年份:=stroint(ano.Text);diasano.Text:=IntToStr(DaysInAYear(year));m:=(FormatDateTime('ddddd',Now))for i:=1到stroint(diasano.Text)确实开始frmDados.Planeamento.Append;frmDados.Planeamento.FieldByName('month')。值:=I;frmDados.Planeamento.FieldByName('dayofmonth')。值:=I;frmDados.Planeamento.FieldByName('dayofweek')).value:=j;谢谢,我必须使用类似于我所说的代码的东西,因为它将类似于全年工作日的工作日历。因此,我将给出年份,我必须插入de
procedure TForm1.Button1Click(Sender: TObject);
var
  Year, DaysInYear: Word;
  FirstDay, i: Integer;
begin
  Year := StrToInt(ano.Text);
  DaysInYear := DaysInAYear(Year);
  diasano.Text := IntToStr(DaysInYear);

  FirstDay := Trunc(EncodeDate(Year, 1, 1));
  for i := FirstDay to FirstDay + DaysInYear - 1 do begin
    Planeamento.Append;
    Planeamento.FieldByName('diasAno').Value := DayOfTheYear(i);
    Planeamento.FieldByName('Month').Value := LongMonthNames[MonthOfTheYear(i)];
    Planeamento.FieldByName('DayOfMonth').Value := DayOfTheMonth(i);
    Planeamento.FieldByName('DayOfWeek').Value := LongDayNames[DayOfTheWeek(i)];
    Planeamento.Post;
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
  Year, DaysInYear: Word;
  FirstDay, i: Integer;
begin
  Year := StrToInt(ano.Text);
  DaysInYear := DaysInAYear(Year);
  diasano.Text := IntToStr(DaysInYear);
  FirstDay := Trunc(EncodeDate(Year, 1, 1));
  for i := FirstDay to FirstDay + DaysInYear - 1 do begin
    Planeamento.Append;
    Planeamento.FieldByName('Date').Value := i;
    Planeamento.Post;
  end;
end;

procedure TForm1.PlaneamentoCalcFields(DataSet: TDataSet);
var
  Date: TDateTime;
begin
  Date := DataSet.FieldByName('Date').AsDateTime;
  DataSet.FieldByName('diasAno').AsInteger := DayOfTheYear(Date);
  DataSet.FieldByName('Month').AsString := LongMonthNames[MonthOfTheYear(Date)];
  DataSet.FieldByName('DayOfMonth').AsInteger := DayOfTheMonth(Date);
  DataSet.FieldByName('DayOfWeek').AsString := LongDayNames[DayOfTheWeek(Date)];
end;