ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/examples/isqlmonitor/MainForm.lfm
Revision: 68
Committed: Tue Oct 17 10:07:58 2017 UTC (6 years, 6 months ago) by tony
File size: 25860 byte(s)
Log Message:
IBX: Editor Positioning tidy up
FBINTF: Trap uninitialised SQL parameters on SQL Exec. Avoids Unknown SQL Type errors.
Consistent setting of Modified (SQLParam).

File Contents

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