-1

不知道如何准确地制定这一点,所以请多多包涵……我正在将备忘录中的文本保存到数据库中,并在 PlannerCalendar1 中选择了日期。由于我可以在 PlannerCalendar1 中选择多个日期,我如何将备忘录的值发布到 PlannerCalendar1 中选择的所有日期?所以当我单击“保存”时,备忘录的内容会保存到所有选定的日期。数据库是 SQLite。该表还有一个 ID 字段,它是 autoinc(主)。PlannerCalendar 来自 TMS 组件集。

procedure TForm1.cxButton1Click(Sender: TObject);
 var i:integer;
begin
with UniQuery1 do
begin
 UniQuery1.SQL.Text:='INSERT INTO LOG (DATE,PERSON,DONE,TIME) VALUES (:a1,:a2,:a3,:a4)';
 UniQuery1.PARAMS.ParamByName('A1').VALUE := PlannerCalendar1.Date;
 UniQuery1.PARAMS.ParamByName('A2').VALUE := cxmemo1.Lines.text ;
 UniQuery1.PARAMS.ParamByName('A3').VALUE := (0);
 UniQuery1.PARAMS.ParamByName('A4').Value := AdvOfficeStatusBar1.Panels[0].Text;
 UniQuery1.ExecSQL;
 cxmemo1.Clear;
 UniTable1.Refresh;

最后尝试了这个,但它不会工作:

with plannercalendar1.Dates do
begin
for i := 0 to -1 do
begin
UniQuery1.PARAMS.ParamByName('A1').VALUE :=plannercalendar1.dates.Add + i ;
UniQuery1.ExecSQL;
end;
4

2 回答 2

1

我不知道 PlannerCalendar 是什么,但大概有一些方法可以获取所选日期的列表。你想做这样的事情:

UniQuery1.SQL.Text:='INSERT INTO LOG (DATE,PERSON,DONE,TIME) VALUES (:a1,:a2,:a3,:a4)';
UniQuery1.PARAMS.ParamByName('A2').VALUE := cxmemo1.Lines.text ;
UniQuery1.PARAMS.ParamByName('A3').VALUE := (0);
UniQuery1.PARAMS.ParamByName('A4').Value := AdvOfficeStatusBar1.Panels[0].Text;

for i := 0 to PlannerCalendar1.NumberOfDatesSelected-1 do begin
    UniQuery1.PARAMS.ParamByName('A1').VALUE := PlannerCalendar1.SelectedDate[i];
    UniQuery1.ExecSQL;
end;

当然,NumberOfDatesSelected而且SelectedDate是疯狂的猜测。你需要找出他们真正的名字。

于 2014-01-24T09:05:40.593 回答
1

您需要使用 Planner 的 SelectionToAbsTime 方法:-

Var
  lStart, lEnd : TDateTime;
Begin
  Planner1.SelectionToAbsTime(lStart, lEnd);
  For I := Trunc(lStart) To Trunc(lEnd) Do
    SaveMemosForDate(I);
End;
于 2014-01-24T12:11:12.200 回答