2014-01-24 9 views
-1

정확히 어떻게 공식화해야 할 지 모르겠다. 제발 저를 참아주십시오 ... PlannerCalendar1에서 선택한 날짜의 메모를 데이터베이스에 저장하고 있습니다. PlannerCalendar1에서 여러 날짜를 선택할 수 있으므로 PlannerCalendar1에서 선택한 모든 날짜에 메모의 값을 게시하려면 어떻게해야합니까? '저장'을 클릭하면 메모의 내용이 선택한 모든 날짜에 저장됩니다. 데이터베이스는 SQLite입니다. 테이블에는 또한 autoinc (기본) ID 필드가 있습니다. PlannerCalendar는 TMS 구성 요소 세트에서옵니다. delphi - 여러 레코드를 한 번에 저장

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에는 선택된 날짜가 없습니다. 속성 ... 가장 근접한 것은 PlannerCalendar1.Dates.Add-1에 대한 0부터 시작합니다.하지만 [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;