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

Comparing ibx/trunk/examples/DBAdmin/DataModule.lfm (file contents):
Revision 158 by tony, Thu Mar 1 11:23:33 2018 UTC vs.
Revision 219 by tony, Fri Mar 16 11:28:58 2018 UTC

# Line 1 | Line 1
1   object DatabaseData: TDatabaseData
2    OldCreateOrder = False
3    Height = 552
4 <  HorizontalOffset = 662
4 >  HorizontalOffset = 645
5    VerticalOffset = 400
6    Width = 730
7    object IBDatabase1: TIBDatabase
# Line 57 | Line 57 | object DatabaseData: TDatabaseData
57      BeforeClose = DatabaseQueryBeforeClose
58      BufferChunks = 1000
59      CachedUpdates = False
60 +    EnableStatistics = False
61      GenerateParamNames = False
62      GeneratorField.ApplyOnEvent = gaeOnNewRecord
63 +    MasterDetailDelay = 0
64      SQL.Strings = (
65        'SELECT * FROM RDB$DATABASE, MON$DATABASE'
66      )
# Line 76 | Line 78 | object DatabaseData: TDatabaseData
78      AutoCommit = acCommitRetaining
79      BufferChunks = 1000
80      CachedUpdates = False
81 +    EnableStatistics = False
82      GenerateParamNames = False
83      GeneratorField.ApplyOnEvent = gaeOnNewRecord
84 +    MasterDetailDelay = 0
85      SQL.Strings = (
86        'Select Trim(A.RDB$CHARACTER_SET_NAME)   as RDB$CHARACTER_SET_NAME'
87        ' From RDB$DATABASE A'
# Line 95 | Line 99 | object DatabaseData: TDatabaseData
99      OnCalcFields = ShadowFilesCalcFields
100      BufferChunks = 1000
101      CachedUpdates = False
102 +    EnableStatistics = False
103      GenerateParamNames = False
104      GeneratorField.ApplyOnEvent = gaeOnNewRecord
105 +    MasterDetailDelay = 0
106      SQL.Strings = (
107        'Select * From RDB$Files Where RDB$Shadow_Number <> 0 '
108        'Order by RDB$Shadow_Number, RDB$FILE_SEQUENCE'
# Line 181 | Line 187 | object DatabaseData: TDatabaseData
187      Transaction = CurrentTransaction
188      BufferChunks = 1000
189      CachedUpdates = False
190 +    EnableStatistics = False
191      GenerateParamNames = False
192      GeneratorField.ApplyOnEvent = gaeOnNewRecord
193 +    MasterDetailDelay = 0
194      SQL.Strings = (
195        'Select count(*) as Mappings'
196        'From SEC$GLOBAL_AUTH_MAPPING A'
# Line 199 | Line 207 | object DatabaseData: TDatabaseData
207      Transaction = CurrentTransaction
208      BufferChunks = 1000
209      CachedUpdates = False
210 +    EnableStatistics = False
211      GenerateParamNames = False
212      GeneratorField.ApplyOnEvent = gaeOnNewRecord
213 +    MasterDetailDelay = 0
214      SQL.Strings = (
215        'Select trim(A.RDB$CHARACTER_SET_NAME) as RDB$CHARACTER_SET_NAME'
216        ' From'
# Line 218 | Line 228 | object DatabaseData: TDatabaseData
228      Transaction = CurrentTransaction
229      BufferChunks = 1000
230      CachedUpdates = False
231 +    EnableStatistics = False
232      GenerateParamNames = False
233      GeneratorField.ApplyOnEvent = gaeOnNewRecord
234 +    MasterDetailDelay = 0
235      SQL.Strings = (
236        'Select * From RDB$Files Where RDB$Shadow_Number is null or RDB$Shadow_Number = 0 '
237        'Order by RDB$FILE_SEQUENCE'
# Line 249 | Line 261 | object DatabaseData: TDatabaseData
261      Transaction = CurrentTransaction
262      BufferChunks = 1000
263      CachedUpdates = False
264 +    EnableStatistics = False
265      GenerateParamNames = False
266      GeneratorField.ApplyOnEvent = gaeOnNewRecord
267 +    MasterDetailDelay = 0
268      SQL.Strings = (
269        'Select * from MON$ATTACHMENTS'
270        'Where MON$ATTACHMENT_ID = CURRENT_CONNECTION'
# Line 260 | Line 274 | object DatabaseData: TDatabaseData
274      left = 544
275      top = 112
276    end
263  object IBStatisticalService1: TIBStatisticalService
264    Params.Strings = (
265      ''
266    )
267    LoginPrompt = False
268    TraceFlags = []
269    Options = [HeaderPages]
270    left = 33
271    top = 283
272  end
273  object IBConfigService1: TIBConfigService
274    TraceFlags = []
275    left = 162
276    top = 285
277  end
277    object TableNameLookup: TIBQuery
278      AllowAutoActivateTransaction = False
279      Database = IBDatabase1
280      Transaction = CurrentTransaction
281      BufferChunks = 1000
282      CachedUpdates = False
283 +    EnableStatistics = False
284      GenerateParamNames = False
285      GeneratorField.ApplyOnEvent = gaeOnNewRecord
286 +    MasterDetailDelay = 0
287      SQL.Strings = (
288        'SELECT r.RDB$RELATION_ID,'
289        '    trim(r.RDB$RELATION_NAME) as RDB$RELATION_NAME'
# Line 293 | Line 294 | object DatabaseData: TDatabaseData
294      left = 288
295      top = 283
296    end
296  object IBServerProperties1: TIBServerProperties
297    Params.Strings = (
298      ''
299    )
300    TraceFlags = []
301    Options = []
302    left = 40
303    top = 368
304  end
305  object IBLogService1: TIBLogService
306    TraceFlags = []
307    left = 162
308    top = 368
309  end
297    object UserList: TIBQuery
298      AllowAutoActivateTransaction = False
299      Database = IBDatabase1
# Line 318 | Line 305 | object DatabaseData: TDatabaseData
305      BeforeClose = UserListBeforeClose
306      BufferChunks = 1000
307      CachedUpdates = False
308 +    EnableStatistics = False
309      GenerateParamNames = False
310      GeneratorField.ApplyOnEvent = gaeOnNewRecord
311 +    MasterDetailDelay = 0
312      SQL.Strings = (
313        'Select A.SEC$DESCRIPTION, A.SEC$PLUGIN, A.SEC$ADMIN,'
314 <      'A.SEC$ACTIVE, Trim(A.SEC$USER_NAME) as UserName, A.SEC$MIDDLE_NAME,'
314 >      'A.SEC$ACTIVE, Trim(A.SEC$USER_NAME) as SEC$USER_NAME, A.SEC$MIDDLE_NAME,'
315        'A.SEC$FIRST_NAME, A.SEC$LAST_NAME,'
316 <      'cast(NULL as VarChar(32)) as USERPASSWORD, CURRENT_CONNECTION,'
316 >      'cast(NULL as VarChar(32)) as SEC$PASSWORD, CURRENT_CONNECTION,'
317        'case when Count(B.MON$ATTACHMENT_ID) > 0 then true else false end as LoggedIn,'
318        'case When C.SEC$USER is not null then true else false end as DBCreator'
319        'From SEC$USERS A'
# Line 400 | Line 389 | object DatabaseData: TDatabaseData
389        Required = False
390        Size = 32
391      end
403    object UserListUSERPASSWORD: TIBStringField
404      FieldKind = fkData
405      FieldName = 'USERPASSWORD'
406      Index = 6
407      LookupCache = False
408      ProviderFlags = [pfInUpdate, pfInWhere]
409      ReadOnly = False
410      Required = False
411      Size = 32
412    end
413    object UserListUSERNAME: TIBStringField
414      FieldKind = fkData
415      FieldName = 'USERNAME'
416      Index = 7
417      LookupCache = False
418      ProviderFlags = [pfInUpdate, pfInWhere]
419      ReadOnly = False
420      Required = False
421      Size = 31
422    end
392      object UserListLOGGEDIN: TBooleanField
393        FieldKind = fkData
394        FieldName = 'LOGGEDIN'
395 <      Index = 8
395 >      Index = 6
396        LookupCache = False
397        ProviderFlags = [pfInUpdate, pfInWhere]
398        ReadOnly = False
# Line 433 | Line 402 | object DatabaseData: TDatabaseData
402      object UserListCURRENT_CONNECTION: TIBLargeIntField
403        FieldKind = fkData
404        FieldName = 'CURRENT_CONNECTION'
405 <      Index = 9
405 >      Index = 7
406        LookupCache = False
407        ProviderFlags = [pfInUpdate, pfInWhere]
408        ReadOnly = False
# Line 442 | Line 411 | object DatabaseData: TDatabaseData
411      object UserListDBCREATOR: TBooleanField
412        FieldKind = fkData
413        FieldName = 'DBCREATOR'
414 <      Index = 10
414 >      Index = 8
415        LookupCache = False
416        ProviderFlags = [pfInUpdate, pfInWhere]
417        ReadOnly = False
# Line 452 | Line 421 | object DatabaseData: TDatabaseData
421      object UserListUSERID: TLongintField
422        FieldKind = fkCalculated
423        FieldName = 'USERID'
424 <      Index = 11
424 >      Index = 9
425        LookupCache = False
426        ProviderFlags = [pfInUpdate, pfInWhere]
427        ReadOnly = False
# Line 461 | Line 430 | object DatabaseData: TDatabaseData
430      object UserListGROUPID: TLongintField
431        FieldKind = fkCalculated
432        FieldName = 'GROUPID'
433 +      Index = 10
434 +      LookupCache = False
435 +      ProviderFlags = [pfInUpdate, pfInWhere]
436 +      ReadOnly = False
437 +      Required = False
438 +    end
439 +    object UserListSECPASSWORD: TIBStringField
440 +      FieldKind = fkData
441 +      FieldName = 'SEC$PASSWORD'
442 +      Index = 11
443 +      LookupCache = False
444 +      ProviderFlags = [pfInUpdate, pfInWhere]
445 +      ReadOnly = False
446 +      Required = False
447 +      Size = 32
448 +    end
449 +    object UserListSECUSER_NAME: TIBStringField
450 +      FieldKind = fkData
451 +      FieldName = 'SEC$USER_NAME'
452        Index = 12
453        LookupCache = False
454        ProviderFlags = [pfInUpdate, pfInWhere]
455        ReadOnly = False
456        Required = False
457 +      Size = 31
458      end
459    end
460    object UpdateUsers: TIBUpdate
461      RefreshSQL.Strings = (
462        'Select A.SEC$DESCRIPTION, A.SEC$PLUGIN, A.SEC$ADMIN,'
463 <      'A.SEC$ACTIVE, A.SEC$USER_NAME as UserName, A.SEC$MIDDLE_NAME,'
463 >      'A.SEC$ACTIVE, A.SEC$USER_NAME, A.SEC$MIDDLE_NAME,'
464        'A.SEC$FIRST_NAME, A.SEC$LAST_NAME,'
465 <      'cast(NULL as VarChar(32)) as USERPASSWORD, CURRENT_CONNECTION,'
465 >      'cast(NULL as VarChar(32)) as SEC$PASSWORD, CURRENT_CONNECTION,'
466        'case when B.MON$ATTACHMENT_ID is not null then true else false end as LoggedIn,'
467        'case When C.SEC$USER is not null then true else false end as DBCreator'
468        'From SEC$USERS A'
469        'Left Outer Join MON$ATTACHMENTS B'
470        'On A.SEC$USER_NAME = B.MON$USER'
471        'Left Outer Join SEC$DB_CREATORS  C on C.SEC$USER = A.SEC$USER_NAME'
472 <      'Where  A.SEC$USER_NAME = :UserName'
472 >      'Where  A.SEC$USER_NAME = :SEC$USER_NAME'
473      )
474      OnApplyUpdates = UpdateUsersApplyUpdates
475      left = 544
# Line 494 | Line 483 | object DatabaseData: TDatabaseData
483      BufferChunks = 1000
484      CachedUpdates = False
485      DataSource = UserListSource
486 +    EnableStatistics = False
487      GenerateParamNames = False
488      GeneratorField.ApplyOnEvent = gaeOnNewRecord
489 +    MasterDetailDelay = 0
490      SQL.Strings = (
491        'SELECT r.RDB$ROLE_NAME, r.RDB$OWNER_NAME, r.RDB$DESCRIPTION, r.RDB$SYSTEM_FLAG, '
492 <      'P.RDB$USER,RDB$PRIVILEGE,   cast(:USERNAME as VARCHAR(32)) as USERNAME,'
492 >      'P.RDB$USER,RDB$PRIVILEGE,   cast(:SEC$USER_NAME as VARCHAR(32)) as SEC$USER_NAME,'
493        'Case When RDB$PRIVILEGE is null then 0 else 1 End as GRANTED'
494        'FROM RDB$ROLES r'
495        'Left Outer JOIN ('
496        'Select RDB$RELATION_NAME, RDB$PRIVILEGE, RDB$USER  From RDB$USER_PRIVILEGES '
497 <      'Where RDB$USER = :USERNAME and RDB$PRIVILEGE = ''M'''
497 >      'Where RDB$USER = :SEC$USER_NAME and RDB$PRIVILEGE = ''M'''
498        ') P  On P.RDB$RELATION_NAME = r.RDB$ROLE_NAME '
499        ''
500      )
501      Params = <    
502        item
503          DataType = ftUnknown
504 <        Name = 'USERNAME'
504 >        Name = 'SEC$USER_NAME'
505          ParamType = ptInput
506        end>
507      UpdateObject = UpdateUserRoles
# Line 520 | Line 511 | object DatabaseData: TDatabaseData
511      ParamData = <    
512        item
513          DataType = ftUnknown
514 <        Name = 'USERNAME'
514 >        Name = 'SEC$USER_NAME'
515          ParamType = ptInput
516        end>
517    end
518    object UpdateUserRoles: TIBUpdate
519      RefreshSQL.Strings = (
520        'SELECT r.RDB$ROLE_NAME, r.RDB$OWNER_NAME, r.RDB$DESCRIPTION, r.RDB$SYSTEM_FLAG,'
521 <      'P.RDB$USER,RDB$PRIVILEGE,   cast(:USERNAME as VARCHAR(32)) as USERNAME,'
521 >      'P.RDB$USER,RDB$PRIVILEGE,   cast(:SEC$USER_NAME as VARCHAR(32)) as SEC$USER_NAME,'
522        'Case When RDB$PRIVILEGE is null then 0 else 1 End as GRANTED'
523        'FROM RDB$ROLES r'
524        'Left Outer JOIN ('
525        'Select RDB$RELATION_NAME, RDB$PRIVILEGE, RDB$USER  From RDB$USER_PRIVILEGES'
526 <      'Where RDB$USER = :USERNAME and RDB$PRIVILEGE = ''M'''
526 >      'Where RDB$USER = :SEC$USER_NAME and RDB$PRIVILEGE = ''M'''
527        ') P  On P.RDB$RELATION_NAME = r.RDB$ROLE_NAME'
528        'Where  r.RDB$ROLE_NAME = :RDB$ROLE_NAME'
529      )
# Line 549 | Line 540 | object DatabaseData: TDatabaseData
540      AllowAutoActivateTransaction = False
541      Database = IBDatabase1
542      Transaction = CurrentTransaction
552    AfterDelete = UserListAfterPost
543      AfterInsert = UserTagsAfterInsert
554    AfterPost = UserListAfterPost
544      BufferChunks = 1000
545      CachedUpdates = False
546      DataSource = UserListSource
547 +    EnableStatistics = False
548      GenerateParamNames = False
549      GeneratorField.ApplyOnEvent = gaeOnNewRecord
550 +    MasterDetailDelay = 0
551      SQL.Strings = (
552        'Select a.SEC$USER_NAME, A.SEC$KEY, A.SEC$VALUE'
553        'From'
554        'SEC$USER_ATTRIBUTES  A'
555 <      'Where SEC$USER_NAME = :UserName'
555 >      'Where SEC$USER_NAME = :SEC$USER_NAME'
556      )
557      Params = <    
558        item
559          DataType = ftUnknown
560 <        Name = 'UserName'
560 >        Name = 'SEC$USER_NAME'
561          ParamType = ptInput
562        end>
563      UpdateObject = TagsUpdate
# Line 576 | Line 567 | object DatabaseData: TDatabaseData
567      ParamData = <    
568        item
569          DataType = ftUnknown
570 <        Name = 'UserName'
570 >        Name = 'SEC$USER_NAME'
571          ParamType = ptInput
572        end>
573    end
# Line 596 | Line 587 | object DatabaseData: TDatabaseData
587      left = 304
588      top = 360
589    end
599  object LegacyUserList: TMemDataset
600    FieldDefs = <    
601      item
602        Name = 'USERID'
603        DataType = ftInteger
604      end    
605      item
606        Name = 'GROUPID'
607        DataType = ftInteger
608      end    
609      item
610        Name = 'USERNAME'
611        DataType = ftString
612        Size = 32
613      end    
614      item
615        Name = 'SEC$FIRST_NAME'
616        DataType = ftString
617        Size = 32
618      end    
619      item
620        Name = 'SEC$MIDDLE_NAME'
621        DataType = ftString
622        Size = 32
623      end    
624      item
625        Name = 'SEC$LAST_NAME'
626        DataType = ftString
627        Size = 32
628      end    
629      item
630        Name = 'USERPASSWORD'
631        DataType = ftString
632        Size = 32
633      end    
634      item
635        Name = 'SEC$ADMIN'
636        DataType = ftBoolean
637      end    
638      item
639        Name = 'SEC$PLUGIN'
640        DataType = ftString
641        Size = 31
642      end    
643      item
644        Name = 'SEC$ACTIVE'
645        DataType = ftBoolean
646      end    
647      item
648        Name = 'LOGGEDIN'
649        DataType = ftBoolean
650      end    
651      item
652        Name = 'DBCREATOR'
653        DataType = ftBoolean
654      end>
655    AfterOpen = LegacyUserListAfterOpen
656    BeforeClose = LegacyUserListBeforeClose
657    AfterInsert = UserListAfterInsert
658    BeforePost = LegacyUserListBeforePost
659    AfterPost = UserListAfterPost
660    BeforeDelete = LegacyUserListBeforeDelete
661    AfterDelete = UserListAfterPost
662    left = 520
663    top = 416
664  end
665  object IBSecurityService1: TIBSecurityService
666    ServerName = 'localhost'
667    Protocol = TCP
668    TraceFlags = []
669    SecurityAction = ActionAddUser
670    UserID = 0
671    GroupID = 0
672    AdminRole = False
673    left = 48
674    top = 432
675  end
590    object Attachments: TIBQuery
591      AllowAutoActivateTransaction = False
592      Database = IBDatabase1
# Line 682 | Line 596 | object DatabaseData: TDatabaseData
596      BeforeOpen = AttachmentsBeforeOpen
597      BufferChunks = 1000
598      CachedUpdates = False
599 +    EnableStatistics = False
600      GenerateParamNames = False
601      GeneratorField.ApplyOnEvent = gaeOnNewRecord
602 +    MasterDetailDelay = 0
603      SQL.Strings = (
604        'SELECT *'
605        'FROM MON$ATTACHMENTS r'
# Line 1001 | Line 917 | object DatabaseData: TDatabaseData
917      left = 376
918      top = 432
919    end
1004  object IBValidationService1: TIBValidationService
1005    TraceFlags = []
1006    Options = [ValidateFull]
1007    GlobalAction = CommitGlobal
1008    left = 168
1009    top = 432
1010  end
1011  object IBOnlineValidationService1: TIBOnlineValidationService
1012    TraceFlags = []
1013    left = 64
1014    top = 498
1015  end
1016  object InLimboList: TMemDataset
1017    FieldDefs = <    
1018      item
1019        Name = 'TransactionID'
1020        DataType = ftInteger
1021      end    
1022      item
1023        Name = 'TransactionType'
1024        DataType = ftString
1025        Size = 16
1026      end    
1027      item
1028        Name = 'HostSite'
1029        DataType = ftString
1030        Size = 256
1031      end    
1032      item
1033        Name = 'RemoteSite'
1034        DataType = ftString
1035        Size = 256
1036      end    
1037      item
1038        Name = 'DatabasePath'
1039        DataType = ftString
1040        Size = 256
1041      end    
1042      item
1043        Name = 'State'
1044        DataType = ftString
1045        Size = 32
1046      end    
1047      item
1048        Name = 'RecommendedAction'
1049        DataType = ftString
1050        Size = 32
1051      end    
1052      item
1053        Name = 'RequestedAction'
1054        DataType = ftString
1055        Size = 32
1056      end>
1057    AfterOpen = InLimboListAfterOpen
1058    BeforeClose = InLimboListBeforeClose
1059    BeforePost = InLimboListBeforePost
1060    left = 224
1061    top = 498
1062  end
920    object AdminUserQuery: TIBSQL
921      Database = IBDatabase1
922      GenerateParamNames = False
# Line 1079 | Line 936 | object DatabaseData: TDatabaseData
936      Transaction = CurrentTransaction
937      BufferChunks = 1000
938      CachedUpdates = False
939 +    EnableStatistics = False
940      GenerateParamNames = False
941      GeneratorField.ApplyOnEvent = gaeOnNewRecord
942 +    MasterDetailDelay = 0
943      SQL.Strings = (
944        'Select Trim(A.RDB$RELATION_NAME) as RDB$RELATION_NAME, 1 as Selected'
945        ' From RDB$RELATIONS A'
# Line 1107 | Line 966 | object DatabaseData: TDatabaseData
966      Transaction = CurrentTransaction
967      BufferChunks = 1000
968      CachedUpdates = False
969 +    EnableStatistics = False
970      GenerateParamNames = False
971      GeneratorField.ApplyOnEvent = gaeOnNewRecord
972 +    MasterDetailDelay = 0
973      SQL.Strings = (
974        'SELECT r.RDB$DB_KEY, cast(''Local'' as VarChar(6)) as MAPTYPE, r.RDB$MAP_NAME,'
975        '    Case'
# Line 1161 | Line 1022 | object DatabaseData: TDatabaseData
1022      OnCalcFields = AccessRightsCalcFields
1023      BufferChunks = 1000
1024      CachedUpdates = False
1025 +    EnableStatistics = False
1026      GenerateParamNames = False
1027      GeneratorField.ApplyOnEvent = gaeOnNewRecord
1028 +    MasterDetailDelay = 0
1029      SQL.Strings = (
1030        'with recursive AccessRight as ('
1031        'Select UP.RDB$USER as SUBJECT_NAME,'
# Line 1292 | Line 1155 | object DatabaseData: TDatabaseData
1155      BeforeOpen = SubjectAccessRightsBeforeOpen
1156      BufferChunks = 1000
1157      CachedUpdates = False
1158 +    EnableStatistics = False
1159      GenerateParamNames = False
1160      GeneratorField.ApplyOnEvent = gaeOnNewRecord
1161 +    MasterDetailDelay = 0
1162      SQL.Strings = (
1163        'Select UP.RDB$USER as SUBJECT_NAME,'
1164        '  UP.RDB$USER_TYPE as SUBJECT_TYPE,'
# Line 1353 | Line 1218 | object DatabaseData: TDatabaseData
1218          ParamType = ptInput
1219        end>
1220    end
1221 +  object IBXServicesConnection1: TIBXServicesConnection
1222 +    Connected = False
1223 +    OnLogin = IBXServicesConnection1Login
1224 +    Params.Strings = (
1225 +      'sql_role_name=RDB$ADMIN'
1226 +    )
1227 +    TraceFlags = []
1228 +    left = 640
1229 +    top = 48
1230 +  end
1231 +  object IBStatisticalService1: TIBXStatisticalService
1232 +    ServicesConnection = IBXServicesConnection1
1233 +    TraceFlags = []
1234 +    Options = [HeaderPages]
1235 +    left = 48
1236 +    top = 287
1237 +  end
1238 +  object IBConfigService1: TIBXConfigService
1239 +    ServicesConnection = IBXServicesConnection1
1240 +    TraceFlags = []
1241 +    left = 168
1242 +    top = 283
1243 +  end
1244 +  object IBServerProperties1: TIBXServerProperties
1245 +    ServicesConnection = IBXServicesConnection1
1246 +    TraceFlags = []
1247 +    left = 40
1248 +    top = 365
1249 +  end
1250 +  object IBLogService1: TIBXLogService
1251 +    ServicesConnection = IBXServicesConnection1
1252 +    TraceFlags = []
1253 +    left = 168
1254 +    top = 365
1255 +  end
1256 +  object IBSecurityService1: TIBXSecurityService
1257 +    ServicesConnection = IBXServicesConnection1
1258 +    TraceFlags = []
1259 +    UserID = 0
1260 +    GroupID = 0
1261 +    AdminRole = False
1262 +    left = 36
1263 +    top = 437
1264 +  end
1265 +  object IBValidationService1: TIBXValidationService
1266 +    ServicesConnection = IBXServicesConnection1
1267 +    TraceFlags = []
1268 +    OnGetNextLine = IBValidationService1GetNextLine
1269 +    Options = [ValidateFull]
1270 +    left = 632
1271 +    top = 416
1272 +  end
1273 +  object IBOnlineValidationService1: TIBXOnlineValidationService
1274 +    ServicesConnection = IBXServicesConnection1
1275 +    TraceFlags = []
1276 +    OnGetNextLine = IBValidationService1GetNextLine
1277 +    left = 40
1278 +    top = 503
1279 +  end
1280 +  object LegacyUserList: TIBXServicesUserList
1281 +    FieldDefs = <    
1282 +      item
1283 +        Name = 'UserID'
1284 +        DataType = ftInteger
1285 +        Precision = -1
1286 +      end    
1287 +      item
1288 +        Name = 'GroupID'
1289 +        DataType = ftInteger
1290 +        Precision = -1
1291 +      end    
1292 +      item
1293 +        Name = 'SEC$USER_NAME'
1294 +        DataType = ftString
1295 +        Precision = -1
1296 +        Size = 31
1297 +      end    
1298 +      item
1299 +        Name = 'SEC$FIRST_NAME'
1300 +        DataType = ftString
1301 +        Precision = -1
1302 +        Size = 32
1303 +      end    
1304 +      item
1305 +        Name = 'SEC$MIDDLE_NAME'
1306 +        DataType = ftString
1307 +        Precision = -1
1308 +        Size = 32
1309 +      end    
1310 +      item
1311 +        Name = 'SEC$LAST_NAME'
1312 +        DataType = ftString
1313 +        Precision = -1
1314 +        Size = 32
1315 +      end    
1316 +      item
1317 +        Name = 'SEC$PASSWORD'
1318 +        DataType = ftString
1319 +        Precision = -1
1320 +        Size = 32
1321 +      end    
1322 +      item
1323 +        Name = 'SEC$ADMIN'
1324 +        DataType = ftBoolean
1325 +        Precision = -1
1326 +      end    
1327 +      item
1328 +        Name = 'SEC$PLUGIN'
1329 +        DataType = ftString
1330 +        Size = 21
1331 +      end    
1332 +      item
1333 +        Name = 'SEC$ACTIVE'
1334 +        DataType = ftBoolean
1335 +      end    
1336 +      item
1337 +        Name = 'LOGGEDIN'
1338 +        DataType = ftBoolean
1339 +      end    
1340 +      item
1341 +        Name = 'DBCREATOR'
1342 +        DataType = ftBoolean
1343 +      end>
1344 +    AfterOpen = LegacyUserListAfterOpen
1345 +    BeforeClose = LegacyUserListBeforeClose
1346 +    AfterInsert = UserListAfterInsert
1347 +    AfterPost = LegacyUserListAfterPost
1348 +    Source = IBSecurityService1
1349 +    left = 167
1350 +    top = 438
1351 +  end
1352 +  object InLimboList: TIBXServicesLimboTransactionsList
1353 +    FieldDefs = <    
1354 +      item
1355 +        Name = 'TransactionID'
1356 +        DataType = ftInteger
1357 +        Precision = -1
1358 +      end    
1359 +      item
1360 +        Name = 'TransactionType'
1361 +        DataType = ftString
1362 +        Precision = -1
1363 +        Size = 16
1364 +      end    
1365 +      item
1366 +        Name = 'HostSite'
1367 +        DataType = ftString
1368 +        Precision = -1
1369 +        Size = 256
1370 +      end    
1371 +      item
1372 +        Name = 'RemoteSite'
1373 +        DataType = ftString
1374 +        Precision = -1
1375 +        Size = 256
1376 +      end    
1377 +      item
1378 +        Name = 'DatabasePath'
1379 +        DataType = ftString
1380 +        Precision = -1
1381 +        Size = 256
1382 +      end    
1383 +      item
1384 +        Name = 'State'
1385 +        DataType = ftString
1386 +        Precision = -1
1387 +        Size = 32
1388 +      end    
1389 +      item
1390 +        Name = 'RecommendedAction'
1391 +        DataType = ftString
1392 +        Precision = -1
1393 +        Size = 32
1394 +      end    
1395 +      item
1396 +        Name = 'RequestedAction'
1397 +        DataType = ftString
1398 +        Precision = -1
1399 +        Size = 32
1400 +      end>
1401 +    Source = IBLimboTrans
1402 +    left = 296
1403 +    top = 496
1404 +  end
1405 +  object IBLimboTrans: TIBXLimboTransactionResolutionService
1406 +    ServicesConnection = IBXServicesConnection1
1407 +    TraceFlags = []
1408 +    GlobalAction = CommitGlobal
1409 +    left = 176
1410 +    top = 496
1411 +  end
1412   end

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines