1 |
|
object Form1: TForm1 |
2 |
< |
Left = 439 |
2 |
> |
Left = 480 |
3 |
|
Height = 482 |
4 |
< |
Top = 350 |
5 |
< |
Width = 1002 |
4 |
> |
Top = 407 |
5 |
> |
Width = 932 |
6 |
|
Caption = 'Employee List' |
7 |
|
ClientHeight = 482 |
8 |
< |
ClientWidth = 1002 |
8 |
> |
ClientWidth = 932 |
9 |
> |
DefaultMonitor = dmPrimary |
10 |
|
OnClose = FormClose |
11 |
|
OnShow = FormShow |
12 |
< |
LCLVersion = '1.4.0.1' |
12 |
> |
Position = poMainFormCenter |
13 |
> |
LCLVersion = '2.0.0.2' |
14 |
|
object Button1: TButton |
15 |
< |
Left = 915 |
15 |
> |
Left = 845 |
16 |
|
Height = 25 |
17 |
|
Top = 48 |
18 |
|
Width = 75 |
21 |
|
TabOrder = 0 |
22 |
|
end |
23 |
|
object Button2: TButton |
24 |
< |
Left = 915 |
24 |
> |
Left = 845 |
25 |
|
Height = 25 |
26 |
|
Top = 86 |
27 |
|
Width = 75 |
30 |
|
TabOrder = 1 |
31 |
|
end |
32 |
|
object Button3: TButton |
33 |
< |
Left = 915 |
33 |
> |
Left = 845 |
34 |
|
Height = 25 |
35 |
|
Top = 125 |
36 |
|
Width = 75 |
40 |
|
end |
41 |
|
object Label1: TLabel |
42 |
|
Left = 17 |
43 |
< |
Height = 15 |
43 |
> |
Height = 14 |
44 |
|
Top = 14 |
45 |
|
Width = 87 |
46 |
|
Caption = 'Started Before' |
48 |
|
end |
49 |
|
object BeforeDate: TDateEdit |
50 |
|
Left = 112 |
51 |
< |
Height = 25 |
51 |
> |
Height = 24 |
52 |
|
Top = 8 |
53 |
|
Width = 80 |
54 |
|
CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames] |
53 |
– |
OKCaption = 'OK' |
54 |
– |
CancelCaption = 'Cancel' |
55 |
|
DateOrder = doNone |
56 |
|
ButtonWidth = 23 |
57 |
|
NumGlyphs = 1 |
61 |
|
end |
62 |
|
object Label2: TLabel |
63 |
|
Left = 241 |
64 |
< |
Height = 15 |
64 |
> |
Height = 14 |
65 |
|
Top = 14 |
66 |
|
Width = 78 |
67 |
|
Caption = 'Started After' |
69 |
|
end |
70 |
|
object AfterDate: TDateEdit |
71 |
|
Left = 333 |
72 |
< |
Height = 25 |
72 |
> |
Height = 24 |
73 |
|
Top = 8 |
74 |
|
Width = 80 |
75 |
|
CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames] |
76 |
– |
OKCaption = 'OK' |
77 |
– |
CancelCaption = 'Cancel' |
76 |
|
DateOrder = doNone |
77 |
|
ButtonWidth = 23 |
78 |
|
NumGlyphs = 1 |
84 |
|
Left = 12 |
85 |
|
Height = 434 |
86 |
|
Top = 42 |
87 |
< |
Width = 880 |
87 |
> |
Width = 810 |
88 |
|
Anchors = [akTop, akLeft, akRight, akBottom] |
89 |
|
BevelOuter = bvNone |
90 |
|
ClientHeight = 434 |
91 |
< |
ClientWidth = 880 |
91 |
> |
ClientWidth = 810 |
92 |
|
Color = clBackground |
93 |
|
ParentColor = False |
94 |
|
TabOrder = 5 |
96 |
|
Left = 0 |
97 |
|
Height = 384 |
98 |
|
Top = 0 |
99 |
< |
Width = 880 |
99 |
> |
Width = 810 |
100 |
|
Align = alClient |
101 |
|
Color = clWindow |
102 |
|
Columns = < |
198 |
|
Left = 0 |
199 |
|
Height = 50 |
200 |
|
Top = 384 |
201 |
< |
Width = 880 |
201 |
> |
Width = 810 |
202 |
|
Align = alBottom |
203 |
|
BevelOuter = bvNone |
204 |
|
ClientHeight = 50 |
205 |
< |
ClientWidth = 880 |
205 |
> |
ClientWidth = 810 |
206 |
|
ParentColor = False |
207 |
|
TabOrder = 1 |
208 |
|
object Button5: TButton |
251 |
|
Visible = False |
252 |
|
object Label3: TLabel |
253 |
|
Left = 0 |
254 |
< |
Height = 15 |
254 |
> |
Height = 14 |
255 |
|
Top = 7 |
256 |
|
Width = 83 |
257 |
|
Caption = 'Employee No.' |
259 |
|
end |
260 |
|
object DBEdit1: TDBEdit |
261 |
|
Left = 90 |
262 |
< |
Height = 25 |
262 |
> |
Height = 24 |
263 |
|
Top = 2 |
264 |
|
Width = 120 |
265 |
|
DataField = 'EMP_NO' |
270 |
|
end |
271 |
|
object Label4: TLabel |
272 |
|
Left = 12 |
273 |
< |
Height = 15 |
273 |
> |
Height = 14 |
274 |
|
Top = 32 |
275 |
|
Width = 64 |
276 |
|
Caption = 'First Name' |
278 |
|
end |
279 |
|
object DBEdit2: TDBEdit |
280 |
|
Left = 90 |
281 |
< |
Height = 25 |
281 |
> |
Height = 24 |
282 |
|
Top = 24 |
283 |
|
Width = 120 |
284 |
|
DataField = 'FIRST_NAME' |
289 |
|
end |
290 |
|
object Label5: TLabel |
291 |
|
Left = 12 |
292 |
< |
Height = 15 |
292 |
> |
Height = 14 |
293 |
|
Top = 56 |
294 |
|
Width = 64 |
295 |
|
Caption = 'Last Name' |
297 |
|
end |
298 |
|
object DBEdit3: TDBEdit |
299 |
|
Left = 90 |
300 |
< |
Height = 25 |
300 |
> |
Height = 24 |
301 |
|
Top = 46 |
302 |
|
Width = 120 |
303 |
|
DataField = 'LAST_NAME' |
308 |
|
end |
309 |
|
object Label6: TLabel |
310 |
|
Left = 216 |
311 |
< |
Height = 15 |
311 |
> |
Height = 14 |
312 |
|
Top = 7 |
313 |
|
Width = 77 |
314 |
|
Caption = 'Date Started' |
316 |
|
end |
317 |
|
object IBDateEdit1: TDBDateEdit |
318 |
|
Left = 300 |
319 |
< |
Height = 25 |
319 |
> |
Height = 24 |
320 |
|
Top = 2 |
321 |
< |
Width = 80 |
321 |
> |
Width = 104 |
322 |
|
CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames] |
325 |
– |
OKCaption = 'OK' |
326 |
– |
CancelCaption = 'Cancel' |
323 |
|
DateOrder = doNone |
324 |
|
ButtonWidth = 23 |
325 |
+ |
AutoSelect = False |
326 |
|
NumGlyphs = 1 |
327 |
|
MaxLength = 0 |
328 |
|
TabOrder = 3 |
331 |
|
end |
332 |
|
object Label7: TLabel |
333 |
|
Left = 252 |
334 |
< |
Height = 15 |
334 |
> |
Height = 14 |
335 |
|
Top = 32 |
336 |
|
Width = 37 |
337 |
|
Caption = 'Salary' |
339 |
|
end |
340 |
|
object DBEdit4: TDBEdit |
341 |
|
Left = 300 |
342 |
< |
Height = 25 |
342 |
> |
Height = 24 |
343 |
|
Top = 24 |
344 |
|
Width = 104 |
345 |
|
DataField = 'SALARY' |
350 |
|
end |
351 |
|
object Label8: TLabel |
352 |
|
Left = 708 |
353 |
< |
Height = 15 |
353 |
> |
Height = 14 |
354 |
|
Top = 54 |
355 |
|
Width = 24 |
356 |
|
Anchors = [akTop, akRight] |
359 |
|
end |
360 |
|
object DBEdit5: TDBEdit |
361 |
|
Left = 732 |
362 |
< |
Height = 25 |
362 |
> |
Height = 24 |
363 |
|
Top = 48 |
364 |
|
Width = 40 |
365 |
|
DataField = 'PHONE_EXT' |
371 |
|
end |
372 |
|
object Label9: TLabel |
373 |
|
Left = 536 |
374 |
< |
Height = 15 |
374 |
> |
Height = 14 |
375 |
|
Top = 7 |
376 |
|
Width = 51 |
377 |
|
Caption = 'Location' |
379 |
|
end |
380 |
|
object Label10: TLabel |
381 |
|
Left = 413 |
382 |
< |
Height = 15 |
382 |
> |
Height = 14 |
383 |
|
Top = 9 |
384 |
|
Width = 59 |
385 |
|
Caption = 'Job Grade' |
387 |
|
end |
388 |
|
object JobGradeDBComboBox: TDBComboBox |
389 |
|
Left = 480 |
390 |
< |
Height = 25 |
390 |
> |
Height = 23 |
391 |
|
Top = 2 |
392 |
|
Width = 48 |
393 |
|
AutoSize = False |
408 |
|
end |
409 |
|
object Label11: TLabel |
410 |
|
Left = 536 |
411 |
< |
Height = 15 |
411 |
> |
Height = 14 |
412 |
|
Top = 32 |
413 |
|
Width = 48 |
414 |
|
Caption = 'Job Title' |
416 |
|
end |
417 |
|
object Label12: TLabel |
418 |
|
Left = 256 |
419 |
< |
Height = 15 |
419 |
> |
Height = 14 |
420 |
|
Top = 54 |
421 |
|
Width = 33 |
422 |
|
Caption = 'Dept.' |
432 |
|
end |
433 |
|
object DBEdit6: TDBEdit |
434 |
|
Left = 300 |
435 |
< |
Height = 25 |
435 |
> |
Height = 24 |
436 |
|
Top = 48 |
437 |
|
Width = 372 |
438 |
|
DataField = 'DEPT_PATH' |
445 |
|
end |
446 |
|
object IBLookupComboEditBox2: TIBLookupComboEditBox |
447 |
|
Left = 600 |
448 |
< |
Height = 25 |
448 |
> |
Height = 23 |
449 |
|
Top = 0 |
450 |
|
Width = 172 |
451 |
|
Anchors = [akTop, akLeft, akRight] |
465 |
|
end |
466 |
|
object IBLookupComboEditBox1: TIBLookupComboEditBox |
467 |
|
Left = 600 |
468 |
< |
Height = 25 |
468 |
> |
Height = 23 |
469 |
|
Top = 24 |
470 |
|
Width = 172 |
471 |
|
Anchors = [akTop, akLeft, akRight] |
487 |
|
end |
488 |
|
object Label13: TLabel |
489 |
|
Left = 456 |
490 |
< |
Height = 15 |
490 |
> |
Height = 14 |
491 |
|
Top = 14 |
492 |
|
Width = 79 |
493 |
|
Caption = 'Salary Range' |
513 |
|
end |
514 |
|
object IBDatabase1: TIBDatabase |
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 |
+ |
UseDefaultSystemCodePage = False |
527 |
|
left = 832 |
528 |
|
top = 168 |
529 |
|
end |
581 |
|
top = 296 |
582 |
|
end |
583 |
|
object TotalsQuery: TIBQuery |
584 |
+ |
AllowAutoActivateTransaction = False |
585 |
|
Database = IBDatabase1 |
586 |
|
Transaction = IBTransaction1 |
587 |
|
BeforeOpen = EmployeesBeforeOpen |
588 |
|
BufferChunks = 1000 |
589 |
|
CachedUpdates = False |
590 |
+ |
EnableStatistics = False |
591 |
|
GenerateParamNames = False |
592 |
|
GeneratorField.ApplyOnEvent = gaeOnNewRecord |
593 |
+ |
MasterDetailDelay = 0 |
594 |
|
SQL.Strings = ( |
595 |
|
'Select sum(Salary) as TotalSalaries' |
596 |
|
'From EMPLOYEE' |
597 |
|
) |
598 |
|
Params = <> |
599 |
+ |
DataSetCloseAction = dcDiscardChanges |
600 |
|
left = 872 |
601 |
|
top = 376 |
602 |
|
object TotalsQueryTOTALSALARIES: TIBBCDField |
622 |
|
top = 376 |
623 |
|
end |
624 |
|
object Employees: TIBDataSet |
625 |
+ |
AllowAutoActivateTransaction = False |
626 |
|
Database = IBDatabase1 |
627 |
|
Transaction = IBTransaction1 |
628 |
+ |
ForcedRefresh = True |
629 |
|
AfterDelete = EmployeesAfterDelete |
630 |
|
AfterEdit = EmployeesAfterDelete |
631 |
|
AfterInsert = EmployeesAfterInsert |
632 |
|
AfterOpen = EmployeesAfterOpen |
628 |
– |
AfterPost = EmployeesAfterPost |
633 |
|
AfterScroll = EmployeesAfterScroll |
634 |
|
BeforeClose = EmployeesBeforeClose |
635 |
|
BeforeOpen = EmployeesBeforeOpen |
636 |
< |
BufferChunks = 1000 |
636 |
> |
BufferChunks = 5000 |
637 |
|
CachedUpdates = False |
638 |
+ |
EnableStatistics = False |
639 |
|
DeleteSQL.Strings = ( |
640 |
|
'Delete From EMPLOYEE A' |
641 |
|
'Where A.EMP_NO = :EMP_NO' |
650 |
|
'cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH' |
651 |
|
'From DEPARTMENT Where HEAD_DEPT is NULL ' |
652 |
|
'UNION ALL' |
653 |
< |
'Select DEPT_NO, DEPARTMENT, HEAD_DEPT, Depts.DEPT_PATH || '' / '' || DEPARTMENT as DEPT_PATH,' |
654 |
< |
'Depts.DEPT_KEY_PATH || '';'' || DEPT_NO as DEPT_KEY_PATH' |
655 |
< |
'From DEPARTMENT ' |
656 |
< |
'JOIN Depts On HEAD_DEPT = Depts.DEPT_NO' |
653 |
> |
'Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || '' / '' || 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 |
|
')' |
658 |
|
'' |
659 |
|
'Select A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, ' |
660 |
|
'A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH' |
661 |
|
'From EMPLOYEE A' |
662 |
|
'JOIN Depts D On D.DEPT_NO = A.DEPT_NO' |
663 |
+ |
'' |
664 |
|
'Where A.EMP_NO = :EMP_NO' |
665 |
|
) |
666 |
|
SelectSQL.Strings = ( |
669 |
|
'cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH' |
670 |
|
'From DEPARTMENT Where HEAD_DEPT is NULL ' |
671 |
|
'UNION ALL' |
672 |
< |
'Select DEPT_NO, DEPARTMENT, HEAD_DEPT, Depts.DEPT_PATH || '' / '' || DEPARTMENT as DEPT_PATH,' |
673 |
< |
'Depts.DEPT_KEY_PATH || '';'' || DEPT_NO as DEPT_KEY_PATH' |
674 |
< |
'From DEPARTMENT ' |
675 |
< |
'JOIN Depts On HEAD_DEPT = Depts.DEPT_NO' |
672 |
> |
'Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || '' / '' || D.DEPARTMENT as DEPT_PATH,' |
673 |
> |
'Depts.DEPT_KEY_PATH || '';'' || D.DEPT_NO as DEPT_KEY_PATH' |
674 |
> |
'From DEPARTMENT D' |
675 |
> |
'JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO' |
676 |
|
')' |
677 |
|
'' |
678 |
< |
'Select A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, ' |
678 |
> |
'Select distinct A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, ' |
679 |
|
'A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH' |
680 |
|
'From EMPLOYEE A' |
681 |
|
'JOIN Depts D On D.DEPT_NO = A.DEPT_NO' |
688 |
|
GeneratorField.Field = 'EMP_NO' |
689 |
|
GeneratorField.ApplyOnEvent = gaeOnNewRecord |
690 |
|
GenerateParamNames = False |
691 |
+ |
MasterDetailDelay = 0 |
692 |
+ |
DataSetCloseAction = dcSaveChanges |
693 |
|
AfterTransactionEnd = EmployeesAfterTransactionEnd |
694 |
+ |
OnValidatePost = EmployeesValidatePost |
695 |
|
left = 872 |
696 |
|
top = 336 |
697 |
|
object EmployeesEMP_NO: TSmallintField |
843 |
|
end |
844 |
|
end |
845 |
|
object Countries: TIBQuery |
846 |
+ |
AllowAutoActivateTransaction = False |
847 |
|
Database = IBDatabase1 |
848 |
|
Transaction = IBTransaction1 |
849 |
|
BeforeOpen = CountriesBeforeOpen |
850 |
|
BufferChunks = 1000 |
851 |
|
CachedUpdates = False |
852 |
+ |
EnableStatistics = False |
853 |
|
GenerateParamNames = False |
854 |
|
GeneratorField.ApplyOnEvent = gaeOnNewRecord |
855 |
+ |
MasterDetailDelay = 0 |
856 |
|
SQL.Strings = ( |
857 |
|
'Select A.COUNTRY, A.CURRENCY From COUNTRY A' |
858 |
|
'JOIN JOB J On J.JOB_COUNTRY = A.COUNTRY' |
870 |
|
Name = 'JOB_GRADE' |
871 |
|
ParamType = ptInput |
872 |
|
end> |
873 |
+ |
DataSetCloseAction = dcDiscardChanges |
874 |
|
left = 872 |
875 |
|
top = 296 |
876 |
|
ParamData = < |
891 |
|
top = 256 |
892 |
|
end |
893 |
|
object JobCodes: TIBQuery |
894 |
+ |
AllowAutoActivateTransaction = False |
895 |
|
Database = IBDatabase1 |
896 |
|
Transaction = IBTransaction1 |
897 |
|
BeforeOpen = JobCodesBeforeOpen |
898 |
|
BufferChunks = 1000 |
899 |
|
CachedUpdates = False |
900 |
+ |
EnableStatistics = False |
901 |
|
GenerateParamNames = False |
902 |
|
GeneratorField.ApplyOnEvent = gaeOnNewRecord |
903 |
+ |
MasterDetailDelay = 0 |
904 |
|
SQL.Strings = ( |
905 |
|
'Select A.JOB_CODE, A.JOB_TITLE From JOB A' |
906 |
|
'Where JOB_COUNTRY = :JOB_COUNTRY and JOB_GRADE = :JOB_GRADE' |
917 |
|
Name = 'JOB_GRADE' |
918 |
|
ParamType = ptInput |
919 |
|
end> |
920 |
+ |
DataSetCloseAction = dcDiscardChanges |
921 |
|
left = 872 |
922 |
|
top = 256 |
923 |
|
ParamData = < |
933 |
|
end> |
934 |
|
end |
935 |
|
object Depts: TIBQuery |
936 |
+ |
AllowAutoActivateTransaction = False |
937 |
|
Database = IBDatabase1 |
938 |
|
Transaction = IBTransaction1 |
939 |
|
BufferChunks = 1000 |
940 |
|
CachedUpdates = False |
941 |
+ |
EnableStatistics = False |
942 |
|
GenerateParamNames = False |
943 |
|
GeneratorField.ApplyOnEvent = gaeOnNewRecord |
944 |
+ |
MasterDetailDelay = 0 |
945 |
|
SQL.Strings = ( |
946 |
|
'Select A.DEPT_NO, A.DEPARTMENT From DEPARTMENT A' |
947 |
|
'' |
948 |
|
'Order by Upper(Department)' |
949 |
|
) |
950 |
|
Params = <> |
951 |
+ |
DataSetCloseAction = dcDiscardChanges |
952 |
|
left = 872 |
953 |
|
top = 210 |
954 |
|
end |
957 |
|
left = 832 |
958 |
|
top = 208 |
959 |
|
end |
960 |
+ |
object JobGradeChangeTimer: TTimer |
961 |
+ |
Interval = 0 |
962 |
+ |
OnTimer = JobGradeChangeTimerTimer |
963 |
+ |
left = 777 |
964 |
+ |
top = 304 |
965 |
+ |
end |
966 |
+ |
object JobCodeChangeTimer: TTimer |
967 |
+ |
Interval = 0 |
968 |
+ |
OnTimer = JobCodeChangeTimerTimer |
969 |
+ |
left = 776 |
970 |
+ |
top = 353 |
971 |
+ |
end |
972 |
|
end |