ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/examples/employee/unit1.lfm
(Generate patch)

Comparing ibx/trunk/examples/employee/unit1.lfm (file contents):
Revision 7 by tony, Sun Aug 5 18:28:19 2012 UTC vs.
Revision 107 by tony, Thu Jan 18 14:37:40 2018 UTC

# Line 1 | Line 1
1   object Form1: TForm1
2 <  Left = 461
3 <  Height = 454
4 <  Top = 312
5 <  Width = 743
6 <  Caption = 'Form1'
7 <  ClientHeight = 454
8 <  ClientWidth = 743
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 <  LCLVersion = '0.9.30.1'
13 <  object DBGrid1: TDBGrid
13 <    Left = 8
14 <    Height = 375
15 <    Top = 24
16 <    Width = 632
17 <    Color = clWindow
18 <    Columns = <    
19 <      item
20 <        Title.Alignment = taCenter
21 <        Title.Caption = 'Last Name'
22 <        Width = 150
23 <        FieldName = 'LAST_NAME'
24 <      end    
25 <      item
26 <        Title.Alignment = taCenter
27 <        Title.Caption = 'First Name'
28 <        Width = 150
29 <        FieldName = 'FIRST_NAME'
30 <      end    
31 <      item
32 <        Title.Alignment = taCenter
33 <        Title.Caption = 'Employee No.'
34 <        Width = 100
35 <        FieldName = 'EMP_NO'
36 <      end    
37 <      item
38 <        Alignment = taCenter
39 <        Title.Alignment = taCenter
40 <        Title.Caption = 'Started'
41 <        Width = 80
42 <        FieldName = 'HIRE_DATE'
43 <      end    
44 <      item
45 <        Title.Alignment = taCenter
46 <        Title.Caption = 'Salary'
47 <        Width = 100
48 <        FieldName = 'SALARY'
49 <      end>
50 <    DataSource = Datasource1
51 <    TabOrder = 0
52 <    OnDblClick = DBGrid1DblClick
53 <  end
12 >  Position = poMainFormCenter
13 >  LCLVersion = '1.8.1.0'
14    object Button1: TButton
15 <    Left = 656
15 >    Left = 845
16      Height = 25
17 <    Top = 24
17 >    Top = 48
18      Width = 75
19      Action = AddEmployee
20 <    TabOrder = 1
20 >    Anchors = [akTop, akRight]
21 >    TabOrder = 0
22    end
23    object Button2: TButton
24 <    Left = 656
24 >    Left = 845
25      Height = 25
26 <    Top = 62
26 >    Top = 86
27      Width = 75
28      Action = EditEmployee
29 <    TabOrder = 2
29 >    Anchors = [akTop, akRight]
30 >    TabOrder = 1
31    end
32    object Button3: TButton
33 <    Left = 656
33 >    Left = 845
34      Height = 25
35 <    Top = 101
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 = 14
44 +    Top = 14
45 +    Width = 87
46 +    Caption = 'Started Before'
47 +    ParentColor = False
48 +  end
49 +  object BeforeDate: TDateEdit
50 +    Left = 112
51 +    Height = 24
52 +    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 Button4: TButton
63 <    Left = 488
64 <    Height = 25
65 <    Top = 416
66 <    Width = 75
67 <    Action = SaveChanges
62 >  object Label2: TLabel
63 >    Left = 241
64 >    Height = 14
65 >    Top = 14
66 >    Width = 78
67 >    Caption = 'Started After'
68 >    ParentColor = False
69 >  end
70 >  object AfterDate: TDateEdit
71 >    Left = 333
72 >    Height = 24
73 >    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 Button5: TButton
84 <    Left = 568
85 <    Height = 25
86 <    Top = 416
87 <    Width = 75
88 <    Action = CancelChanges
83 >  object Panel1: TPanel
84 >    Left = 12
85 >    Height = 434
86 >    Top = 42
87 >    Width = 810
88 >    Anchors = [akTop, akLeft, akRight, akBottom]
89 >    BevelOuter = bvNone
90 >    ClientHeight = 434
91 >    ClientWidth = 810
92 >    Color = clBackground
93 >    ParentColor = False
94      TabOrder = 5
95 +    object IBDynamicGrid1: TIBDynamicGrid
96 +      Left = 0
97 +      Height = 384
98 +      Top = 0
99 +      Width = 810
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 = 810
202 +      Align = alBottom
203 +      BevelOuter = bvNone
204 +      ClientHeight = 50
205 +      ClientWidth = 810
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 +        Width = 49
231 +        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 +      ClientHeight = 78
247 +      ClientWidth = 782
248 +      Color = clWindow
249 +      ParentColor = False
250 +      TabOrder = 2
251 +      Visible = False
252 +      object Label3: TLabel
253 +        Left = 0
254 +        Height = 14
255 +        Top = 7
256 +        Width = 83
257 +        Caption = 'Employee No.'
258 +        ParentColor = False
259 +      end
260 +      object DBEdit1: TDBEdit
261 +        Left = 90
262 +        Height = 24
263 +        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 +        Height = 14
274 +        Top = 32
275 +        Width = 64
276 +        Caption = 'First Name'
277 +        ParentColor = False
278 +      end
279 +      object DBEdit2: TDBEdit
280 +        Left = 90
281 +        Height = 24
282 +        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 +        Height = 14
293 +        Top = 56
294 +        Width = 64
295 +        Caption = 'Last Name'
296 +        ParentColor = False
297 +      end
298 +      object DBEdit3: TDBEdit
299 +        Left = 90
300 +        Height = 24
301 +        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 +        Height = 14
312 +        Top = 7
313 +        Width = 77
314 +        Caption = 'Date Started'
315 +        ParentColor = False
316 +      end
317 +      object IBDateEdit1: TDBDateEdit
318 +        Left = 300
319 +        Height = 24
320 +        Top = 2
321 +        Width = 104
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 +        Height = 14
335 +        Top = 32
336 +        Width = 37
337 +        Caption = 'Salary'
338 +        ParentColor = False
339 +      end
340 +      object DBEdit4: TDBEdit
341 +        Left = 300
342 +        Height = 24
343 +        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 +        Left = 708
353 +        Height = 14
354 +        Top = 54
355 +        Width = 24
356 +        Anchors = [akTop, akRight]
357 +        Caption = 'Ext.'
358 +        ParentColor = False
359 +      end
360 +      object DBEdit5: TDBEdit
361 +        Left = 732
362 +        Height = 24
363 +        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 +        Height = 14
375 +        Top = 7
376 +        Width = 51
377 +        Caption = 'Location'
378 +        ParentColor = False
379 +      end
380 +      object Label10: TLabel
381 +        Left = 413
382 +        Height = 14
383 +        Top = 9
384 +        Width = 59
385 +        Caption = 'Job Grade'
386 +        ParentColor = False
387 +      end
388 +      object JobGradeDBComboBox: TDBComboBox
389 +        Left = 480
390 +        Height = 23
391 +        Top = 2
392 +        Width = 48
393 +        AutoSize = False
394 +        DataField = 'JOB_GRADE'
395 +        DataSource = EmployeeSource
396 +        ItemHeight = 0
397 +        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 +        Height = 14
412 +        Top = 32
413 +        Width = 48
414 +        Caption = 'Job Title'
415 +        ParentColor = False
416 +      end
417 +      object Label12: TLabel
418 +        Left = 256
419 +        Height = 14
420 +        Top = 54
421 +        Width = 33
422 +        Caption = 'Dept.'
423 +        ParentColor = False
424 +      end
425 +      object SpeedButton1: TSpeedButton
426 +        Left = 680
427 +        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 +        Height = 24
436 +        Top = 48
437 +        Width = 372
438 +        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 +        Height = 23
449 +        Top = 0
450 +        Width = 172
451 +        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 +        ItemHeight = 0
465 +      end
466 +      object IBLookupComboEditBox1: TIBLookupComboEditBox
467 +        Left = 600
468 +        Height = 23
469 +        Top = 24
470 +        Width = 172
471 +        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 +        ItemHeight = 0
485 +      end
486 +    end
487 +  end
488 +  object Label13: TLabel
489 +    Left = 456
490 +    Height = 14
491 +    Top = 14
492 +    Width = 79
493 +    Caption = 'Salary Range'
494 +    ParentColor = False
495 +  end
496 +  object SalaryRange: TComboBox
497 +    Left = 544
498 +    Height = 25
499 +    Top = 8
500 +    Width = 272
501 +    ItemHeight = 0
502 +    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 <    Connected = True
516 <    AfterConnect = IBDatabase1AfterConnect
97 <    BeforeDisconnect = IBDatabase1BeforeDisconnect
515 >    Connected = False
516 >    CreateIfNotExists = False
517      AllowStreamedConnected = False
518 <    DatabaseName = 'employee'
518 >    DatabaseName = 'localhost:employee'
519      Params.Strings = (
520        'user_name=SYSDBA'
521 <      'lc_ctype=UTF-8'
521 >      'lc_ctype=UTF8'
522      )
523      DefaultTransaction = IBTransaction1
524      IdleTimer = 0
525      TraceFlags = []
526 <    left = 672
527 <    top = 224
526 >    UseDefaultSystemCodePage = False
527 >    left = 832
528 >    top = 168
529    end
530    object IBTransaction1: TIBTransaction
531      Active = False
# Line 115 | Line 535 | object Form1: TForm1
535        'rec_version'
536        'nowait'
537      )
538 <    left = 672
539 <    top = 256
538 >    left = 872
539 >    top = 168
540 >  end
541 >  object EmployeeSource: TDataSource
542 >    DataSet = Employees
543 >    left = 832
544 >    top = 336
545 >  end
546 >  object ActionList1: TActionList
547 >    left = 832
548 >    top = 416
549 >    object AddEmployee: TAction
550 >      Caption = 'Add'
551 >      OnExecute = AddEmployeeExecute
552 >    end
553 >    object EditEmployee: TAction
554 >      Caption = 'Edit'
555 >      OnExecute = EditEmployeeExecute
556 >      OnUpdate = EditEmployeeUpdate
557 >    end
558 >    object DeleteEmployee: TAction
559 >      Caption = 'Delete'
560 >      OnExecute = DeleteEmployeeExecute
561 >      OnUpdate = EditEmployeeUpdate
562 >    end
563 >    object SaveChanges: TAction
564 >      Caption = 'Save'
565 >      OnExecute = SaveChangesExecute
566 >      OnUpdate = SaveChangesUpdate
567 >    end
568 >    object CancelChanges: TAction
569 >      Caption = 'Cancel'
570 >      OnExecute = CancelChangesExecute
571 >      OnUpdate = SaveChangesUpdate
572 >    end
573 >    object SelectDept: TAction
574 >      Caption = '...'
575 >      OnExecute = SelectDeptExecute
576 >    end
577 >  end
578 >  object CountrySource: TDataSource
579 >    DataSet = Countries
580 >    left = 832
581 >    top = 296
582    end
583 <  object IBQuery1: TIBQuery
583 >  object TotalsQuery: TIBQuery
584 >    AllowAutoActivateTransaction = False
585      Database = IBDatabase1
586      Transaction = IBTransaction1
587 <    AfterDelete = IBQuery1AfterDelete
125 <    AfterOpen = IBQuery1AfterOpen
126 <    BeforeClose = IBQuery1BeforeClose
127 <    BeforeOpen = IBQuery1BeforeOpen
128 <    OnDeleteError = IBQuery1PostError
129 <    OnPostError = IBQuery1PostError
587 >    BeforeOpen = EmployeesBeforeOpen
588      BufferChunks = 1000
589      CachedUpdates = False
590 +    GenerateParamNames = False
591      GeneratorField.ApplyOnEvent = gaeOnNewRecord
592      SQL.Strings = (
593 <      'Select A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME From EMPLOYEE A'
594 <      'Order by LAST_NAME'
593 >      'Select sum(Salary) as TotalSalaries'
594 >      'From EMPLOYEE'
595      )
596      Params = <>
597 <    UpdateObject = IBUpdateSQL1
598 <    AfterTransactionEnd = IBQuery1AfterTransactionEnd
599 <    left = 672
597 >    DataSetCloseAction = dcDiscardChanges
598 >    left = 872
599 >    top = 376
600 >    object TotalsQueryTOTALSALARIES: TIBBCDField
601 >      DisplayWidth = 18
602 >      FieldKind = fkData
603 >      FieldName = 'TOTALSALARIES'
604 >      Index = 0
605 >      LookupCache = False
606 >      ProviderFlags = [pfInUpdate, pfInWhere]
607 >      ReadOnly = False
608 >      Required = False
609 >      OnGetText = EmployeesSALARYGetText
610 >      Precision = 18
611 >      Currency = False
612 >      MaxValue = 0
613 >      MinValue = 0
614 >      Size = 2
615 >    end
616 >  end
617 >  object TotalsSource: TDataSource
618 >    DataSet = TotalsQuery
619 >    left = 832
620 >    top = 376
621 >  end
622 >  object Employees: TIBDataSet
623 >    AllowAutoActivateTransaction = False
624 >    Database = IBDatabase1
625 >    Transaction = IBTransaction1
626 >    ForcedRefresh = True
627 >    AfterDelete = EmployeesAfterDelete
628 >    AfterEdit = EmployeesAfterDelete
629 >    AfterInsert = EmployeesAfterInsert
630 >    AfterOpen = EmployeesAfterOpen
631 >    AfterScroll = EmployeesAfterScroll
632 >    BeforeClose = EmployeesBeforeClose
633 >    BeforeOpen = EmployeesBeforeOpen
634 >    BufferChunks = 5000
635 >    CachedUpdates = False
636 >    DeleteSQL.Strings = (
637 >      'Delete From EMPLOYEE A'
638 >      'Where A.EMP_NO = :EMP_NO'
639 >    )
640 >    InsertSQL.Strings = (
641 >      'Insert Into EMPLOYEE(EMP_NO, FIRST_NAME, LAST_NAME, PHONE_EXT, HIRE_DATE, DEPT_NO, JOB_CODE, JOB_GRADE, JOB_COUNTRY, SALARY)'
642 >      'Values(:EMP_NO, :FIRST_NAME, :LAST_NAME, :PHONE_EXT, :HIRE_DATE, :DEPT_NO, :JOB_CODE, :JOB_GRADE, :JOB_COUNTRY, :SALARY)'
643 >    )
644 >    RefreshSQL.Strings = (
645 >      'with recursive Depts As ('
646 >      'Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT  as VarChar(256)) as DEPT_PATH,'
647 >      'cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH'
648 >      'From DEPARTMENT Where HEAD_DEPT is NULL '
649 >      'UNION ALL'
650 >      'Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH ||  '' / '' || D.DEPARTMENT as DEPT_PATH,'
651 >      'Depts.DEPT_KEY_PATH || '';'' || D.DEPT_NO as DEPT_KEY_PATH'
652 >      'From DEPARTMENT  D'
653 >      'JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO'
654 >      ')'
655 >      ''
656 >      'Select A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, '
657 >      'A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH'
658 >      'From EMPLOYEE A'
659 >      'JOIN Depts D On D.DEPT_NO = A.DEPT_NO'
660 >      ''
661 >      'Where A.EMP_NO = :EMP_NO'
662 >    )
663 >    SelectSQL.Strings = (
664 >      'with recursive Depts As ('
665 >      'Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT  as VarChar(256)) as DEPT_PATH,'
666 >      'cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH'
667 >      'From DEPARTMENT Where HEAD_DEPT is NULL '
668 >      'UNION ALL'
669 >      'Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH ||  '' / '' || D.DEPARTMENT as DEPT_PATH,'
670 >      'Depts.DEPT_KEY_PATH || '';'' || D.DEPT_NO as DEPT_KEY_PATH'
671 >      'From DEPARTMENT  D'
672 >      'JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO'
673 >      ')'
674 >      ''
675 >      'Select distinct A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, '
676 >      'A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH'
677 >      'From EMPLOYEE A'
678 >      'JOIN Depts D On D.DEPT_NO = A.DEPT_NO'
679 >    )
680 >    ModifySQL.Strings = (
681 >      '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'
682 >      'Where A.EMP_NO = :OLD_EMP_NO'
683 >    )
684 >    GeneratorField.Generator = 'EMP_NO_GEN'
685 >    GeneratorField.Field = 'EMP_NO'
686 >    GeneratorField.ApplyOnEvent = gaeOnNewRecord
687 >    GenerateParamNames = False
688 >    DataSetCloseAction = dcSaveChanges
689 >    AfterTransactionEnd = EmployeesAfterTransactionEnd
690 >    OnValidatePost = EmployeesValidatePost
691 >    left = 872
692      top = 336
693 <    object IBQuery1EMP_NO: TSmallintField
693 >    object EmployeesEMP_NO: TSmallintField
694        DisplayWidth = 10
695        FieldKind = fkData
696        FieldName = 'EMP_NO'
# Line 149 | Line 700 | object Form1: TForm1
700        ReadOnly = False
701        Required = True
702      end
703 <    object IBQuery1FIRST_NAME: TIBStringField
703 >    object EmployeesFIRST_NAME: TIBStringField
704        DisplayWidth = 15
705        FieldKind = fkData
706        FieldName = 'FIRST_NAME'
# Line 160 | Line 711 | object Form1: TForm1
711        Required = True
712        Size = 15
713      end
714 <    object IBQuery1LAST_NAME: TIBStringField
714 >    object EmployeesLAST_NAME: TIBStringField
715        DisplayWidth = 20
716        FieldKind = fkData
717        FieldName = 'LAST_NAME'
# Line 170 | Line 721 | object Form1: TForm1
721        ReadOnly = False
722        Required = True
723      end
724 <    object IBQuery1PHONE_EXT: TIBStringField
724 >    object EmployeesPHONE_EXT: TIBStringField
725 >      Alignment = taRightJustify
726        DisplayWidth = 4
727        FieldKind = fkData
728        FieldName = 'PHONE_EXT'
# Line 181 | Line 733 | object Form1: TForm1
733        Required = False
734        Size = 4
735      end
736 <    object IBQuery1HIRE_DATE: TDateTimeField
736 >    object EmployeesHIRE_DATE: TDateTimeField
737        DisplayWidth = 10
738        FieldKind = fkData
739        FieldName = 'HIRE_DATE'
# Line 191 | Line 743 | object Form1: TForm1
743        ReadOnly = False
744        Required = True
745      end
746 <    object IBQuery1DEPT_NO: TIBStringField
746 >    object EmployeesDEPT_NO: TIBStringField
747        DisplayWidth = 3
748        FieldKind = fkData
749        FieldName = 'DEPT_NO'
# Line 202 | Line 754 | object Form1: TForm1
754        Required = True
755        Size = 3
756      end
757 <    object IBQuery1JOB_CODE: TIBStringField
757 >    object EmployeesJOB_CODE: TIBStringField
758        DisplayWidth = 5
759        FieldKind = fkData
760        FieldName = 'JOB_CODE'
# Line 211 | Line 763 | object Form1: TForm1
763        ProviderFlags = [pfInUpdate, pfInWhere]
764        ReadOnly = False
765        Required = True
766 +      OnChange = EmployeesJOB_CODEChange
767        Size = 5
768      end
769 <    object IBQuery1JOB_GRADE: TSmallintField
769 >    object EmployeesJOB_GRADE: TSmallintField
770        DisplayWidth = 10
771        FieldKind = fkData
772        FieldName = 'JOB_GRADE'
# Line 222 | Line 775 | object Form1: TForm1
775        ProviderFlags = [pfInUpdate, pfInWhere]
776        ReadOnly = False
777        Required = True
778 +      OnChange = EmployeesJOB_GRADEChange
779      end
780 <    object IBQuery1JOB_COUNTRY: TIBStringField
780 >    object EmployeesJOB_COUNTRY: TIBStringField
781        DisplayWidth = 15
782        FieldKind = fkData
783        FieldName = 'JOB_COUNTRY'
# Line 234 | Line 788 | object Form1: TForm1
788        Required = True
789        Size = 15
790      end
791 <    object IBQuery1SALARY: TIBBCDField
791 >    object EmployeesSALARY: TIBBCDField
792        DisplayWidth = 18
793        FieldKind = fkData
794        FieldName = 'SALARY'
# Line 243 | Line 797 | object Form1: TForm1
797        ProviderFlags = [pfInUpdate, pfInWhere]
798        ReadOnly = False
799        Required = True
800 <      OnGetText = IBQuery1SALARYGetText
800 >      OnGetText = EmployeesSALARYGetText
801        Precision = 18
802        Currency = False
803        MaxValue = 0
804        MinValue = 0
805        Size = 2
806      end
807 <    object IBQuery1FULL_NAME: TIBStringField
807 >    object EmployeesFULL_NAME: TIBStringField
808        DisplayWidth = 37
809        FieldKind = fkData
810        FieldName = 'FULL_NAME'
# Line 261 | Line 815 | object Form1: TForm1
815        Required = False
816        Size = 37
817      end
818 +    object EmployeesDEPT_PATH: TIBStringField
819 +      DisplayWidth = 256
820 +      FieldKind = fkData
821 +      FieldName = 'DEPT_PATH'
822 +      Index = 11
823 +      LookupCache = False
824 +      ProviderFlags = [pfInUpdate, pfInWhere]
825 +      ReadOnly = False
826 +      Required = True
827 +      Size = 256
828 +    end
829 +    object EmployeesDEPT_KEY_PATH: TIBStringField
830 +      DisplayWidth = 64
831 +      FieldKind = fkData
832 +      FieldName = 'DEPT_KEY_PATH'
833 +      Index = 12
834 +      LookupCache = False
835 +      ProviderFlags = [pfInUpdate, pfInWhere]
836 +      ReadOnly = False
837 +      Required = True
838 +      Size = 64
839 +    end
840    end
841 <  object Datasource1: TDatasource
842 <    DataSet = IBQuery1
843 <    left = 672
841 >  object Countries: TIBQuery
842 >    AllowAutoActivateTransaction = False
843 >    Database = IBDatabase1
844 >    Transaction = IBTransaction1
845 >    BeforeOpen = CountriesBeforeOpen
846 >    BufferChunks = 1000
847 >    CachedUpdates = False
848 >    GenerateParamNames = False
849 >    GeneratorField.ApplyOnEvent = gaeOnNewRecord
850 >    SQL.Strings = (
851 >      'Select A.COUNTRY, A.CURRENCY From COUNTRY A'
852 >      'JOIN JOB J On J.JOB_COUNTRY = A.COUNTRY'
853 >      'Where J.JOB_CODE = :JOB_CODE and J.JOB_GRADE = :JOB_GRADE'
854 >      'Order by 1'
855 >    )
856 >    Params = <    
857 >      item
858 >        DataType = ftUnknown
859 >        Name = 'JOB_CODE'
860 >        ParamType = ptInput
861 >      end    
862 >      item
863 >        DataType = ftUnknown
864 >        Name = 'JOB_GRADE'
865 >        ParamType = ptInput
866 >      end>
867 >    DataSetCloseAction = dcDiscardChanges
868 >    left = 872
869      top = 296
870 +    ParamData = <    
871 +      item
872 +        DataType = ftUnknown
873 +        Name = 'JOB_CODE'
874 +        ParamType = ptInput
875 +      end    
876 +      item
877 +        DataType = ftUnknown
878 +        Name = 'JOB_GRADE'
879 +        ParamType = ptInput
880 +      end>
881    end
882 <  object ActionList1: TActionList
883 <    left = 672
884 <    top = 376
885 <    object AddEmployee: TAction
274 <      Caption = 'Add'
275 <      OnExecute = AddEmployeeExecute
276 <    end
277 <    object EditEmployee: TAction
278 <      Caption = 'Edit'
279 <      OnExecute = EditEmployeeExecute
280 <      OnUpdate = EditEmployeeUpdate
281 <    end
282 <    object DeleteEmployee: TAction
283 <      Caption = 'Delete'
284 <      OnExecute = DeleteEmployeeExecute
285 <      OnUpdate = EditEmployeeUpdate
286 <    end
287 <    object SaveChanges: TAction
288 <      Caption = 'Save'
289 <      OnExecute = SaveChangesExecute
290 <      OnUpdate = SaveChangesUpdate
291 <    end
292 <    object CancelChanges: TAction
293 <      Caption = 'Cancel'
294 <      OnExecute = CancelChangesExecute
295 <      OnUpdate = SaveChangesUpdate
296 <    end
882 >  object JobCodeSource: TDataSource
883 >    DataSet = JobCodes
884 >    left = 832
885 >    top = 256
886    end
887 <  object IBUpdateSQL1: TIBUpdateSQL
888 <    RefreshSQL.Strings = (
889 <      'Select A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME From EMPLOYEE A'
890 <      'Where A.EMP_NO = :EMP_NO'
887 >  object JobCodes: TIBQuery
888 >    AllowAutoActivateTransaction = False
889 >    Database = IBDatabase1
890 >    Transaction = IBTransaction1
891 >    BeforeOpen = JobCodesBeforeOpen
892 >    BufferChunks = 1000
893 >    CachedUpdates = False
894 >    GenerateParamNames = False
895 >    GeneratorField.ApplyOnEvent = gaeOnNewRecord
896 >    SQL.Strings = (
897 >      'Select A.JOB_CODE, A.JOB_TITLE From JOB A'
898 >      'Where JOB_COUNTRY = :JOB_COUNTRY and JOB_GRADE = :JOB_GRADE'
899 >      'Order by Upper(JOB_TITLE)'
900      )
901 <    DeleteSQL.Strings = (
902 <      'Delete From EMPLOYEE A'
903 <      'Where A.EMP_NO = :EMP_NO'
901 >    Params = <    
902 >      item
903 >        DataType = ftUnknown
904 >        Name = 'JOB_COUNTRY'
905 >        ParamType = ptInput
906 >      end    
907 >      item
908 >        DataType = ftUnknown
909 >        Name = 'JOB_GRADE'
910 >        ParamType = ptInput
911 >      end>
912 >    DataSetCloseAction = dcDiscardChanges
913 >    left = 872
914 >    top = 256
915 >    ParamData = <    
916 >      item
917 >        DataType = ftUnknown
918 >        Name = 'JOB_COUNTRY'
919 >        ParamType = ptInput
920 >      end    
921 >      item
922 >        DataType = ftUnknown
923 >        Name = 'JOB_GRADE'
924 >        ParamType = ptInput
925 >      end>
926 >  end
927 >  object Depts: TIBQuery
928 >    AllowAutoActivateTransaction = False
929 >    Database = IBDatabase1
930 >    Transaction = IBTransaction1
931 >    BufferChunks = 1000
932 >    CachedUpdates = False
933 >    GenerateParamNames = False
934 >    GeneratorField.ApplyOnEvent = gaeOnNewRecord
935 >    SQL.Strings = (
936 >      'Select A.DEPT_NO, A.DEPARTMENT From DEPARTMENT A'
937 >      ''
938 >      'Order by Upper(Department)'
939      )
940 <    left = 712
941 <    top = 336
940 >    Params = <>
941 >    DataSetCloseAction = dcDiscardChanges
942 >    left = 872
943 >    top = 210
944 >  end
945 >  object DeptsSource: TDataSource
946 >    DataSet = Depts
947 >    left = 832
948 >    top = 208
949 >  end
950 >  object JobGradeChangeTimer: TTimer
951 >    Interval = 0
952 >    OnTimer = JobGradeChangeTimerTimer
953 >    left = 777
954 >    top = 304
955 >  end
956 >  object JobCodeChangeTimer: TTimer
957 >    Interval = 0
958 >    OnTimer = JobCodeChangeTimerTimer
959 >    left = 776
960 >    top = 353
961    end
962   end

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines