· 8 years ago · Mar 07, 2018, 12:52 AM
1unit kal;
2
3interface
4
5uses
6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 Dialogs, DB, VpWeekView, StdCtrls, VpEdPop, VpDateEdit, VpTaskList,
8 VpBaseDS, VpTaskEditDlg, VpContactEditDlg, VpEvntEditDlg, VpDlg,
9 VpResEditDlg, VpDayView, VpBase, VpCalendar, VpDBDS, VpFlxDS,
10 ZAbstractRODataset, ZAbstractDataset, ZDataset, ZConnection;
11
12type
13 TForm1 = class(TForm)
14 ZConnection1: TZConnection;
15 ZQuery1: TZQuery;
16 ZQuery2: TZQuery;
17 ZQuery3: TZQuery;
18 DataSource1: TDataSource;
19 DataSource2: TDataSource;
20 DataSource3: TDataSource;
21 VpFlexDataStore1: TVpFlexDataStore;
22 VpCalendar1: TVpCalendar;
23 ZQuery4: TZQuery;
24 DataSource4: TDataSource;
25 VpDayView1: TVpDayView;
26 VpControlLink1: TVpControlLink;
27 VpResourceEditDialog1: TVpResourceEditDialog;
28 VpEventEditDialog1: TVpEventEditDialog;
29 VpContactEditDialog1: TVpContactEditDialog;
30 VpTaskEditDialog1: TVpTaskEditDialog;
31 VpResourceCombo1: TVpResourceCombo;
32 VpTaskList1: TVpTaskList;
33 VpDateEdit1: TVpDateEdit;
34 VpWeekView1: TVpWeekView;
35 ZQuery1EventNo: TLargeintField;
36 ZQuery1VenueNo: TLargeintField;
37 ZQuery1Event_Name: TStringField;
38 ZQuery1Event_Date: TDateField;
39 ZQuery1Event_Time: TTimeField;
40 ZQuery1Event_Description: TStringField;
41 ZQuery1Ticket_Price: TSmallintField;
42 ZQuery1Event_Photo: TStringField;
43 ZQuery2ResourceID: TLargeintField;
44 ZQuery2Description: TStringField;
45 ZQuery2Notes: TStringField;
46 ZQuery2ImageIndex: TStringField;
47 ZQuery2ResourceActive: TStringField;
48 ZQuery2UserField0: TStringField;
49 ZQuery2UserField1: TStringField;
50 ZQuery2UserField2: TStringField;
51 ZQuery2UserField3: TStringField;
52 ZQuery2UserField4: TStringField;
53 ZQuery2UserField5: TStringField;
54 ZQuery2UserField6: TStringField;
55 ZQuery2UserField7: TStringField;
56 ZQuery2UserField8: TStringField;
57 ZQuery2UserField9: TStringField;
58 ZQuery3RecordID: TLargeintField;
59 ZQuery3ResouceID: TIntegerField;
60 ZQuery3Complete: TStringField;
61 ZQuery3Description: TStringField;
62 ZQuery3Details: TStringField;
63 ZQuery3CreatedOn: TStringField;
64 ZQuery3Piority: TStringField;
65 ZQuery3Category: TStringField;
66 ZQuery3CompletedOn: TStringField;
67 ZQuery3DueDate: TDateTimeField;
68 ZQuery3UserField0: TStringField;
69 ZQuery3UserField1: TStringField;
70 ZQuery3UserField2: TStringField;
71 ZQuery3UserField3: TStringField;
72 ZQuery3UserField4: TStringField;
73 ZQuery3UserField5: TStringField;
74 ZQuery3UserFiled6: TStringField;
75 ZQuery3UserField7: TStringField;
76 ZQuery3UserField8: TStringField;
77 ZQuery3UserField9: TStringField;
78 procedure Button1Click(Sender: TObject);
79 procedure TrackBar1Change(Sender: TObject);
80 procedure Button2Click(Sender: TObject);
81 procedure Button3Click(Sender: TObject);
82 procedure GranularityComboChange(Sender: TObject);
83 procedure FormCreate(Sender: TObject);
84 procedure CheckBox1Click(Sender: TObject);
85 function VpFlexDataStore1GetNextID(Sender: TObject;
86 TableName: String): Integer;
87 procedure VpFlexDataStore1Connect(Sender: TObject);
88 procedure VpFlexDataStore1CreateTable(Sender: TObject;
89 TableName: String);
90 private
91 { Private declarations }
92 procedure CreateRecordIDTable;
93 procedure InitializeRecordIDTable;
94 procedure CreateFieldDefs(const TableName: string; FieldDefs: TFieldDefs);
95 procedure CreateIndexDefs(const TableName: string; IndexDefs: TIndexDefs);
96
97 public
98 end;
99
100 var
101 Form1: TForm1;
102
103implementation
104
105{$R *.dfm}
106
107procedure TFrmSimplePlanner.FormCreate(Sender: TObject);
108begin
109 GranularityCombo.ItemIndex := 5;
110end;
111
112procedure TFrmSimplePlanner.CheckBox1Click(Sender: TObject);
113begin
114 VpDayView1.IncludeWeekends := CheckBox1.Checked;
115end;
116
117function TFrmSimplePlanner.VpFlexDataStore1GetNextID(Sender: TObject;
118 TableName: String): Integer;
119var
120 Query: TQuery;
121 GotIt: Boolean;
122 ID : Integer;
123 FieldName: string;
124begin
125
126 CreateRecordIDTable;
127
128 Query := TQuery.Create(self);
129 ID := 0;
130 try
131 Query.DatabaseName := ResourceTable.DatabaseName;
132
133 Query.Sql.Text := 'Select * from ' + RecordIDTableName;
134 Query.Open;
135
136 if TableName = ResourceTableName then begin
137 FieldName := 'ResourceID';
138 ID := Query.FieldByName('ResourceID').AsInteger;
139
140 end else if TableName = TasksTableName then begin
141 FieldName := 'TaskID';
142 ID := Query.FieldByName('TaskID').AsInteger;
143
144 end else if TableName = EventsTableName then begin
145 FieldName := 'EventID';
146 ID := Query.FieldByName('EventID').AsInteger;
147
148 end else if TableName = ContactsTableName then begin
149 FieldName := 'ContactID';
150 ID := Query.FieldByName('ContactID').AsInteger;
151
152 end else begin
153 raise EInvalidTable.Create;
154 Exit;
155 end;
156
157 Query.Close;
158 Query.SQL.Text := 'Update ' + RecordIDTableName + ' Set ' + FieldName
159 + ' = :NewID Where (' + FieldName + ' = :OldID)';
160
161 GotIt := false;
162 while not GotIt do begin
163 Inc(ID);
164 Query.ParamByName('NewID').AsInteger := ID;
165 Query.ParamByName('OldID').AsInteger := ID - 1;
166 Query.ExecSQL;
167
168 GotIt := (Query.RowsAffected = 1);
169 end;
170 end;
171 finally
172 Query.Close;
173 Query.Free;
174 end;
175 end;
176
177 result := ID;
178end;
179
180procedure TFrmSimplePlanner.VpFlexDataStore1Connect(Sender: TObject);
181begin
182 { Check to see if the RecordID table exists and if not, create it. }
183 CreateRecordIDTable;
184end;
185
186procedure TFrmSimplePlanner.CreateRecordIDTable;
187var
188 RecTable: TTable;
189begin
190 { Check to see if the RecordID table exists and if not, create it. }
191 RecTable := TTable.Create(self);
192 RecTable.DatabaseName := ResourceTable.DatabaseName;
193 RecTable.TableName := RecordIDTableName;
194 try
195 try
196 RecTable.Open;
197 except
198 CreateFieldDefs(RecordIDTableName, RecTable.FieldDefs);
199 CreateIndexDefs(RecordIDTableName, RecTable.IndexDefs);
200 RecTable.CreateTable;
201 InitializeRecordIDTable;
202 end;
203 finally
204 RecTable.Free;
205 end;
206end;
207
208
209procedure TFrmSimplePlanner.InitializeRecordIDTable;
210var
211 Qry: TQuery;
212 ID: Integer;
213begin
214 Qry := TQuery.Create(self);
215 try
216 Qry.DatabaseName := ResourceTable.DatabaseName;
217
218 Qry.SQL.Text := 'Select * from ' + RecordIDTableName;
219 Qry.Open;
220 if Qry.RowsAffected = 0 then begin
221 { create one record in the table }
222 Qry.SQL.Clear;
223 Qry.SQL.Text := 'INSERT INTO ' + RecordIDTableName
224 + '(ResourceID, EventID, TaskID, ContactID) '
225 + 'VALUES(0, 0, 0, 0)';
226 Qry.ExecSQL;
227 end;
228 Qry.Close;
229
230 { Initialize Resource ID }
231 Qry.SQL.Text := 'Select Max(ResourceID) as MaxRes from '
232 + ResourceTableName;
233 Qry.Open;
234 ID := Qry.Fields[0].AsInteger;
235 Qry.Close;
236
237 Qry.SQL.Text := 'Update ' + RecordIDTableName + ' Set ResourceID = :ResID';
238 Qry.ParamByName('ResID').AsInteger := ID;
239 Qry.ExecSQL;
240
241 { Initialize Event RecordID }
242 Qry.SQL.Text := 'Select Max(RecordID) as MaxEvent from '
243 + EventsTableName;
244 Qry.Open;
245 ID := Qry.Fields[0].AsInteger;
246 Qry.Close;
247
248 Qry.SQL.Text := 'Update ' + RecordIDTableName + ' Set EventID = :EvID';
249 Qry.ParamByName('EvID').AsInteger := ID;
250 Qry.ExecSQL;
251
252 { Initialize Contact RecordID }
253 Qry.SQL.Text := 'Select Max(RecordID) as MaxContact from '
254 + ContactsTableName;
255 Qry.Open;
256 ID := Qry.Fields[0].AsInteger;
257 Qry.Close;
258
259 Qry.SQL.Text := 'Update ' + RecordIDTableName + ' Set ContactID = :CoID';
260 Qry.ParamByName('CoID').AsInteger := ID;
261 Qry.ExecSQL;
262
263 { Initialize Task RecordID }
264 Qry.SQL.Text := 'Select Max(RecordID) as MaxTask from ' + TasksTableName;
265 Qry.Open;
266 ID := Qry.Fields[0].AsInteger;
267 Qry.Close;
268
269 Qry.SQL.Text := 'Update ' + RecordIDTableName + ' Set TaskID = :TsID';
270 Qry.ParamByName('TsID').AsInteger := ID;
271 Qry.ExecSQL;
272
273 finally
274 Qry.Free;
275 end;
276end;
277{=====}
278
279procedure TFrmSimplePlanner.VpFlexDataStore1CreateTable(Sender: TObject;
280 TableName: String);
281var
282 Table: TTable;
283begin
284 if TableName = ResourceTableName then
285 Table := TTable(ResourceTable)
286 { I cast it to show you how, in case you }
287 { want to use a TQuery with the BDE }
288
289 else if TableName = EventsTableName then
290 Table := TTable(EventsTable)
291
292 else if TableName = ContactsTableName then
293 Table := TTable(ContactsTable)
294
295 else if TableName = TasksTableName then
296 Table := TTable(TasksTable);
297
298 CreateFieldDefs(TableName, Table.FieldDefs);
299 CreateIndexDefs(TableName, Table.IndexDefs);
300
301 if Table <> nil then
302 Table.CreateTable;
303end;
304
305procedure TFrmSimplePlanner.CreateFieldDefs(const TableName: string;
306 FieldDefs: TFieldDefs);
307begin
308 if TableName = ResourceTableName then begin
309 with FieldDefs do begin
310 Clear;
311 { Resource ID }
312 with AddFieldDef do begin
313 Name := 'ResourceID';
314 DataType := ftInteger;
315 Required := true;
316 end;
317 { Description }
318 with AddFieldDef do begin
319 Name := 'Description';
320 DataType := ftString;
321 Size := 255;
322 Required := false;
323 end;
324 { Notes }
325 with AddFieldDef do begin
326 Name := 'Notes';
327 DataType := ftString;
328 Size := 1024;
329 Required := false;
330 end;
331 { Image Index }
332 with AddFieldDef do begin
333 Name := 'ImageIndex';
334 DataType := ftInteger;
335 Required := false;
336 end;
337 { Active }
338 with AddFieldDef do begin
339 Name := 'ResourceActive';
340 DataType := ftBoolean;
341 Required := false;
342 end;
343 { UserField0 }
344 with AddFieldDef do begin
345 Name := 'UserField0';
346 DataType := ftString;
347 Required := false;
348 end;
349 { UserField1 }
350 with AddFieldDef do begin
351 Name := 'UserField1';
352 DataType := ftString;
353 Required := false;
354 end;
355 { UserField2 }
356 with AddFieldDef do begin
357 Name := 'UserField2';
358 DataType := ftString;
359 Required := false;
360 end;
361 { UserField3 }
362 with AddFieldDef do begin
363 Name := 'UserField3';
364 DataType := ftString;
365 Required := false;
366 end;
367 { UserField4 }
368 with AddFieldDef do begin
369 Name := 'UserField4';
370 DataType := ftString;
371 Required := false;
372 end;
373 { UserField5 }
374 with AddFieldDef do begin
375 Name := 'UserField5';
376 DataType := ftString;
377 Required := false;
378 end;
379 { UserField6 }
380 with AddFieldDef do begin
381 Name := 'UserField6';
382 DataType := ftString;
383 Required := false;
384 end;
385 { UserField7 }
386 with AddFieldDef do begin
387 Name := 'UserField7';
388 DataType := ftString;
389 Required := false;
390 end;
391 { UserField8 }
392 with AddFieldDef do begin
393 Name := 'UserField8';
394 DataType := ftString;
395 Required := false;
396 end;
397 { UserField9 }
398 with AddFieldDef do begin
399 Name := 'UserField9';
400 DataType := ftString;
401 Required := false;
402 end;
403 end; {with FieldDefs do}
404 end else if TableName = EventsTableName then begin
405 with FieldDefs do begin
406 Clear;
407 { Record ID }
408 with AddFieldDef do begin
409 Name := 'RecordID';
410 DataType := ftInteger;
411 Required := true;
412 end;
413 { StartTime }
414 with AddFieldDef do begin
415 Name := 'StartTime';
416 DataType := ftDateTime;
417 Required := true;
418 end;
419 { EndTime }
420 with AddFieldDef do begin
421 Name := 'EndTime';
422 DataType := ftDateTime;
423 Required := true;
424 end;
425 { Repeat Range End }
426 with AddFieldDef do begin
427 Name := 'RepeatRangeEnd';
428 DataType := ftDateTime;
429 Required := false;
430 end;
431 { Resource ID }
432 with AddFieldDef do begin
433 Name := 'ResourceID';
434 DataType := ftInteger;
435 Required := true;
436 end;
437 { Description }
438 with AddFieldDef do begin
439 Name := 'Description';
440 DataType := ftString;
441 Size := 255;
442 Required := false;
443 end;
444 { Note }
445 with AddFieldDef do begin
446 Name := 'Notes';
447 DataType := ftString;
448 Size := 1024;
449 Required := false;
450 end;
451 { Category }
452 with AddFieldDef do begin
453 Name := 'Category';
454 DataType := ftInteger;
455 Required := false;
456 end;
457 { AllDayEvent }
458 with AddFieldDef do begin
459 Name := 'AllDayEvent';
460 DataType := ftBoolean;
461 Required := false;
462 end;
463 { DingPath }
464 with AddFieldDef do begin
465 Name := 'DingPath';
466 DataType := ftString;
467 Size := 255;
468 Required := false;
469 end;
470 { AlarmSet }
471 with AddFieldDef do begin
472 Name := 'AlarmSet';
473 DataType := ftBoolean;
474 Required := false;
475 end;
476 { Alarm Advance }
477 with AddFieldDef do begin
478 Name := 'AlarmAdvance';
479 DataType := ftInteger;
480 Required := false;
481 end;
482 { Alarm Advance Type }
483 with AddFieldDef do begin
484 Name := 'AlarmAdvanceType';
485 DataType := ftInteger;
486 Required := false;
487 end;
488 { SnoozeTime }
489 with AddFieldDef do begin
490 Name := 'SnoozeTime';
491 DataType := ftDateTime;
492 Required := false;
493 end;
494 { Repeat Code }
495 with AddFieldDef do begin
496 Name := 'RepeatCode';
497 DataType := ftInteger;
498 Required := false;
499 end;
500 { Custom Repeat Interval }
501 with AddFieldDef do begin
502 Name := 'CustomInterval';
503 DataType := ftInteger;
504 Required := false;
505 end;
506 { UserField0 }
507 with AddFieldDef do begin
508 Name := 'UserField0';
509 DataType := ftString;
510 Required := false;
511 end;
512 { UserField1 }
513 with AddFieldDef do begin
514 Name := 'UserField1';
515 DataType := ftString;
516 Required := false;
517 end;
518 { UserField2 }
519 with AddFieldDef do begin
520 Name := 'UserField2';
521 DataType := ftString;
522 Required := false;
523 end;
524 { UserField3 }
525 with AddFieldDef do begin
526 Name := 'UserField3';
527 DataType := ftString;
528 Required := false;
529 end;
530 { UserField4 }
531 with AddFieldDef do begin
532 Name := 'UserField4';
533 DataType := ftString;
534 Required := false;
535 end;
536 { UserField5 }
537 with AddFieldDef do begin
538 Name := 'UserField5';
539 DataType := ftString;
540 Required := false;
541 end;
542 { UserField6 }
543 with AddFieldDef do begin
544 Name := 'UserField6';
545 DataType := ftString;
546 Required := false;
547 end;
548 { UserField7 }
549 with AddFieldDef do begin
550 Name := 'UserField7';
551 DataType := ftString;
552 Required := false;
553 end;
554 { UserField8 }
555 with AddFieldDef do begin
556 Name := 'UserField8';
557 DataType := ftString;
558 Required := false;
559 end;
560 { UserField9 }
561 with AddFieldDef do begin
562 Name := 'UserField9';
563 DataType := ftString;
564 Required := false;
565 end;
566 end; {with FieldDefs do}
567 end else if TableName = ContactsTableName then begin
568 with FieldDefs do begin
569 Clear;
570 { Record ID }
571 with AddFieldDef do begin
572 Name := 'RecordID';
573 DataType := ftInteger;
574 Required := true;
575 end;
576 { Resource ID }
577 with AddFieldDef do begin
578 Name := 'ResourceID';
579 DataType := ftInteger;
580 Required := true;
581 end;
582 { FirstName }
583 with AddFieldDef do begin
584 Name := 'FirstName';
585 DataType := ftString;
586 Size := 50;
587 Required := false;
588 end;
589 { LastName }
590 with AddFieldDef do begin
591 Name := 'LastName';
592 DataType := ftString;
593 Size := 50;
594 Required := false;
595 end;
596 { Birthdate }
597 with AddFieldDef do begin
598 Name := 'Birthdate';
599 DataType := ftDate;
600 Required := false;
601 end;
602 { Anniversary }
603 with AddFieldDef do begin
604 Name := 'Anniversary';
605 DataType := ftDate;
606 Required := false;
607 end;
608 { Title }
609 with AddFieldDef do begin
610 Name := 'Title';
611 DataType := ftString;
612 Size := 50;
613 Required := false;
614 end;
615 { Company }
616 with AddFieldDef do begin
617 Name := 'Company';
618 DataType := ftString;
619 Size := 50;
620 Required := false;
621 end;
622 { Position }
623 with AddFieldDef do begin
624 Name := 'Job_Position';
625 DataType := ftString;
626 Size := 30;
627 Required := false;
628 end;
629 { Address }
630 with AddFieldDef do begin
631 Name := 'Address';
632 DataType := ftString;
633 Size := 100;
634 Required := false;
635 end;
636 { City }
637 with AddFieldDef do begin
638 Name := 'City';
639 DataType := ftString;
640 Size := 50;
641 Required := false;
642 end;
643 { State }
644 with AddFieldDef do begin
645 Name := 'State';
646 DataType := ftString;
647 Size := 25;
648 Required := false;
649 end;
650 { Zip }
651 with AddFieldDef do begin
652 Name := 'Zip';
653 DataType := ftString;
654 Size := 10;
655 Required := false;
656 end;
657 { Country }
658 with AddFieldDef do begin
659 Name := 'Country';
660 DataType := ftString;
661 Size := 25;
662 Required := false;
663 end;
664 { Note }
665 with AddFieldDef do begin
666 Name := 'Note';
667 DataType := ftString;
668 Size := 1024;
669 Required := false;
670 end;
671 { Phone1 }
672 with AddFieldDef do begin
673 Name := 'Phone1';
674 DataType := ftString;
675 Size := 25;
676 Required := false;
677 end;
678 { Phone2 }
679 with AddFieldDef do begin
680 Name := 'Phone2';
681 DataType := ftString;
682 Size := 25;
683 Required := false;
684 end;
685 { Phone3 }
686 with AddFieldDef do begin
687 Name := 'Phone3';
688 DataType := ftString;
689 Size := 25;
690 Required := false;
691 end;
692 { Phone4 }
693 with AddFieldDef do begin
694 Name := 'Phone4';
695 DataType := ftString;
696 Size := 25;
697 Required := false;
698 end;
699 { Phone5 }
700 with AddFieldDef do begin
701 Name := 'Phone5';
702 DataType := ftString;
703 Size := 25;
704 Required := false;
705 end;
706 { Phone1 }
707 with AddFieldDef do begin
708 Name := 'PhoneType1';
709 DataType := ftInteger;
710 Required := false;
711 end;
712 { Phone2 }
713 with AddFieldDef do begin
714 Name := 'PhoneType2';
715 DataType := ftInteger;
716 Required := false;
717 end;
718 { Phone3 }
719 with AddFieldDef do begin
720 Name := 'PhoneType3';
721 DataType := ftInteger;
722 Required := false;
723 end;
724 { Phone4 }
725 with AddFieldDef do begin
726 Name := 'PhoneType4';
727 DataType := ftInteger;
728 Required := false;
729 end;
730 { Phone5 }
731 with AddFieldDef do begin
732 Name := 'PhoneType5';
733 DataType := ftInteger;
734 Required := false;
735 end;
736 { Category }
737 with AddFieldDef do begin
738 Name := 'Category';
739 DataType := ftInteger;
740 Required := false;
741 end;
742 { EMail }
743 with AddFieldDef do begin
744 Name := 'EMail';
745 DataType := ftString;
746 Size := 100;
747 Required := false;
748 end;
749 { Custom1 }
750 with AddFieldDef do begin
751 Name := 'Custom1';
752 DataType := ftString;
753 Size := 100;
754 Required := false;
755 end;
756 { Custom2 }
757 with AddFieldDef do begin
758 Name := 'Custom2';
759 DataType := ftString;
760 Size := 100;
761 Required := false;
762 end;
763 { Custom3 }
764 with AddFieldDef do begin
765 Name := 'Custom3';
766 DataType := ftString;
767 Size := 100;
768 Required := false;
769 end;
770 { Custom4 }
771 with AddFieldDef do begin
772 Name := 'Custom4';
773 DataType := ftString;
774 Size := 100;
775 Required := false;
776 end;
777 { UserField0 }
778 with AddFieldDef do begin
779 Name := 'UserField0';
780 DataType := ftString;
781 Required := false;
782 end;
783 { UserField1 }
784 with AddFieldDef do begin
785 Name := 'UserField1';
786 DataType := ftString;
787 Required := false;
788 end;
789 { UserField2 }
790 with AddFieldDef do begin
791 Name := 'UserField2';
792 DataType := ftString;
793 Required := false;
794 end;
795 { UserField3 }
796 with AddFieldDef do begin
797 Name := 'UserField3';
798 DataType := ftString;
799 Required := false;
800 end;
801 { UserField4 }
802 with AddFieldDef do begin
803 Name := 'UserField4';
804 DataType := ftString;
805 Required := false;
806 end;
807 { UserField5 }
808 with AddFieldDef do begin
809 Name := 'UserField5';
810 DataType := ftString;
811 Required := false;
812 end;
813 { UserField6 }
814 with AddFieldDef do begin
815 Name := 'UserField6';
816 DataType := ftString;
817 Required := false;
818 end;
819 { UserField7 }
820 with AddFieldDef do begin
821 Name := 'UserField7';
822 DataType := ftString;
823 Required := false;
824 end;
825 { UserField8 }
826 with AddFieldDef do begin
827 Name := 'UserField8';
828 DataType := ftString;
829 Required := false;
830 end;
831 { UserField9 }
832 with AddFieldDef do begin
833 Name := 'UserField9';
834 DataType := ftString;
835 Required := false;
836 end;
837 end; {with FieldDefs do}
838 end else if TableName = TasksTableName then begin
839 with FieldDefs do begin
840 Clear;
841 { Record ID }
842 with AddFieldDef do begin
843 Name := 'RecordID';
844 DataType := ftInteger;
845 Required := true;
846 end;
847 { Resource ID }
848 with AddFieldDef do begin
849 Name := 'ResourceID';
850 DataType := ftInteger;
851 Required := true;
852 end;
853 { Complete }
854 with AddFieldDef do begin
855 Name := 'Complete';
856 DataType := ftBoolean;
857 Required := false;
858 end;
859 { Description }
860 with AddFieldDef do begin
861 Name := 'Description';
862 DataType := ftString;
863 Size := 255;
864 Required := false;
865 end;
866 { Details }
867 with AddFieldDef do begin
868 Name := 'Details';
869 DataType := ftString;
870 Size := 1024;
871 Required := false;
872 end;
873 { Created On Date }
874 with AddFieldDef do begin
875 Name := 'CreatedOn';
876 DataType := ftDateTime;
877 Required := false;
878 end;
879 { Completed On Date }
880 with AddFieldDef do begin
881 Name := 'CompletedOn';
882 DataType := ftDateTime;
883 Required := false;
884 end;
885 { Priority }
886 with AddFieldDef do begin
887 Name := 'Priority';
888 DataType := ftInteger;
889 Required := false;
890 end;
891 { Category }
892 with AddFieldDef do begin
893 Name := 'Category';
894 DataType := ftInteger;
895 Required := false;
896 end;
897 { Due Date }
898 with AddFieldDef do begin
899 Name := 'DueDate';
900 DataType := ftDateTime;
901 Required := false;
902 end;
903 { UserField0 }
904 with AddFieldDef do begin
905 Name := 'UserField0';
906 DataType := ftString;
907 Required := false;
908 end;
909 { UserField1 }
910 with AddFieldDef do begin
911 Name := 'UserField1';
912 DataType := ftString;
913 Required := false;
914 end;
915 { UserField2 }
916 with AddFieldDef do begin
917 Name := 'UserField2';
918 DataType := ftString;
919 Required := false;
920 end;
921 { UserField3 }
922 with AddFieldDef do begin
923 Name := 'UserField3';
924 DataType := ftString;
925 Required := false;
926 end;
927 { UserField4 }
928 with AddFieldDef do begin
929 Name := 'UserField4';
930 DataType := ftString;
931 Required := false;
932 end;
933 { UserField5 }
934 with AddFieldDef do begin
935 Name := 'UserField5';
936 DataType := ftString;
937 Required := false;
938 end;
939 { UserField6 }
940 with AddFieldDef do begin
941 Name := 'UserField6';
942 DataType := ftString;
943 Required := false;
944 end;
945 { UserField7 }
946 with AddFieldDef do begin
947 Name := 'UserField7';
948 DataType := ftString;
949 Required := false;
950 end;
951 { UserField8 }
952 with AddFieldDef do begin
953 Name := 'UserField8';
954 DataType := ftString;
955 Required := false;
956 end;
957 { UserField9 }
958 with AddFieldDef do begin
959 Name := 'UserField9';
960 DataType := ftString;
961 Required := false;
962 end;
963 end; {with FieldDefs do}
964 end else if TableName = RecordIDTableName then begin
965 { The RecordID Table has only one record with 4 fields }
966 { each field contains the last record ID for each of the other tables }
967 with FieldDefs do begin
968 Clear;
969 { Resource ID }
970 with AddFieldDef do begin
971 Name := 'ResourceID';
972 DataType := ftInteger;
973 Required := true;
974 end;
975 { Event ID }
976 with AddFieldDef do begin
977 Name := 'EventID';
978 DataType := ftInteger;
979 Required := true;
980 end;
981 { Task ID }
982 with AddFieldDef do begin
983 Name := 'TaskID';
984 DataType := ftInteger;
985 Required := true;
986 end;
987 { Contact ID }
988 with AddFieldDef do begin
989 Name := 'ContactID';
990 DataType := ftInteger;
991 Required := true;
992 end;
993 { UserField0 }
994 with AddFieldDef do begin
995 Name := 'UserField0';
996 DataType := ftString;
997 Required := false;
998 end;
999 { UserField1 }
1000 with AddFieldDef do begin
1001 Name := 'UserField1';
1002 DataType := ftString;
1003 Required := false;
1004 end;
1005 { UserField2 }
1006 with AddFieldDef do begin
1007 Name := 'UserField2';
1008 DataType := ftString;
1009 Required := false;
1010 end;
1011 { UserField3 }
1012 with AddFieldDef do begin
1013 Name := 'UserField3';
1014 DataType := ftString;
1015 Required := false;
1016 end;
1017 { UserField4 }
1018 with AddFieldDef do begin
1019 Name := 'UserField4';
1020 DataType := ftString;
1021 Required := false;
1022 end;
1023 { UserField5 }
1024 with AddFieldDef do begin
1025 Name := 'UserField5';
1026 DataType := ftString;
1027 Required := false;
1028 end;
1029 { UserField6 }
1030 with AddFieldDef do begin
1031 Name := 'UserField6';
1032 DataType := ftString;
1033 Required := false;
1034 end;
1035 { UserField7 }
1036 with AddFieldDef do begin
1037 Name := 'UserField7';
1038 DataType := ftString;
1039 Required := false;
1040 end;
1041 { UserField8 }
1042 with AddFieldDef do begin
1043 Name := 'UserField8';
1044 DataType := ftString;
1045 Required := false;
1046 end;
1047 { UserField9 }
1048 with AddFieldDef do begin
1049 Name := 'UserField9';
1050 DataType := ftString;
1051 Required := false;
1052 end;
1053 end; {with FieldDefs do}
1054 end else if TableName = RecordIDTableName then begin
1055
1056 with FieldDefs do begin
1057 Clear;
1058 { Resource ID }
1059 with AddFieldDef do begin
1060 Name := 'ResourceID';
1061 DataType := ftInteger;
1062 Required := true;
1063 end;
1064 { Event ID }
1065 with AddFieldDef do begin
1066 Name := 'EventID';
1067 DataType := ftInteger;
1068 Required := true;
1069 end;
1070 { Task ID }
1071 with AddFieldDef do begin
1072 Name := 'TaskID';
1073 DataType := ftInteger;
1074 Required := true;
1075 end;
1076 { Contact ID }
1077 with AddFieldDef do begin
1078 Name := 'ContactID';
1079 DataType := ftInteger;
1080 Required := true;
1081 end;
1082 end; {with FieldDefs do}
1083 end;
1084end;
1085{=====}
1086
1087procedure TFrmSimplePlanner.CreateIndexDefs(const TableName: string;
1088 IndexDefs: TIndexDefs);
1089begin
1090 if TableName = ResourceTableName then begin
1091 with IndexDefs do begin
1092 with AddIndexDef do begin
1093 Name := '';
1094 Fields := 'ResourceID';
1095 Options := [ixPrimary];
1096 end;
1097 with AddIndexDef do begin
1098 Name := 'Descr_ndx';
1099 Fields := 'Description';
1100 Options := [ixCaseInsensitive];
1101 end;
1102 end;
1103 end else if TableName = EventsTableName then begin
1104 with IndexDefs do begin
1105 with AddIndexDef do begin
1106 Name := '';
1107 Fields := 'RecordID';
1108 Options := [ixPrimary];
1109 end;
1110 with AddIndexDef do begin
1111 Name := 'ResID_ndx';
1112 Fields := 'ResourceID';
1113 Options := [ixCaseInsensitive];
1114 end;
1115 with AddIndexDef do begin
1116 Name := 'st_ndx';
1117 Fields := 'StartTime';
1118 Options := [ixCaseInsensitive];
1119 end;
1120 with AddIndexDef do begin
1121 Name := 'et_ndx';
1122 Fields := 'EndTime';
1123 Options := [ixCaseInsensitive];
1124 end;
1125 end;
1126 end else if TableName = ContactsTableName then begin
1127 with IndexDefs do begin
1128 with AddIndexDef do begin
1129 Name := '';
1130 Fields := 'RecordID';
1131 Options := [ixPrimary];
1132 end;
1133 with AddIndexDef do begin
1134 Name := 'ResID_ndx';
1135 Fields := 'ResourceID';
1136 Options := [ixCaseInsensitive];
1137 end;
1138 with AddIndexDef do begin
1139 Name := 'LName_ndx';
1140 Fields := 'LastName';
1141 Options := [ixCaseInsensitive];
1142 end;
1143 with AddIndexDef do begin
1144 Name := 'Company_ndx';
1145 Fields := 'Company';
1146 Options := [ixCaseInsensitive];
1147 end;
1148 end;
1149 end else if TableName = TasksTableName then begin
1150 with IndexDefs do begin
1151 with AddIndexDef do begin
1152 Name := '';
1153 Fields := 'RecordID';
1154 Options := [ixPrimary];
1155 end;
1156 with AddIndexDef do begin
1157 Name := 'ResID_ndx';
1158 Fields := 'ResourceID';
1159 Options := [ixCaseInsensitive];
1160 end;
1161
1162 with AddIndexDef do begin
1163 Name := 'DueDate';
1164 Fields := 'DueDate';
1165 Options := [];
1166 end;
1167 with AddIndexDef do begin
1168 Name := 'CompletedOn';
1169 Fields := 'CompletedOn';
1170 Options := [];
1171 end;
1172 end;
1173 end;
1174end;
1175{=====}
1176
1177end.