ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/branches/journaling/examples/employee/unit1.lfm
Revision: 363
Committed: Tue Dec 7 13:30:05 2021 UTC (2 years, 4 months ago) by tony
File size: 26073 byte(s)
Log Message:
add fbintf

File Contents

# Content
1 object Form1: TForm1
2 Left = 480
3 Height = 482
4 Top = 407
5 Width = 932
6 Caption = 'Employee List'
7 ClientHeight = 482
8 ClientWidth = 932
9 DefaultMonitor = dmPrimary
10 OnClose = FormClose
11 OnShow = FormShow
12 Position = poMainFormCenter
13 LCLVersion = '2.2.0.2'
14 object Button1: TButton
15 Left = 845
16 Height = 25
17 Top = 48
18 Width = 75
19 Action = AddEmployee
20 Anchors = [akTop, akRight]
21 TabOrder = 0
22 end
23 object Button2: TButton
24 Left = 845
25 Height = 25
26 Top = 86
27 Width = 75
28 Action = EditEmployee
29 Anchors = [akTop, akRight]
30 TabOrder = 1
31 end
32 object Button3: TButton
33 Left = 845
34 Height = 25
35 Top = 125
36 Width = 75
37 Action = DeleteEmployee
38 Anchors = [akTop, akRight]
39 TabOrder = 2
40 end
41 object Label1: TLabel
42 Left = 17
43 Height = 15
44 Top = 14
45 Width = 87
46 Caption = 'Started Before'
47 end
48 object BeforeDate: TDateEdit
49 Left = 112
50 Height = 24
51 Top = 8
52 Width = 80
53 CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
54 DateOrder = doNone
55 ButtonWidth = 23
56 NumGlyphs = 1
57 MaxLength = 0
58 OnChange = BeforeDateChange
59 TabOrder = 3
60 end
61 object Label2: TLabel
62 Left = 241
63 Height = 15
64 Top = 14
65 Width = 78
66 Caption = 'Started After'
67 end
68 object AfterDate: TDateEdit
69 Left = 333
70 Height = 24
71 Top = 8
72 Width = 80
73 CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
74 DateOrder = doNone
75 ButtonWidth = 23
76 NumGlyphs = 1
77 MaxLength = 0
78 OnChange = BeforeDateChange
79 TabOrder = 4
80 end
81 object Panel1: TPanel
82 Left = 12
83 Height = 434
84 Top = 42
85 Width = 810
86 Anchors = [akTop, akLeft, akRight, akBottom]
87 BevelOuter = bvNone
88 ClientHeight = 434
89 ClientWidth = 810
90 Color = clBackground
91 ParentColor = False
92 TabOrder = 5
93 object IBDynamicGrid1: TIBDynamicGrid
94 Left = 0
95 Height = 384
96 Top = 0
97 Width = 810
98 Align = alClient
99 Color = clWindow
100 Columns = <
101 item
102 Title.Alignment = taCenter
103 Title.Caption = 'Last Name'
104 Width = 100
105 FieldName = 'LAST_NAME'
106 AutoSizeColumn = False
107 InitialSortColumn = False
108 DBLookupProperties.ItemHeight = 0
109 DBLookupProperties.ItemWidth = 0
110 DBLookupProperties.AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending]
111 end
112 item
113 Title.Alignment = taCenter
114 Title.Caption = 'First Name'
115 Width = 100
116 FieldName = 'FIRST_NAME'
117 AutoSizeColumn = False
118 InitialSortColumn = False
119 DBLookupProperties.ItemHeight = 0
120 DBLookupProperties.ItemWidth = 0
121 DBLookupProperties.AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending]
122 end
123 item
124 Alignment = taCenter
125 Title.Alignment = taCenter
126 Title.Caption = 'Emp No.'
127 Width = 60
128 FieldName = 'EMP_NO'
129 AutoSizeColumn = False
130 InitialSortColumn = False
131 DBLookupProperties.ItemHeight = 0
132 DBLookupProperties.ItemWidth = 0
133 DBLookupProperties.AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending]
134 end
135 item
136 ReadOnly = True
137 Title.Alignment = taCenter
138 Title.Caption = 'Dept'
139 Width = 200
140 FieldName = 'DEPT_PATH'
141 AutoSizeColumn = True
142 InitialSortColumn = False
143 DBLookupProperties.ItemHeight = 0
144 DBLookupProperties.ItemWidth = 0
145 DBLookupProperties.AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending]
146 end
147 item
148 ButtonStyle = cbsPickList
149 Title.Alignment = taCenter
150 Title.Caption = 'Located'
151 Width = 100
152 FieldName = 'JOB_COUNTRY'
153 AutoSizeColumn = False
154 InitialSortColumn = False
155 DBLookupProperties.ItemHeight = 0
156 DBLookupProperties.ItemWidth = 0
157 DBLookupProperties.ListSource = CountrySource
158 DBLookupProperties.ListField = 'COUNTRY'
159 DBLookupProperties.AutoInsert = False
160 DBLookupProperties.AutoComplete = False
161 end
162 item
163 Title.Alignment = taCenter
164 Title.Caption = 'Started'
165 Width = 80
166 FieldName = 'HIRE_DATE'
167 AutoSizeColumn = False
168 InitialSortColumn = False
169 DBLookupProperties.ItemHeight = 0
170 DBLookupProperties.ItemWidth = 0
171 DBLookupProperties.AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending]
172 end
173 item
174 Title.Alignment = taCenter
175 Title.Caption = 'Salary'
176 Width = 120
177 FieldName = 'SALARY'
178 ColumnTotalsControl = DBText1
179 AutoSizeColumn = False
180 InitialSortColumn = False
181 DBLookupProperties.ItemHeight = 0
182 DBLookupProperties.ItemWidth = 0
183 DBLookupProperties.AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending]
184 end>
185 DataSource = EmployeeSource
186 Scrollbars = ssAutoBoth
187 TabOrder = 0
188 EditorPanel = EmployeeEditorPanel
189 ExpandEditorPanelBelowRow = False
190 Descending = False
191 EditorBorderStyle = bsSingle
192 DefaultPositionAtEnd = False
193 IndexFieldNames = 'EMP_NO'
194 end
195 object Panel2: TPanel
196 Left = 0
197 Height = 50
198 Top = 384
199 Width = 810
200 Align = alBottom
201 BevelOuter = bvNone
202 ClientHeight = 50
203 ClientWidth = 810
204 ParentColor = False
205 TabOrder = 1
206 object Button5: TButton
207 Left = 80
208 Height = 25
209 Top = 16
210 Width = 75
211 Action = CancelChanges
212 Anchors = [akLeft, akBottom]
213 TabOrder = 0
214 end
215 object Button4: TButton
216 Left = 1
217 Height = 25
218 Top = 16
219 Width = 75
220 Action = SaveChanges
221 Anchors = [akLeft, akBottom]
222 TabOrder = 1
223 end
224 object DBText1: TDBText
225 Left = 688
226 Height = 27
227 Top = 16
228 Width = 49
229 Alignment = taRightJustify
230 Anchors = [akTop, akLeft, akBottom]
231 DataField = 'TOTALSALARIES'
232 DataSource = TotalsSource
233 end
234 end
235 object EmployeeEditorPanel: TPanel
236 Left = 8
237 Height = 80
238 Top = 112
239 Width = 784
240 BevelOuter = bvNone
241 BorderWidth = 2
242 BorderStyle = bsSingle
243 ClientHeight = 78
244 ClientWidth = 782
245 Color = clWindow
246 ParentColor = False
247 TabOrder = 2
248 Visible = False
249 object Label3: TLabel
250 Left = 0
251 Height = 15
252 Top = 7
253 Width = 83
254 Caption = 'Employee No.'
255 end
256 object DBEdit1: TDBEdit
257 Left = 90
258 Height = 24
259 Top = 2
260 Width = 120
261 DataField = 'EMP_NO'
262 DataSource = EmployeeSource
263 MaxLength = 0
264 TabOrder = 0
265 end
266 object Label4: TLabel
267 Left = 12
268 Height = 15
269 Top = 32
270 Width = 64
271 Caption = 'First Name'
272 end
273 object DBEdit2: TDBEdit
274 Left = 90
275 Height = 24
276 Top = 24
277 Width = 120
278 DataField = 'FIRST_NAME'
279 DataSource = EmployeeSource
280 MaxLength = 0
281 TabOrder = 1
282 end
283 object Label5: TLabel
284 Left = 12
285 Height = 15
286 Top = 56
287 Width = 64
288 Caption = 'Last Name'
289 end
290 object DBEdit3: TDBEdit
291 Left = 90
292 Height = 24
293 Top = 46
294 Width = 120
295 DataField = 'LAST_NAME'
296 DataSource = EmployeeSource
297 MaxLength = 0
298 TabOrder = 2
299 end
300 object Label6: TLabel
301 Left = 216
302 Height = 15
303 Top = 7
304 Width = 77
305 Caption = 'Date Started'
306 end
307 object IBDateEdit1: TDBDateEdit
308 Left = 300
309 Height = 24
310 Top = 2
311 Width = 104
312 CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
313 DateOrder = doNone
314 ButtonWidth = 23
315 AutoSelect = False
316 NumGlyphs = 1
317 MaxLength = 0
318 TabOrder = 3
319 DataField = 'HIRE_DATE'
320 DataSource = EmployeeSource
321 end
322 object Label7: TLabel
323 Left = 252
324 Height = 15
325 Top = 32
326 Width = 37
327 Caption = 'Salary'
328 end
329 object DBEdit4: TDBEdit
330 Left = 300
331 Height = 24
332 Top = 24
333 Width = 104
334 DataField = 'SALARY'
335 DataSource = EmployeeSource
336 MaxLength = 0
337 TabOrder = 5
338 end
339 object Label8: TLabel
340 Left = 708
341 Height = 15
342 Top = 54
343 Width = 24
344 Anchors = [akTop, akRight]
345 Caption = 'Ext.'
346 end
347 object DBEdit5: TDBEdit
348 Left = 732
349 Height = 24
350 Top = 48
351 Width = 40
352 DataField = 'PHONE_EXT'
353 DataSource = EmployeeSource
354 Anchors = [akTop, akRight]
355 MaxLength = 0
356 TabOrder = 4
357 end
358 object Label9: TLabel
359 Left = 536
360 Height = 15
361 Top = 7
362 Width = 50
363 Caption = 'Location'
364 end
365 object Label10: TLabel
366 Left = 413
367 Height = 15
368 Top = 9
369 Width = 59
370 Caption = 'Job Grade'
371 end
372 object JobGradeDBComboBox: TDBComboBox
373 Left = 480
374 Height = 23
375 Top = 2
376 Width = 48
377 AutoSize = False
378 DataField = 'JOB_GRADE'
379 DataSource = EmployeeSource
380 ItemHeight = 0
381 Items.Strings = (
382 '1'
383 '2'
384 '3'
385 '4'
386 '5'
387 )
388 MaxLength = 0
389 OnCloseUp = JobGradeDBComboBoxCloseUp
390 Style = csDropDownList
391 TabOrder = 6
392 end
393 object Label11: TLabel
394 Left = 536
395 Height = 15
396 Top = 32
397 Width = 48
398 Caption = 'Job Title'
399 end
400 object Label12: TLabel
401 Left = 256
402 Height = 15
403 Top = 54
404 Width = 33
405 Caption = 'Dept.'
406 end
407 object SpeedButton1: TSpeedButton
408 Left = 680
409 Height = 25
410 Top = 48
411 Width = 23
412 Action = SelectDept
413 Anchors = [akTop, akRight]
414 end
415 object DBEdit6: TDBEdit
416 Left = 300
417 Height = 24
418 Top = 48
419 Width = 372
420 DataField = 'DEPT_PATH'
421 DataSource = EmployeeSource
422 ReadOnly = True
423 Anchors = [akTop, akLeft, akRight]
424 MaxLength = 0
425 TabOrder = 7
426 end
427 object IBLookupComboEditBox2: TIBLookupComboEditBox
428 Left = 600
429 Height = 23
430 Top = 0
431 Width = 172
432 Anchors = [akTop, akLeft, akRight]
433 AutoSize = False
434 DataField = 'JOB_COUNTRY'
435 DataSource = EmployeeSource
436 KeyField = 'COUNTRY'
437 ListField = 'COUNTRY'
438 ListFieldIndex = 0
439 ListSource = CountrySource
440 LookupCache = False
441 Style = csDropDownList
442 TabOrder = 8
443 AutoInsert = False
444 AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending]
445 ItemHeight = 0
446 end
447 object IBLookupComboEditBox1: TIBLookupComboEditBox
448 Left = 600
449 Height = 23
450 Top = 24
451 Width = 172
452 Anchors = [akTop, akLeft, akRight]
453 AutoSize = False
454 DataField = 'JOB_CODE'
455 DataSource = EmployeeSource
456 KeyField = 'JOB_CODE'
457 ListField = 'JOB_TITLE'
458 ListFieldIndex = 0
459 ListSource = JobCodeSource
460 LookupCache = False
461 Style = csDropDownList
462 TabOrder = 9
463 AutoInsert = False
464 AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending]
465 ItemHeight = 0
466 end
467 end
468 end
469 object Label13: TLabel
470 Left = 456
471 Height = 15
472 Top = 14
473 Width = 79
474 Caption = 'Salary Range'
475 end
476 object SalaryRange: TComboBox
477 Left = 544
478 Height = 25
479 Top = 8
480 Width = 272
481 ItemHeight = 0
482 ItemIndex = 0
483 Items.Strings = (
484 'None Specified'
485 'Below $40,000'
486 'Between $40,000 and $100,000'
487 'Above $100,000'
488 )
489 OnCloseUp = BeforeDateChange
490 Style = csDropDownList
491 TabOrder = 6
492 Text = 'None Specified'
493 end
494 object IBDatabase1: TIBDatabase
495 Connected = False
496 CreateIfNotExists = False
497 AllowStreamedConnected = False
498 DatabaseName = 'localhost:employee'
499 Params.Strings = (
500 'user_name=SYSDBA'
501 'lc_ctype=UTF8'
502 )
503 DefaultTransaction = IBTransaction1
504 IdleTimer = 0
505 TraceFlags = []
506 UseDefaultSystemCodePage = False
507 Left = 832
508 Top = 168
509 end
510 object IBTransaction1: TIBTransaction
511 Active = False
512 DefaultDatabase = IBDatabase1
513 Params.Strings = (
514 'read_committed'
515 'rec_version'
516 'nowait'
517 )
518 Left = 872
519 Top = 168
520 end
521 object EmployeeSource: TDataSource
522 DataSet = Employees
523 Left = 832
524 Top = 336
525 end
526 object ActionList1: TActionList
527 Left = 832
528 Top = 416
529 object AddEmployee: TAction
530 Caption = 'Add'
531 OnExecute = AddEmployeeExecute
532 end
533 object EditEmployee: TAction
534 Caption = 'Edit'
535 OnExecute = EditEmployeeExecute
536 OnUpdate = EditEmployeeUpdate
537 end
538 object DeleteEmployee: TAction
539 Caption = 'Delete'
540 OnExecute = DeleteEmployeeExecute
541 OnUpdate = EditEmployeeUpdate
542 end
543 object SaveChanges: TAction
544 Caption = 'Save'
545 OnExecute = SaveChangesExecute
546 OnUpdate = SaveChangesUpdate
547 end
548 object CancelChanges: TAction
549 Caption = 'Cancel'
550 OnExecute = CancelChangesExecute
551 OnUpdate = SaveChangesUpdate
552 end
553 object SelectDept: TAction
554 Caption = '...'
555 OnExecute = SelectDeptExecute
556 end
557 end
558 object CountrySource: TDataSource
559 DataSet = Countries
560 Left = 832
561 Top = 296
562 end
563 object TotalsQuery: TIBQuery
564 AllowAutoActivateTransaction = False
565 Database = IBDatabase1
566 Transaction = IBTransaction1
567 BeforeOpen = EmployeesBeforeOpen
568 BufferChunks = 1000
569 CachedUpdates = False
570 CaseSensitiveParameterNames = False
571 EnableStatistics = False
572 GenerateParamNames = False
573 GeneratorField.ApplyOnEvent = gaeOnNewRecord
574 MasterDetailDelay = 0
575 SQL.Strings = (
576 'Select cast(sum(Salary) as Numeric(12,2)) as TotalSalaries'
577 'From EMPLOYEE'
578 )
579 Params = <>
580 SQLFiltered = False
581 DataSetCloseAction = dcDiscardChanges
582 TZTextOption = tzOffset
583 DefaultTZDate = 43831
584 Left = 872
585 Top = 376
586 object TotalsQueryTOTALSALARIES: TIBBCDField
587 DisplayWidth = 18
588 FieldKind = fkData
589 FieldName = 'TOTALSALARIES'
590 Index = 0
591 LookupCache = False
592 ProviderFlags = [pfInUpdate, pfInWhere]
593 ReadOnly = False
594 Required = False
595 OnGetText = EmployeesSALARYGetText
596 Precision = 18
597 Currency = False
598 MaxValue = 0
599 MinValue = 0
600 Size = 2
601 end
602 end
603 object TotalsSource: TDataSource
604 DataSet = TotalsQuery
605 Left = 832
606 Top = 376
607 end
608 object Employees: TIBDataSet
609 AllowAutoActivateTransaction = False
610 Database = IBDatabase1
611 Transaction = IBTransaction1
612 ForcedRefresh = True
613 AfterDelete = EmployeesAfterDelete
614 AfterEdit = EmployeesAfterDelete
615 AfterInsert = EmployeesAfterInsert
616 AfterOpen = EmployeesAfterOpen
617 AfterScroll = EmployeesAfterScroll
618 BeforeClose = EmployeesBeforeClose
619 BeforeOpen = EmployeesBeforeOpen
620 BufferChunks = 5000
621 CachedUpdates = False
622 CaseSensitiveParameterNames = True
623 EnableStatistics = False
624 DeleteSQL.Strings = (
625 'Delete From EMPLOYEE A'
626 'Where A.EMP_NO = :EMP_NO'
627 )
628 InsertSQL.Strings = (
629 'Insert Into EMPLOYEE(EMP_NO, FIRST_NAME, LAST_NAME, PHONE_EXT, HIRE_DATE, DEPT_NO, JOB_CODE, JOB_GRADE, JOB_COUNTRY, SALARY)'
630 'Values(:EMP_NO, :FIRST_NAME, :LAST_NAME, :PHONE_EXT, :HIRE_DATE, :DEPT_NO, :JOB_CODE, :JOB_GRADE, :JOB_COUNTRY, :SALARY)'
631 )
632 RefreshSQL.Strings = (
633 'with recursive Depts As ('
634 'Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH,'
635 'cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH'
636 'From DEPARTMENT Where HEAD_DEPT is NULL '
637 'UNION ALL'
638 'Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || '' / '' || D.DEPARTMENT as DEPT_PATH,'
639 'Depts.DEPT_KEY_PATH || '';'' || D.DEPT_NO as DEPT_KEY_PATH'
640 'From DEPARTMENT D'
641 'JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO'
642 ')'
643 ''
644 'Select A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, '
645 'A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH'
646 'From EMPLOYEE A'
647 'JOIN Depts D On D.DEPT_NO = A.DEPT_NO'
648 ''
649 'Where A.EMP_NO = :EMP_NO'
650 )
651 SelectSQL.Strings = (
652 'with recursive Depts As ('
653 'Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH,'
654 'cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH'
655 'From DEPARTMENT Where HEAD_DEPT is NULL '
656 'UNION ALL'
657 'Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || '' / '' || D.DEPARTMENT as DEPT_PATH,'
658 'Depts.DEPT_KEY_PATH || '';'' || D.DEPT_NO as DEPT_KEY_PATH'
659 'From DEPARTMENT D'
660 'JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO'
661 ')'
662 ''
663 'Select distinct A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, '
664 'A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH'
665 'From EMPLOYEE A'
666 'JOIN Depts D On D.DEPT_NO = A.DEPT_NO'
667 )
668 ModifySQL.Strings = (
669 'Update EMPLOYEE A Set '#13#10' A.DEPT_NO = :DEPT_NO,'#13#10' A.FIRST_NAME = :FIRST_NAME,'#13#10' A.HIRE_DATE = :HIRE_DATE,'#13#10' A.JOB_CODE = :JOB_CODE,'#13#10' A.JOB_COUNTRY = :JOB_COUNTRY,'#13#10' A.JOB_GRADE = :JOB_GRADE,'#13#10' A.LAST_NAME = :LAST_NAME,'#13#10' A.PHONE_EXT = :PHONE_EXT,'#13#10' A.SALARY = :SALARY'
670 'Where A.EMP_NO = :OLD_EMP_NO'
671 )
672 GeneratorField.Generator = 'EMP_NO_GEN'
673 GeneratorField.Field = 'EMP_NO'
674 GeneratorField.ApplyOnEvent = gaeOnNewRecord
675 GenerateParamNames = False
676 MasterDetailDelay = 0
677 DataSetCloseAction = dcSaveChanges
678 TZTextOption = tzOffset
679 DefaultTZDate = 43831
680 SQLFiltered = False
681 AfterTransactionEnd = EmployeesAfterTransactionEnd
682 OnValidatePost = EmployeesValidatePost
683 Left = 872
684 Top = 336
685 object EmployeesEMP_NO: TSmallintField
686 DisplayWidth = 10
687 FieldKind = fkData
688 FieldName = 'EMP_NO'
689 Index = 0
690 LookupCache = False
691 ProviderFlags = [pfInUpdate, pfInWhere]
692 ReadOnly = False
693 Required = True
694 end
695 object EmployeesFIRST_NAME: TIBStringField
696 DisplayWidth = 15
697 FieldKind = fkData
698 FieldName = 'FIRST_NAME'
699 Index = 1
700 LookupCache = False
701 ProviderFlags = [pfInUpdate, pfInWhere]
702 ReadOnly = False
703 Required = True
704 Size = 15
705 end
706 object EmployeesLAST_NAME: TIBStringField
707 DisplayWidth = 20
708 FieldKind = fkData
709 FieldName = 'LAST_NAME'
710 Index = 2
711 LookupCache = False
712 ProviderFlags = [pfInUpdate, pfInWhere]
713 ReadOnly = False
714 Required = True
715 end
716 object EmployeesPHONE_EXT: TIBStringField
717 Alignment = taRightJustify
718 DisplayWidth = 4
719 FieldKind = fkData
720 FieldName = 'PHONE_EXT'
721 Index = 3
722 LookupCache = False
723 ProviderFlags = [pfInUpdate, pfInWhere]
724 ReadOnly = False
725 Required = False
726 Size = 4
727 end
728 object EmployeesHIRE_DATE: TDateTimeField
729 DisplayWidth = 10
730 FieldKind = fkData
731 FieldName = 'HIRE_DATE'
732 Index = 4
733 LookupCache = False
734 ProviderFlags = [pfInUpdate, pfInWhere]
735 ReadOnly = False
736 Required = True
737 end
738 object EmployeesDEPT_NO: TIBStringField
739 DisplayWidth = 3
740 FieldKind = fkData
741 FieldName = 'DEPT_NO'
742 Index = 5
743 LookupCache = False
744 ProviderFlags = [pfInUpdate, pfInWhere]
745 ReadOnly = False
746 Required = True
747 Size = 3
748 end
749 object EmployeesJOB_CODE: TIBStringField
750 DisplayWidth = 5
751 FieldKind = fkData
752 FieldName = 'JOB_CODE'
753 Index = 6
754 LookupCache = False
755 ProviderFlags = [pfInUpdate, pfInWhere]
756 ReadOnly = False
757 Required = True
758 OnChange = EmployeesJOB_CODEChange
759 Size = 5
760 end
761 object EmployeesJOB_GRADE: TSmallintField
762 DisplayWidth = 10
763 FieldKind = fkData
764 FieldName = 'JOB_GRADE'
765 Index = 7
766 LookupCache = False
767 ProviderFlags = [pfInUpdate, pfInWhere]
768 ReadOnly = False
769 Required = True
770 OnChange = EmployeesJOB_GRADEChange
771 end
772 object EmployeesJOB_COUNTRY: TIBStringField
773 DisplayWidth = 15
774 FieldKind = fkData
775 FieldName = 'JOB_COUNTRY'
776 Index = 8
777 LookupCache = False
778 ProviderFlags = [pfInUpdate, pfInWhere]
779 ReadOnly = False
780 Required = True
781 Size = 15
782 end
783 object EmployeesSALARY: TIBBCDField
784 DisplayWidth = 18
785 FieldKind = fkData
786 FieldName = 'SALARY'
787 Index = 9
788 LookupCache = False
789 ProviderFlags = [pfInUpdate, pfInWhere]
790 ReadOnly = False
791 Required = True
792 OnGetText = EmployeesSALARYGetText
793 Precision = 18
794 Currency = False
795 MaxValue = 0
796 MinValue = 0
797 Size = 2
798 end
799 object EmployeesFULL_NAME: TIBStringField
800 DisplayWidth = 37
801 FieldKind = fkData
802 FieldName = 'FULL_NAME'
803 Index = 10
804 LookupCache = False
805 ProviderFlags = [pfInUpdate, pfInWhere]
806 ReadOnly = True
807 Required = False
808 Size = 37
809 end
810 object EmployeesDEPT_PATH: TIBStringField
811 DisplayWidth = 256
812 FieldKind = fkData
813 FieldName = 'DEPT_PATH'
814 Index = 11
815 LookupCache = False
816 ProviderFlags = [pfInUpdate, pfInWhere]
817 ReadOnly = False
818 Required = True
819 Size = 256
820 end
821 object EmployeesDEPT_KEY_PATH: TIBStringField
822 DisplayWidth = 64
823 FieldKind = fkData
824 FieldName = 'DEPT_KEY_PATH'
825 Index = 12
826 LookupCache = False
827 ProviderFlags = [pfInUpdate, pfInWhere]
828 ReadOnly = False
829 Required = True
830 Size = 64
831 end
832 end
833 object Countries: TIBQuery
834 AllowAutoActivateTransaction = False
835 Database = IBDatabase1
836 Transaction = IBTransaction1
837 BeforeOpen = CountriesBeforeOpen
838 BufferChunks = 1000
839 CachedUpdates = False
840 CaseSensitiveParameterNames = False
841 EnableStatistics = False
842 GenerateParamNames = False
843 GeneratorField.ApplyOnEvent = gaeOnNewRecord
844 MasterDetailDelay = 0
845 SQL.Strings = (
846 'Select A.COUNTRY, A.CURRENCY From COUNTRY A'
847 'JOIN JOB J On J.JOB_COUNTRY = A.COUNTRY'
848 'Where J.JOB_CODE = :JOB_CODE and J.JOB_GRADE = :JOB_GRADE'
849 'Order by 1'
850 )
851 Params = <
852 item
853 DataType = ftUnknown
854 Name = 'JOB_CODE'
855 ParamType = ptInput
856 end
857 item
858 DataType = ftUnknown
859 Name = 'JOB_GRADE'
860 ParamType = ptInput
861 end>
862 SQLFiltered = False
863 DataSetCloseAction = dcDiscardChanges
864 TZTextOption = tzOffset
865 DefaultTZDate = 43831
866 Left = 872
867 Top = 296
868 ParamData = <
869 item
870 DataType = ftUnknown
871 Name = 'JOB_CODE'
872 ParamType = ptInput
873 end
874 item
875 DataType = ftUnknown
876 Name = 'JOB_GRADE'
877 ParamType = ptInput
878 end>
879 end
880 object JobCodeSource: TDataSource
881 DataSet = JobCodes
882 Left = 832
883 Top = 256
884 end
885 object JobCodes: TIBQuery
886 AllowAutoActivateTransaction = False
887 Database = IBDatabase1
888 Transaction = IBTransaction1
889 BeforeOpen = JobCodesBeforeOpen
890 BufferChunks = 1000
891 CachedUpdates = False
892 CaseSensitiveParameterNames = False
893 EnableStatistics = False
894 GenerateParamNames = False
895 GeneratorField.ApplyOnEvent = gaeOnNewRecord
896 MasterDetailDelay = 0
897 SQL.Strings = (
898 'Select A.JOB_CODE, A.JOB_TITLE From JOB A'
899 'Where JOB_COUNTRY = :JOB_COUNTRY and JOB_GRADE = :JOB_GRADE'
900 'Order by Upper(JOB_TITLE)'
901 )
902 Params = <
903 item
904 DataType = ftUnknown
905 Name = 'JOB_COUNTRY'
906 ParamType = ptInput
907 end
908 item
909 DataType = ftUnknown
910 Name = 'JOB_GRADE'
911 ParamType = ptInput
912 end>
913 SQLFiltered = False
914 DataSetCloseAction = dcDiscardChanges
915 TZTextOption = tzOffset
916 DefaultTZDate = 43831
917 Left = 872
918 Top = 256
919 ParamData = <
920 item
921 DataType = ftUnknown
922 Name = 'JOB_COUNTRY'
923 ParamType = ptInput
924 end
925 item
926 DataType = ftUnknown
927 Name = 'JOB_GRADE'
928 ParamType = ptInput
929 end>
930 end
931 object Depts: TIBQuery
932 AllowAutoActivateTransaction = False
933 Database = IBDatabase1
934 Transaction = IBTransaction1
935 BufferChunks = 1000
936 CachedUpdates = False
937 CaseSensitiveParameterNames = False
938 EnableStatistics = False
939 GenerateParamNames = False
940 GeneratorField.ApplyOnEvent = gaeOnNewRecord
941 MasterDetailDelay = 0
942 SQL.Strings = (
943 'Select A.DEPT_NO, A.DEPARTMENT From DEPARTMENT A'
944 ''
945 'Order by Upper(Department)'
946 )
947 Params = <>
948 SQLFiltered = False
949 DataSetCloseAction = dcDiscardChanges
950 TZTextOption = tzOffset
951 DefaultTZDate = 43831
952 Left = 872
953 Top = 210
954 end
955 object DeptsSource: TDataSource
956 DataSet = Depts
957 Left = 832
958 Top = 208
959 end
960 object JobGradeChangeTimer: TTimer
961 Interval = 0
962 OnTimer = JobGradeChangeTimerTimer
963 Left = 777
964 Top = 304
965 end
966 object JobCodeChangeTimer: TTimer
967 Interval = 0
968 OnTimer = JobCodeChangeTimerTimer
969 Left = 776
970 Top = 353
971 end
972 end