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 19 by tony, Mon Jul 7 13:00:15 2014 UTC vs.
Revision 62 by tony, Wed Apr 12 09:19:59 2017 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 = 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.2.2.0'
12 <  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
11 >  LCLVersion = '1.6.4.0'
12    object Button1: TButton
13 <    Left = 656
13 >    Left = 845
14      Height = 25
15 <    Top = 24
15 >    Top = 48
16      Width = 75
17      Action = AddEmployee
18 <    TabOrder = 1
18 >    Anchors = [akTop, akRight]
19 >    TabOrder = 0
20    end
21    object Button2: TButton
22 <    Left = 656
22 >    Left = 845
23      Height = 25
24 <    Top = 62
24 >    Top = 86
25      Width = 75
26      Action = EditEmployee
27 <    TabOrder = 2
27 >    Anchors = [akTop, akRight]
28 >    TabOrder = 1
29    end
30    object Button3: TButton
31 <    Left = 656
31 >    Left = 845
32      Height = 25
33 <    Top = 101
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 Button4: TButton
61 <    Left = 488
62 <    Height = 25
63 <    Top = 416
64 <    Width = 75
65 <    Action = SaveChanges
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 Button5: TButton
82 <    Left = 568
83 <    Height = 25
84 <    Top = 416
85 <    Width = 75
86 <    Action = CancelChanges
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 = True
514 <    AfterConnect = IBDatabase1AfterConnect
97 <    BeforeDisconnect = IBDatabase1BeforeDisconnect
513 >    Connected = False
514 >    CreateIfNotExists = False
515      AllowStreamedConnected = False
516 <    DatabaseName = 'employee'
516 >    DatabaseName = 'localhost:employee'
517      Params.Strings = (
518        'user_name=SYSDBA'
519 <      'lc_ctype=UTF-8'
519 >      'lc_ctype=UTF8'
520      )
521      DefaultTransaction = IBTransaction1
522      IdleTimer = 0
523      TraceFlags = []
524 <    left = 672
525 <    top = 224
524 >    UseDefaultSystemCodePage = False
525 >    left = 832
526 >    top = 168
527    end
528    object IBTransaction1: TIBTransaction
529      Active = False
# Line 115 | Line 533 | object Form1: TForm1
533        'rec_version'
534        'nowait'
535      )
536 <    left = 672
537 <    top = 256
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 IBQuery1: TIBQuery
581 >  object TotalsQuery: TIBQuery
582 >    AllowAutoActivateTransaction = False
583      Database = IBDatabase1
584      Transaction = IBTransaction1
585 <    AfterDelete = IBQuery1AfterDelete
125 <    AfterOpen = IBQuery1AfterOpen
126 <    BeforeClose = IBQuery1BeforeClose
127 <    OnDeleteError = IBQuery1PostError
128 <    OnPostError = IBQuery1PostError
585 >    BeforeOpen = EmployeesBeforeOpen
586      BufferChunks = 1000
587      CachedUpdates = False
588      GenerateParamNames = False
589      GeneratorField.ApplyOnEvent = gaeOnNewRecord
590      SQL.Strings = (
591 <      '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'
592 <      'Order by LAST_NAME'
591 >      'Select sum(Salary) as TotalSalaries'
592 >      'From EMPLOYEE'
593      )
594      Params = <>
595 <    UpdateObject = IBUpdateSQL1
596 <    AfterTransactionEnd = IBQuery1AfterTransactionEnd
597 <    left = 672
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 IBQuery1EMP_NO: TSmallintField
691 >    object EmployeesEMP_NO: TSmallintField
692        DisplayWidth = 10
693        FieldKind = fkData
694        FieldName = 'EMP_NO'
# Line 149 | Line 698 | object Form1: TForm1
698        ReadOnly = False
699        Required = True
700      end
701 <    object IBQuery1FIRST_NAME: TIBStringField
701 >    object EmployeesFIRST_NAME: TIBStringField
702        DisplayWidth = 15
703        FieldKind = fkData
704        FieldName = 'FIRST_NAME'
# Line 160 | Line 709 | object Form1: TForm1
709        Required = True
710        Size = 15
711      end
712 <    object IBQuery1LAST_NAME: TIBStringField
712 >    object EmployeesLAST_NAME: TIBStringField
713        DisplayWidth = 20
714        FieldKind = fkData
715        FieldName = 'LAST_NAME'
# Line 170 | Line 719 | object Form1: TForm1
719        ReadOnly = False
720        Required = True
721      end
722 <    object IBQuery1PHONE_EXT: TIBStringField
722 >    object EmployeesPHONE_EXT: TIBStringField
723 >      Alignment = taRightJustify
724        DisplayWidth = 4
725        FieldKind = fkData
726        FieldName = 'PHONE_EXT'
# Line 181 | Line 731 | object Form1: TForm1
731        Required = False
732        Size = 4
733      end
734 <    object IBQuery1HIRE_DATE: TDateTimeField
734 >    object EmployeesHIRE_DATE: TDateTimeField
735        DisplayWidth = 10
736        FieldKind = fkData
737        FieldName = 'HIRE_DATE'
# Line 191 | Line 741 | object Form1: TForm1
741        ReadOnly = False
742        Required = True
743      end
744 <    object IBQuery1DEPT_NO: TIBStringField
744 >    object EmployeesDEPT_NO: TIBStringField
745        DisplayWidth = 3
746        FieldKind = fkData
747        FieldName = 'DEPT_NO'
# Line 202 | Line 752 | object Form1: TForm1
752        Required = True
753        Size = 3
754      end
755 <    object IBQuery1JOB_CODE: TIBStringField
755 >    object EmployeesJOB_CODE: TIBStringField
756        DisplayWidth = 5
757        FieldKind = fkData
758        FieldName = 'JOB_CODE'
# Line 211 | Line 761 | object Form1: TForm1
761        ProviderFlags = [pfInUpdate, pfInWhere]
762        ReadOnly = False
763        Required = True
764 +      OnChange = EmployeesJOB_CODEChange
765        Size = 5
766      end
767 <    object IBQuery1JOB_GRADE: TSmallintField
767 >    object EmployeesJOB_GRADE: TSmallintField
768        DisplayWidth = 10
769        FieldKind = fkData
770        FieldName = 'JOB_GRADE'
# Line 222 | Line 773 | object Form1: TForm1
773        ProviderFlags = [pfInUpdate, pfInWhere]
774        ReadOnly = False
775        Required = True
776 +      OnChange = EmployeesJOB_GRADEChange
777      end
778 <    object IBQuery1JOB_COUNTRY: TIBStringField
778 >    object EmployeesJOB_COUNTRY: TIBStringField
779        DisplayWidth = 15
780        FieldKind = fkData
781        FieldName = 'JOB_COUNTRY'
# Line 234 | Line 786 | object Form1: TForm1
786        Required = True
787        Size = 15
788      end
789 <    object IBQuery1FULL_NAME: TIBStringField
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 = 9
809 >      Index = 10
810        LookupCache = False
811        ProviderFlags = [pfInUpdate, pfInWhere]
812        ReadOnly = True
813        Required = False
814        Size = 37
815      end
816 <    object IBQuery1SALARY: TIBBCDField
817 <      DisplayWidth = 18
816 >    object EmployeesDEPT_PATH: TIBStringField
817 >      DisplayWidth = 256
818        FieldKind = fkData
819 <      FieldName = 'SALARY'
820 <      Index = 10
819 >      FieldName = 'DEPT_PATH'
820 >      Index = 11
821        LookupCache = False
822        ProviderFlags = [pfInUpdate, pfInWhere]
823        ReadOnly = False
824        Required = True
825 <      Precision = 18
826 <      Currency = False
827 <      MaxValue = 0
828 <      MinValue = 0
829 <      Size = 2
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 Datasource1: TDataSource
840 <    DataSet = IBQuery1
841 <    left = 672
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 ActionList1: TActionList
881 <    left = 672
882 <    top = 376
883 <    object AddEmployee: TAction
273 <      Caption = 'Add'
274 <      OnExecute = AddEmployeeExecute
275 <    end
276 <    object EditEmployee: TAction
277 <      Caption = 'Edit'
278 <      OnExecute = EditEmployeeExecute
279 <      OnUpdate = EditEmployeeUpdate
280 <    end
281 <    object DeleteEmployee: TAction
282 <      Caption = 'Delete'
283 <      OnExecute = DeleteEmployeeExecute
284 <      OnUpdate = EditEmployeeUpdate
285 <    end
286 <    object SaveChanges: TAction
287 <      Caption = 'Save'
288 <      OnExecute = SaveChangesExecute
289 <      OnUpdate = SaveChangesUpdate
290 <    end
291 <    object CancelChanges: TAction
292 <      Caption = 'Cancel'
293 <      OnExecute = CancelChangesExecute
294 <      OnUpdate = SaveChangesUpdate
295 <    end
880 >  object JobCodeSource: TDataSource
881 >    DataSet = JobCodes
882 >    left = 832
883 >    top = 256
884    end
885 <  object IBUpdateSQL1: TIBUpdateSQL
886 <    RefreshSQL.Strings = (
887 <      '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'
888 <      'Where A.EMP_NO = :EMP_NO'
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 <    DeleteSQL.Strings = (
900 <      'Delete From EMPLOYEE A'
901 <      'Where A.EMP_NO = :EMP_NO'
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 <    left = 712
939 <    top = 336
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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines