ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/examples/employee/unit1.lfm
Revision: 62
Committed: Wed Apr 12 09:19:59 2017 UTC (6 years, 11 months ago) by tony
File size: 25685 byte(s)
Log Message:
Avoid "Object is nil" error when opening a database with DefaultSystemCodePage = true

File Contents

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