2014-01-24 59 views
-1

不知道如何制定這個完全如此熊我請...我將文本從備忘錄保存到PlannerCalendar1中選定日期的數據庫。由於我可以在PlannerCalendar1中選擇多個日期,因此如何將備忘錄的值發佈到PlannerCalendar1中選擇的所有日期?因此,當我單擊「保存」時,備忘錄的內容將保存到所有選定的日期。數據庫是SQLite。該表還具有autoinc(主要)的ID字段.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; 
+0

是什麼類型PlannerCalendar1? –

+0

PlannerCalendar來自TMS組件 – user3181689

+0

循環'for i:= 0到-1'永遠不會運行。因此,無論您的所有名稱或屬性是否正確,該循環的最終值都低於起始值。爲了循環下去,使用'for i:= 0 downto -1'代替。 –

回答

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; 

當然,NumberOfDatesSelectedSelectedDate是胡亂猜測。你需要找出他們真正叫什麼。

+0

PlannerCalendar1沒有日期選擇屬性...最近的是我= = 0到PlannerCalendar1.Dates.Add-1做開始....但我得到[dcc32錯誤] Unit1 .pas(69):E2010不兼容的類型:'Variant'和'TSelDateItem' – user3181689

+0

我覺得非常奇怪,不能像PlannerCalendar1.Dates.Count那樣存在。如果是這樣,你可以在for循環中使用類似於 – vkamayiannis

+1

@ user3181689或類似於SelectedDates的東西。不要讓我們猜測您正在使用的組件,並且您可以獲取該文檔。 –

1

您需要使用計劃的SelectionToAbsTime方法: -

Var 
    lStart, lEnd : TDateTime; 
Begin 
    Planner1.SelectionToAbsTime(lStart, lEnd); 
    For I := Trunc(lStart) To Trunc(lEnd) Do 
    SaveMemosForDate(I); 
End;