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