diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DAADODrv.dad b/official/5.0.30.691/Data Abstract (Common)/Bin/DAADODrv.dad new file mode 100644 index 0000000..4a81079 Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/DAADODrv.dad differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DAAnyDACDrv.dad b/official/5.0.30.691/Data Abstract (Common)/Bin/DAAnyDACDrv.dad new file mode 100644 index 0000000..fee99ca Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/DAAnyDACDrv.dad differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DABDEDrv.dad b/official/5.0.30.691/Data Abstract (Common)/Bin/DABDEDrv.dad new file mode 100644 index 0000000..0f3feb7 Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/DABDEDrv.dad differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DAConverter.exe b/official/5.0.30.691/Data Abstract (Common)/Bin/DAConverter.exe new file mode 100644 index 0000000..962befe Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/DAConverter.exe differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DADBISAM3Drv.dad b/official/5.0.30.691/Data Abstract (Common)/Bin/DADBISAM3Drv.dad new file mode 100644 index 0000000..5529423 Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/DADBISAM3Drv.dad differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DADBISAM4Drv.dad b/official/5.0.30.691/Data Abstract (Common)/Bin/DADBISAM4Drv.dad new file mode 100644 index 0000000..69b330c Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/DADBISAM4Drv.dad differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DADBXDrv.dad b/official/5.0.30.691/Data Abstract (Common)/Bin/DADBXDrv.dad new file mode 100644 index 0000000..c5490dd Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/DADBXDrv.dad differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DAElevateDBDrv.dad b/official/5.0.30.691/Data Abstract (Common)/Bin/DAElevateDBDrv.dad new file mode 100644 index 0000000..9fbc98e Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/DAElevateDBDrv.dad differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DAFIBDrv.dad b/official/5.0.30.691/Data Abstract (Common)/Bin/DAFIBDrv.dad new file mode 100644 index 0000000..5d83138 Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/DAFIBDrv.dad differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DAIBDACDrv.dad b/official/5.0.30.691/Data Abstract (Common)/Bin/DAIBDACDrv.dad new file mode 100644 index 0000000..f01e44e Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/DAIBDACDrv.dad differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DAIBODrv.dad b/official/5.0.30.691/Data Abstract (Common)/Bin/DAIBODrv.dad new file mode 100644 index 0000000..3fcb46a Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/DAIBODrv.dad differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DAIBXDrv.dad b/official/5.0.30.691/Data Abstract (Common)/Bin/DAIBXDrv.dad new file mode 100644 index 0000000..bd533b5 Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/DAIBXDrv.dad differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DAMyDACDrv.dad b/official/5.0.30.691/Data Abstract (Common)/Bin/DAMyDACDrv.dad new file mode 100644 index 0000000..976c172 Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/DAMyDACDrv.dad differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DAMySQLDACDrv.dad b/official/5.0.30.691/Data Abstract (Common)/Bin/DAMySQLDACDrv.dad new file mode 100644 index 0000000..010b101 Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/DAMySQLDACDrv.dad differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DANexusDBDrv.dad b/official/5.0.30.691/Data Abstract (Common)/Bin/DANexusDBDrv.dad new file mode 100644 index 0000000..b5338e9 Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/DANexusDBDrv.dad differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DAODACDrv.dad b/official/5.0.30.691/Data Abstract (Common)/Bin/DAODACDrv.dad new file mode 100644 index 0000000..06f1f04 Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/DAODACDrv.dad differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DAPostgresDACDrv.dad b/official/5.0.30.691/Data Abstract (Common)/Bin/DAPostgresDACDrv.dad new file mode 100644 index 0000000..cd87a01 Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/DAPostgresDACDrv.dad differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DASDACDrv.dad b/official/5.0.30.691/Data Abstract (Common)/Bin/DASDACDrv.dad new file mode 100644 index 0000000..120a924 Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/DASDACDrv.dad differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DASQLiteDrv.dad b/official/5.0.30.691/Data Abstract (Common)/Bin/DASQLiteDrv.dad new file mode 100644 index 0000000..19168db Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/DASQLiteDrv.dad differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DASchemaModeler.chm b/official/5.0.30.691/Data Abstract (Common)/Bin/DASchemaModeler.chm new file mode 100644 index 0000000..0a7ab83 Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/DASchemaModeler.chm differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DASchemaModeler.exe b/official/5.0.30.691/Data Abstract (Common)/Bin/DASchemaModeler.exe new file mode 100644 index 0000000..f373789 Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/DASchemaModeler.exe differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DAServer.exe b/official/5.0.30.691/Data Abstract (Common)/Bin/DAServer.exe new file mode 100644 index 0000000..cf4efa4 Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/DAServer.exe differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DAZeosDrv.dad b/official/5.0.30.691/Data Abstract (Common)/Bin/DAZeosDrv.dad new file mode 100644 index 0000000..32c0147 Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/DAZeosDrv.dad differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/Data Abstract.lic b/official/5.0.30.691/Data Abstract (Common)/Bin/Data Abstract.lic new file mode 100644 index 0000000..caf76ce --- /dev/null +++ b/official/5.0.30.691/Data Abstract (Common)/Bin/Data Abstract.lic @@ -0,0 +1,18 @@ +a507280b197eca7b97b161eeea466e51fe9422d92ee144922e41b313f5cafe13fd53b9f968170f88e987ea4e608fd2cecdb644e3027c7a0003bf061bc27713688f3c73a74d39b613075abdb2c1d38d82a6d975ed0f401dd57ac8d73cb4d20223de8b3842acda4604fffb013e416edb7c4fe68fe3dad6dba42e24c55afe5087c736670de1a271beb9df0c3983a7fc35f0cee0ed30a258935f7da0512bdbadab549ff3bda6a487c5d1badf793c3a0f8c0d876f617de2d5f52ed16f29e6680e618b6bed8568dcbaf8336976c0b49cd8a2ee8f863e2fd724fe6dfab01c954bdceb95b9c2e7dfcd96e941ac3a9c08646c59a9d2421a0ef5c7067c73196e1b4df7f82d +e5553aa72ca05cd68a06209ba085f3635cea59d6504e7c36a16c55ddf95be850b88d430367a6a3ac8734837f5d3792e12329f32059889de37577dc14c9220e73 +Name=Trial +Email=Trial +UserId=Trial +Company=Trial +LicenseType=Default +ProductName=Data Abstract +Version=5 +AllowBeta=0 +Trial=1 +SubscriptionEndDate=2008-05-25 +LicenseFileEndDate=2008-5-24 +StartDate=2008-5-21 +EndDate=2009-2-21 +P1=5774826342213356562 +P2=14998198381424365840 +P3=3317513148 diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/DefaultConnections.ini b/official/5.0.30.691/Data Abstract (Common)/Bin/DefaultConnections.ini new file mode 100644 index 0000000..fd8e300 --- /dev/null +++ b/official/5.0.30.691/Data Abstract (Common)/Bin/DefaultConnections.ini @@ -0,0 +1,14 @@ +[Delphi] +AdventureWorks=ADO?AuxDriver=SQLNCLI.1;Server=localhost;Database=AdventureWorks;Schemas=1;Integrated Security=SSPI +Northwind=ADO?AuxDriver=SQLOLEDB.1;Server=localhost;Database=Northwind;Integrated Security=SSPI +Employee=IBX?Server=localhost;Database=C:\Program Files\Firebird\Firebird_1_5\examples\EMPLOYEE.FDB;UserID=sysdba;Password=masterkey; + +[.NET] +AdventureWorks=MSSQL2005.NET?Database=AdventureWorks;Server=localhost;Integrated Security=SSPI +Northwind=MSSQL.NET?Database=Northwind;Server=localhost;Integrated Security=SSPI +Employee=FB.NET?Server=localhost;Database=C:\Program Files\Firebird\Firebird_1_5\examples\EMPLOYEE.FDB;UserID=sysdba;Password=masterkey; + +[Descriptions] +AdventureWorks_Description=Microsoft SQL Server 2005, localhost +Northwind_Description=Microsoft SQL Server 2000, localhost +Employee_Description=Firebird/Interbase, localhost diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/borlndmm.dll b/official/5.0.30.691/Data Abstract (Common)/Bin/borlndmm.dll new file mode 100644 index 0000000..2e3ede2 Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/borlndmm.dll differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/dbxasa30.dll b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxasa30.dll new file mode 100644 index 0000000..3410b2f Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxasa30.dll differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/dbxase30.dll b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxase30.dll new file mode 100644 index 0000000..1977334 Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxase30.dll differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/dbxconnections.ini b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxconnections.ini new file mode 100644 index 0000000..cd417db --- /dev/null +++ b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxconnections.ini @@ -0,0 +1,192 @@ +[DBXPoolConnection] +DriverName=DBXPool +MaxConnections=16 +MinConnections=0 +ConnectTimeout=0 + +[DBXTraceConnection] +DriverName=DBXTrace +;TraceFile=c:\temp\dbxtrace.txt +;TraceFlags=PARAMETER;ERROR;EXECUTE;COMMAND;CONNECT;TRANSACT;BLOB;MISC;VENDOR;READER;DRIVER_LOAD;METADATA +;TraceDriver=true +TraceFlags=NONE + +[DB2Connection] +;DelegateConnection=DBXTraceConnection +DriverName=DB2 +Database=DBNAME +User_Name=user +Password=password +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +DB2 TransIsolation=ReadCommited +Decimal Separator=. + +[MySQLConnection] +;DelegateConnection=DBXTraceConnection +DriverName=MySQL +HostName=ServerName +Database=DBNAME +User_Name=user +Password=password +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +Compressed=False +Encrypted=False + + +[OracleConnection] +;DelegateConnection=DBXTraceConnection +DriverName=Oracle +DataBase=Database Name +User_Name=user +Password=password +RowsetSize=20 +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +Oracle TransIsolation=ReadCommited +OS Authentication=False +Multiple Transaction=False +Trim Char=False +Decimal Separator=. + +[InformixConnection] +;DelegateConnection=DBXTraceConnection +DriverName=Informix +HostName=ServerName +DataBase=Database Name +User_Name=user +Password=password +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +Informix TransIsolation=ReadCommited +Trim Char=False + + +[ASAConnection] +;DelegateConnection=DBXTraceConnection +DriverName=ASA +HostName=ServerName +Database=DBNAME +User_Name=user +Password=password +ConnectionString= +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +ASA TransIsolation=ReadCommited + +[ASEConnection] +;DelegateConnection=DBXTraceConnection +DriverName=ASE +HostName=ServerName +DataBase=Database Name +User_Name=user +Password=password +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +ASE TransIsolation=ReadCommited + +[BlackfishSQLCONNECTION] +DriverName=BlackfishSQL +HostName=localhost +port=2508 +Database=databasename +create=true +User_Name=sysdba +Password=masterkey +BlobSize=-1 +TransIsolation=ReadCommited +[Employee] +DriverName=Interbase +DriverUnit=DBXDynalink +DriverPackageLoader=TDBXDynalinkDriverLoader,DbxDynalinkDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxDynalinkDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f +Database=localhost:D:\EMPLOYEE.FDB +RoleName=RoleName +User_Name=sysdba +Password=masterkey +ServerCharSet= +SQLDialect=3 +BlobSize=-1 +CommitRetain=False +WaitOnLocks=True +ErrorResourceFile= +LocaleCode=0000 +Interbase TransIsolation=ReadCommited +Trim Char=False +MetaDataPackageLoader=TDBXInterbaseMetaDataCommandFactory,DbxReadOnlyMetaData100.bpl +MetaDataAssemblyLoader=Borland.Data.TDBXInterbaseMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +[MSSQLConnection] +SchemaOverride=sa.dbo +DriverName=MSSQL +HostName=localhost\sqlexpress +DataBase=adventureWorks +User_Name=sa +Password= +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +MSSQL TransIsolation=ReadCommited +OS Authentication=True +Prepare SQL=False +[AdventureWorks] +DriverName=MSSQL +SchemaOverride=%.dbo +DriverUnit=DBXDynalink +DriverPackageLoader=TDBXDynalinkDriverLoader,DBXDynalinkDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxDynalinkDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f +HostName=wks1 +DataBase=master +User_Name=sa +Password= +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +MSSQL TransIsolation=ReadCommited +OS Authentication=True +Prepare SQL=False +MetaDataPackageLoader=TDBXMsSqlMetaDataCommandFactory,DbxReadOnlyMetaData100.bpl +MetaDataAssemblyLoader=Borland.Data.TDBXMsSqlMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +[ADO] +DriverName=MSSQL +SchemaOverride=%.dbo +DriverUnit=DBXDynalink +DriverPackageLoader=TDBXDynalinkDriverLoader +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f +HostName=localhost +DataBase=Northwind +User_Name=sa +Password= +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +MSSQL TransIsolation=ReadCommited +OS Authentication=True +Prepare SQL=False +[IBConnection] +DriverName=Interbase +Database=database.gdb +RoleName=RoleName +User_Name=sysdba +Password=masterkey +ServerCharSet= +SQLDialect=3 +ErrorResourceFile= +LocaleCode=0000 +BlobSize=-1 +CommitRetain=False +WaitOnLocks=True +Interbase TransIsolation=ReadCommited +Trim Char=False diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/dbxdb230.dll b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxdb230.dll new file mode 100644 index 0000000..b44bb92 Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxdb230.dll differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/dbxdrivers.ini b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxdrivers.ini new file mode 100644 index 0000000..63a869f --- /dev/null +++ b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxdrivers.ini @@ -0,0 +1,301 @@ +[Installed Drivers] +DB2=1 +Interbase=1 +MySQL=1 +Oracle=1 +Informix=1 +MSSQL=1 +ASA=1 +ASE=1 +DBXTrace=1 +DBXPool=1 +BlackfishSQL=1 + +[DBXPool] +DelegateDriver=True +DriverName=DBXPool +DriverUnit=DBXPool +DriverPackageLoader=TDBXPoolDriverLoader,DBXCommonDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXPoolDriverLoader,Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f + +[DBXTrace] +DelegateDriver=True +DriverName=DBXTrace +DriverUnit=DBXTrace +DriverPackageLoader=TDBXTraceDriverLoader,DBXCommonDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXTraceDriverLoader,Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f + +[DB2] +DriverUnit=DBXDynalink +DriverPackageLoader=TDBXDynalinkDriverLoader,DBXDynalinkDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxDynalinkDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f + +GetDriverFunc=getSQLDriverDB2 +LibraryName=dbxdb230.dll +VendorLib=db2cli.dll +Database=DBNAME +User_Name=user +Password=password +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +DB2 TransIsolation=ReadCommited +Decimal Separator=. +MetaDataPackageLoader=TDBXDb2MetaDataCommandFactory,DbxReadOnlyMetaData100.bpl +MetaDataAssemblyLoader=Borland.Data.TDBXDb2MetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b + +[Interbase] +DriverUnit=DBXDynalink +DriverPackageLoader=TDBXDynalinkDriverLoader,DbxDynalinkDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxDynalinkDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f + +GetDriverFunc=getSQLDriverINTERBASE +LibraryName=dbxint30.dll +VendorLib=GDS32.DLL +Database=database.gdb +RoleName=RoleName +User_Name=sysdba +Password=masterkey +ServerCharSet= +SQLDialect=3 +BlobSize=-1 +CommitRetain=False +WaitOnLocks=True +ErrorResourceFile= +LocaleCode=0000 +Interbase TransIsolation=ReadCommited +Trim Char=False +MetaDataPackageLoader=TDBXInterbaseMetaDataCommandFactory,DbxReadOnlyMetaData100.bpl +MetaDataAssemblyLoader=Borland.Data.TDBXInterbaseMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b + +[MySQL] +DriverUnit=DBXDynalink +DriverPackageLoader=TDBXDynalinkDriverLoader,DbxDynalinkDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxDynalinkDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f + +GetDriverFunc=getSQLDriverMYSQL +LibraryName=dbxmys30.dll +VendorLib=LIBMYSQL.dll +HostName=ServerName +Database=DBNAME +User_Name=user +Password=password +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +Compressed=False +Encrypted=False +MetaDataPackageLoader=TDBXMySqlMetaDataCommandFactory,DbxReadOnlyMetaData100.bpl +MetaDataAssemblyLoader=Borland.Data.TDBXMySqlMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b + +[Oracle] +DriverUnit=DBXDynalink +DriverPackageLoader=TDBXDynalinkDriverLoader,DBXDynalinkDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxDynalinkDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f + +GetDriverFunc=getSQLDriverORACLE +LibraryName=dbxora30.dll +VendorLib=oci.dll +DataBase=Database Name +User_Name=user +Password=password +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +Oracle TransIsolation=ReadCommited +RowsetSize=20 +OS Authentication=False +Multiple Transaction=False +Trim Char=False +Decimal Separator=. +MetaDataPackageLoader=TDBXOracleMetaDataCommandFactory,DbxReadOnlyMetaData100.bpl +MetaDataAssemblyLoader=Borland.Data.TDBXOracleMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b + +[Informix] +DriverUnit=DBXDynalink +DriverPackageLoader=TDBXDynalinkDriverLoader,DBXDynalinkDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxDynalinkDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f + +GetDriverFunc=getSQLDriverINFORMIX +LibraryName=dbxinf30.dll +VendorLib=isqlt09a.dll +HostName=ServerName +DataBase=Database Name +User_Name=user +Password=password +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +Informix TransIsolation=ReadCommited +Trim Char=False +MetaDataPackageLoader=TDBXInformixMetaDataCommandFactory,DbxReadOnlyMetaData100.bpl +MetaDataAssemblyLoader=Borland.Data.TDBXInformixMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b + +[MSSQL] +SchemaOverride=%.dbo +DriverUnit=DBXDynalink +DriverPackageLoader=TDBXDynalinkDriverLoader,DBXDynalinkDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxDynalinkDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f + +GetDriverFunc=getSQLDriverMSSQL +LibraryName=dbxmss30.dll +VendorLib=oledb +HostName=ServerName +DataBase=Database Name +User_Name=user +Password=password +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +MSSQL TransIsolation=ReadCommited +OS Authentication=False +Prepare SQL=False +MetaDataPackageLoader=TDBXMsSqlMetaDataCommandFactory,DbxReadOnlyMetaData100.bpl +MetaDataAssemblyLoader=Borland.Data.TDBXMsSqlMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b + +[ASA] +DriverUnit=DBXDynalink +DriverPackageLoader=TDBXDynalinkDriverLoader,DbxDynalinkDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxDynalinkDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f + +GetDriverFunc=getSQLDriverASA +LibraryName=dbxasa30.dll +VendorLib=dbodbc9.dll +HostName=ServerName +Database=DBNAME +User_Name=user +Password=password +ConnectionString= +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +ASA TransIsolation=ReadCommited +MetaDataPackageLoader=TDBXSybaseASAMetaDataCommandFactory,DbxReadOnlyMetaData100.bpl +MetaDataAssemblyLoader=Borland.Data.TDBXSybaseASAMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b + +[ASE] +DriverUnit=DBXDynalink +DriverPackageLoader=TDBXDynalinkDriverLoader,DBXDynalinkDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxDynalinkDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f + +GetDriverFunc=getSQLDriverASE +LibraryName=dbxase30.dll +VendorLib=libct.dll;libcs.dll +HostName=ServerName +DataBase=Database Name +User_Name=user +Password=password +BlobSize=-1 +TDS Packet Size=512 +Client HostName= +Client AppName= +ErrorResourceFile= +LocaleCode=0000 +ASE TransIsolation=ReadCommited +MetaDataPackageLoader=TDBXSybaseASEMetaDataCommandFactory,DbxReadOnlyMetaData100.bpl +MetaDataAssemblyLoader=Borland.Data.TDBXSybaseASEMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b + +[AutoCommit] +False=0 +True=1 + +[BlockingMode] +False=0 +True=1 + +[WaitOnLocks] +False=1 +True=0 + +[CommitRetain] +False=0 +True=1 + +[OS Authentication] +False=0 +True=1 + +[Multiple Transaction] +False=0 +True=1 + +[Trim Char] +False=0 +True=1 + +[DB2 TransIsolation] +DirtyRead=0 +ReadCommited=1 +RepeatableRead=2 + +[Interbase TransIsolation] +ReadCommited=1 +RepeatableRead=2 + +[Oracle TransIsolation] +DirtyRead=0 +ReadCommited=1 +RepeatableRead=2 + +[Informix TransIsolation] +DirtyRead=0 +ReadCommited=1 +RepeatableRead=2 + +[MSSQL TransIsolation] +DirtyRead=0 +ReadCommited=1 +RepeatableRead=2 + +[ASA TransIsolation] +DirtyRead=0 +ReadCommited=1 +RepeatableRead=2 + +[ASE TransIsolation] +DirtyRead=0 +ReadCommited=1 +RepeatableRead=2 + +[SQLDialect] +1=0 +2=1 +3=2 + +[Bdp Providers] +Oracle=Oracle +Sybase=Sybase +Interbase=Interbase +DB2=DB2 +MySql=MySql +[BlackfishSQL] +DriverUnit=DBXClient +DriverPackageLoader=TDBXClientDriverLoader,DBXClientDriver100.bpl +DriverAssemblyLoader=Borland.Data.TDBXClientDriverLoader,Borland.Data.DbxClientDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +MetaDataPackageLoader=TDBXDataStoreMetaDataCommandFactory,DbxReadOnlyMetaData100.bpl +MetaDataAssemblyLoader=Borland.Data.TDBXDataStoreMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +Password=masterkey +User_Name=sysdba +Port=2508 +Create=False +ReadOnlyDb=False diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/dbxinf30.dll b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxinf30.dll new file mode 100644 index 0000000..75f6178 Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxinf30.dll differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/dbxint30.dll b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxint30.dll new file mode 100644 index 0000000..6be9532 Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxint30.dll differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/dbxmss30.dll b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxmss30.dll new file mode 100644 index 0000000..770053b Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxmss30.dll differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/dbxmys30.dll b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxmys30.dll new file mode 100644 index 0000000..9795083 Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxmys30.dll differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/dbxmysA30.dll b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxmysA30.dll new file mode 100644 index 0000000..e7a34cf Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxmysA30.dll differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/dbxora30.dll b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxora30.dll new file mode 100644 index 0000000..f39c32d Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxora30.dll differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/dbxoraw30.dll b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxoraw30.dll new file mode 100644 index 0000000..72fdf4d Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/dbxoraw30.dll differ diff --git a/official/5.0.30.691/Data Abstract (Common)/Bin/sqlite3.dll b/official/5.0.30.691/Data Abstract (Common)/Bin/sqlite3.dll new file mode 100644 index 0000000..7111873 Binary files /dev/null and b/official/5.0.30.691/Data Abstract (Common)/Bin/sqlite3.dll differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/BACKUP/Launch.exe b/official/5.0.30.691/Data Abstract for Delphi/BACKUP/Launch.exe new file mode 100644 index 0000000..4b346d2 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/BACKUP/Launch.exe differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/BACKUP/PascalScript_RO_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/BACKUP/PascalScript_RO_D7.dpk new file mode 100644 index 0000000..8ece2b8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/BACKUP/PascalScript_RO_D7.dpk @@ -0,0 +1,43 @@ +package PascalScript_RO_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Pascal Script - RemObjects SDK 4.0 Integration'} +{$IMPLICITBUILD OFF} + +requires + rtl, + indy, + PascalScript_Core_D7, + RemObjects_Core_D7, + RemObjects_Indy_D7, + dbrtl, + vcl, + vclx; + +contains + PascalScript_RO_Reg in 'PascalScript_RO_Reg.pas', + uROPSServerLink in 'uROPSServerLink.pas', + uROPSImports in 'uROPSImports.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/BACKUP/RegisterDelphiHelp.exe b/official/5.0.30.691/Data Abstract for Delphi/BACKUP/RegisterDelphiHelp.exe new file mode 100644 index 0000000..9536667 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/BACKUP/RegisterDelphiHelp.exe differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_ADODriver_D10.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_ADODriver_D10.bpl new file mode 100644 index 0000000..a18d4a3 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_ADODriver_D10.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_ADODriver_D10.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_ADODriver_D10.dcp new file mode 100644 index 0000000..ca02594 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_ADODriver_D10.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_BDEDriver_D10.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_BDEDriver_D10.bpl new file mode 100644 index 0000000..6a571d0 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_BDEDriver_D10.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_BDEDriver_D10.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_BDEDriver_D10.dcp new file mode 100644 index 0000000..af3b8bb Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_BDEDriver_D10.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_Core_D10.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_Core_D10.bpl new file mode 100644 index 0000000..6803f8c Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_Core_D10.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_Core_D10.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_Core_D10.dcp new file mode 100644 index 0000000..4bac9f7 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_Core_D10.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_DBXDriver_D10.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_DBXDriver_D10.bpl new file mode 100644 index 0000000..4e59425 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_DBXDriver_D10.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_DBXDriver_D10.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_DBXDriver_D10.dcp new file mode 100644 index 0000000..e753f45 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_DBXDriver_D10.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_IBXDriver_D10.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_IBXDriver_D10.bpl new file mode 100644 index 0000000..e9ff500 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_IBXDriver_D10.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_IBXDriver_D10.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_IBXDriver_D10.dcp new file mode 100644 index 0000000..890da19 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_IBXDriver_D10.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_IDE_D10.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_IDE_D10.bpl new file mode 100644 index 0000000..f59087f Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_IDE_D10.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_IDE_D10.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_IDE_D10.dcp new file mode 100644 index 0000000..f2c5ad1 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_IDE_D10.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_SQLiteDriver_D10.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_SQLiteDriver_D10.bpl new file mode 100644 index 0000000..747e03f Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_SQLiteDriver_D10.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_SQLiteDriver_D10.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_SQLiteDriver_D10.dcp new file mode 100644 index 0000000..c650932 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_SQLiteDriver_D10.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_Scripting_D10.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_Scripting_D10.bpl new file mode 100644 index 0000000..1553017 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_Scripting_D10.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_Scripting_D10.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_Scripting_D10.dcp new file mode 100644 index 0000000..2b45139 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D10/DataAbstract_Scripting_D10.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.bpl new file mode 100644 index 0000000..090a726 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.dcp new file mode 100644 index 0000000..1b0e14a Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.bpl new file mode 100644 index 0000000..509c0c0 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.dcp new file mode 100644 index 0000000..14eb1ad Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.bpl new file mode 100644 index 0000000..6437d9c Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.dcp new file mode 100644 index 0000000..124a366 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.bpl new file mode 100644 index 0000000..755a2b0 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.dcp new file mode 100644 index 0000000..3c7a6a6 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.bpl new file mode 100644 index 0000000..bf9a7cd Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.dcp new file mode 100644 index 0000000..08daa23 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.bpl new file mode 100644 index 0000000..285bcfd Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.dcp new file mode 100644 index 0000000..7b975a8 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLiteDriver_D11.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLiteDriver_D11.bpl new file mode 100644 index 0000000..7f44816 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLiteDriver_D11.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLiteDriver_D11.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLiteDriver_D11.dcp new file mode 100644 index 0000000..c22bb55 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLiteDriver_D11.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.bpl new file mode 100644 index 0000000..b0af576 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.dcp new file mode 100644 index 0000000..2ff4d99 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_ADODriver_D6.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_ADODriver_D6.bpl new file mode 100644 index 0000000..1e8ca58 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_ADODriver_D6.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_ADODriver_D6.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_ADODriver_D6.dcp new file mode 100644 index 0000000..d9bc35d Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_ADODriver_D6.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_BDEDriver_D6.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_BDEDriver_D6.bpl new file mode 100644 index 0000000..8ca8c9a Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_BDEDriver_D6.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_BDEDriver_D6.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_BDEDriver_D6.dcp new file mode 100644 index 0000000..ba36c18 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_BDEDriver_D6.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_Core_D6.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_Core_D6.bpl new file mode 100644 index 0000000..078904e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_Core_D6.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_Core_D6.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_Core_D6.dcp new file mode 100644 index 0000000..8c280e6 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_Core_D6.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_DBXDriver_D6.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_DBXDriver_D6.bpl new file mode 100644 index 0000000..b3116e8 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_DBXDriver_D6.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_DBXDriver_D6.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_DBXDriver_D6.dcp new file mode 100644 index 0000000..c20f4ce Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_DBXDriver_D6.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_IBXDriver_D6.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_IBXDriver_D6.bpl new file mode 100644 index 0000000..415b138 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_IBXDriver_D6.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_IBXDriver_D6.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_IBXDriver_D6.dcp new file mode 100644 index 0000000..6a1d438 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_IBXDriver_D6.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_IDE_D6.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_IDE_D6.bpl new file mode 100644 index 0000000..d1f0a29 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_IDE_D6.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_IDE_D6.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_IDE_D6.dcp new file mode 100644 index 0000000..d372c65 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_IDE_D6.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_SQLiteDriver_D6.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_SQLiteDriver_D6.bpl new file mode 100644 index 0000000..b864f31 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_SQLiteDriver_D6.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_SQLiteDriver_D6.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_SQLiteDriver_D6.dcp new file mode 100644 index 0000000..24d8db7 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_SQLiteDriver_D6.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_Scripting_D6.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_Scripting_D6.bpl new file mode 100644 index 0000000..25a05d1 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_Scripting_D6.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_Scripting_D6.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_Scripting_D6.dcp new file mode 100644 index 0000000..0196767 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D6/DataAbstract_Scripting_D6.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_ADODriver_D7.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_ADODriver_D7.bpl new file mode 100644 index 0000000..c7738f7 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_ADODriver_D7.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_ADODriver_D7.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_ADODriver_D7.dcp new file mode 100644 index 0000000..ff73bf9 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_ADODriver_D7.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_BDEDriver_D7.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_BDEDriver_D7.bpl new file mode 100644 index 0000000..cdbe433 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_BDEDriver_D7.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_BDEDriver_D7.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_BDEDriver_D7.dcp new file mode 100644 index 0000000..09c2b25 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_BDEDriver_D7.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_Core_D7.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_Core_D7.bpl new file mode 100644 index 0000000..1babf29 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_Core_D7.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_Core_D7.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_Core_D7.dcp new file mode 100644 index 0000000..c1998ca Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_Core_D7.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_DBXDriver_D7.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_DBXDriver_D7.bpl new file mode 100644 index 0000000..1cbd230 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_DBXDriver_D7.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_DBXDriver_D7.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_DBXDriver_D7.dcp new file mode 100644 index 0000000..adeda6e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_DBXDriver_D7.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_IBXDriver_D7.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_IBXDriver_D7.bpl new file mode 100644 index 0000000..c3346f7 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_IBXDriver_D7.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_IBXDriver_D7.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_IBXDriver_D7.dcp new file mode 100644 index 0000000..c753dfe Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_IBXDriver_D7.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_IDE_D7.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_IDE_D7.bpl new file mode 100644 index 0000000..11d2f87 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_IDE_D7.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_IDE_D7.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_IDE_D7.dcp new file mode 100644 index 0000000..c6d31d0 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_IDE_D7.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_SQLiteDriver_D7.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_SQLiteDriver_D7.bpl new file mode 100644 index 0000000..33a9d91 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_SQLiteDriver_D7.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_SQLiteDriver_D7.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_SQLiteDriver_D7.dcp new file mode 100644 index 0000000..348a049 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_SQLiteDriver_D7.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_Scripting_D7.bpl b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_Scripting_D7.bpl new file mode 100644 index 0000000..851d7f3 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_Scripting_D7.bpl differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_Scripting_D7.dcp b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_Scripting_D7.dcp new file mode 100644 index 0000000..3cdade6 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Dcu/D7/DataAbstract_Scripting_D7.dcp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Help/RegisterDelphiHelp.exe b/official/5.0.30.691/Data Abstract for Delphi/Help/RegisterDelphiHelp.exe new file mode 100644 index 0000000..9536667 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Help/RegisterDelphiHelp.exe differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Help/RemObjects Data Abstract for Delphi.als b/official/5.0.30.691/Data Abstract for Delphi/Help/RemObjects Data Abstract for Delphi.als new file mode 100644 index 0000000..5d5a627 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Help/RemObjects Data Abstract for Delphi.als @@ -0,0 +1,542 @@ +edaschemamodeleronly +edaschemamodeleronly_object +idaadoconnection +idaadoconnection_object +idaadoconnection_providername +idaadoconnection_providertype +idaconnection +idaconnection_begintransaction +idaconnection_close +idaconnection_committransaction +idaconnection_connected +idaconnection_connectionstring +idaconnection_intransaction +idaconnection_name +idaconnection_newcommand +idaconnection_newdataset +idaconnection_object +idaconnection_open +idaconnection_password +idaconnection_rollbacktransaction +idaconnection_userid +idadataset +idadataset_active +idadataset_close +idadataset_eof +idadataset_fieldbyname +idadataset_fieldcount +idadataset_fields +idadataset_fieldvalues +idadataset_isempty +idadataset_next +idadataset_object +idadataset_open +idadelta +idadelta_add +idadelta_changes +idadelta_clear +idadelta_count +idadelta_isnewrecord +idadelta_keyfieldcount +idadelta_keyfieldnames +idadelta_loggedfieldcount +idadelta_loggedfieldnames +idadelta_loggedfieldtypes +idadelta_logicalname +idadelta_object +idadelta_removechange +idaibconnectionproperties +idaibconnectionproperties_charset +idaibconnectionproperties_object +idaibconnectionproperties_role +idaibconnectionproperties_sqldialect +idaibtransactionaccess +idaibtransactionaccess_commit +idaibtransactionaccess_commitretaining +idaibtransactionaccess_object +idaibtransactionaccess_rollback +idaibtransactionaccess_rollbackretaining +idaibtransactionaccess_transaction +idainterbaseconnection +idainterbaseconnection_object +idaoracleconnection +idaoracleconnection_object +idasqlcommand +idasqlcommand_execute +idasqlcommand_name +idasqlcommand_object +idasqlcommand_parambyname +idasqlcommand_params +idasqlcommand_prepared +idasqlcommand_refreshparams +idasqlcommand_sql +idasqlcommand_where +tbaseloginservice +tbaseloginservice_object +tbaseloginservice_onlogout +tdaadodatatable +tdaadodatatable_object +tdaadodriver +tdaadodriver_object +tdabasefield +tdabasefield_asboolean +tdabasefield_ascurrency +tdabasefield_asdatetime +tdabasefield_asfloat +tdabasefield_asinteger +tdabasefield_aslargeint +tdabasefield_asstring +tdabasefield_asvariant +tdabasefield_aswidestring +tdabasefield_blobtype +tdabasefield_clear +tdabasefield_datatype +tdabasefield_description +tdabasefield_dictionaryentry +tdabasefield_generatorname +tdabasefield_isnull +tdabasefield_name +tdabasefield_object +tdabasefield_size +tdabasefield_value +tdabindatastreamer +tdabindatastreamer_object +tdabusinessprocessor +tdabusinessprocessor_businessrulesid +tdabusinessprocessor_currentchange +tdabusinessprocessor_currentdelta +tdabusinessprocessor_deletecommandname +tdabusinessprocessor_insertcommandname +tdabusinessprocessor_object +tdabusinessprocessor_onafterprocesschange +tdabusinessprocessor_onafterprocessdelta +tdabusinessprocessor_onbeforeprocesschange +tdabusinessprocessor_onbeforeprocessdelta +tdabusinessprocessor_ongeneratesql +tdabusinessprocessor_onprocesschange +tdabusinessprocessor_onprocesserror +tdabusinessprocessor_onrefreshdeltachange +tdabusinessprocessor_processoroptions +tdabusinessprocessor_referenceddataset +tdabusinessprocessor_refreshdatasetname +tdabusinessprocessor_schema +tdabusinessprocessor_updatecommandname +tdabusinessprocessor_updatemode +tdabusinessprocessor_userupdatefields +tdacache +tdacache_object +tdacdsdatatable +tdacdsdatatable_nativeloadfromfile +tdacdsdatatable_nativeloadfromstream +tdacdsdatatable_nativesavetofile +tdacdsdatatable_nativesavetostream +tdacdsdatatable_object +tdacolumnmapping +tdacolumnmapping_datasetfield +tdacolumnmapping_object +tdacolumnmapping_sqlorigin +tdacolumnmapping_tablefield +tdaconnectionmanager +tdaconnectionmanager_clearpool +tdaconnectionmanager_connections +tdaconnectionmanager_drivermanager +tdaconnectionmanager_maxpoolsize +tdaconnectionmanager_newconnection +tdaconnectionmanager_object +tdaconnectionmanager_onconnectionacquired +tdaconnectionmanager_onconnectioncreated +tdaconnectionmanager_onconnectionfailure +tdaconnectionmanager_onconnectiontimedout +tdaconnectionmanager_poolbehaviour +tdaconnectionmanager_poolingenabled +tdaconnectionmanager_poolsize +tdaconnectionmanager_pooltimeoutseconds +tdaconnectionmanager_pooltransactionbehaviour +tdaconnectionmanager_waitintervalseconds +tdacustomfield +tdacustomfield_alignment +tdacustomfield_businessclassid +tdacustomfield_calculated +tdacustomfield_customattributes +tdacustomfield_defaultvalue +tdacustomfield_displayformat +tdacustomfield_displaylabel +tdacustomfield_displaywidth +tdacustomfield_editformat +tdacustomfield_editmask +tdacustomfield_fieldcollection +tdacustomfield_inprimarykey +tdacustomfield_keyfields +tdacustomfield_loadfromstream +tdacustomfield_logchanges +tdacustomfield_lookup +tdacustomfield_lookupcache +tdacustomfield_lookupkeyfields +tdacustomfield_lookupresultfield +tdacustomfield_lookupsource +tdacustomfield_object +tdacustomfield_oldvalue +tdacustomfield_onchange +tdacustomfield_onvalidate +tdacustomfield_readonly +tdacustomfield_regexpression +tdacustomfield_required +tdacustomfield_savetostream +tdacustomfield_serverautorefresh +tdacustomfield_visible +tdadatadictionary +tdadatadictionary_fields +tdadatadictionary_object +tdadatadictionaryfield +tdadatadictionaryfield_object +tdadataset +tdadataset_businessclassid +tdadataset_businessrulesclient +tdadataset_businessrulesserver +tdadataset_fieldbyname +tdadataset_fields +tdadataset_object +tdadatasetprovider +tdadatasetprovider_datatable +tdadatasetprovider_object +tdadatasetrelationship +tdadatasetrelationship_description +tdadatasetrelationship_detaildatasetname +tdadatasetrelationship_detailfields +tdadatasetrelationship_masterdatasetname +tdadatasetrelationship_masterfields +tdadatasetrelationship_name +tdadatasetrelationship_object +tdadatasource +tdadatasource_datatable +tdadatasource_object +tdadatastreamer +tdadatastreamer_object +tdadatatable +tdadatatable_active +tdadatatable_applyupdates +tdadatatable_businessrulesid +tdadatatable_cancelupdates +tdadatatable_close +tdadatatable_closing +tdadatatable_delta +tdadatatable_detailfields +tdadatatable_detailoptions +tdadatatable_editing +tdadatatable_eof +tdadatatable_fetching +tdadatatable_fieldbyname +tdadatatable_fieldcount +tdadatatable_fields +tdadatatable_fieldvalues +tdadatatable_hasdelta +tdadatatable_hasdeltarecursive +tdadatatable_isempty +tdadatatable_loadfromfile +tdadatatable_loadfromremotesource +tdadatatable_loadfromstream +tdadatatable_loadschema +tdadatatable_loadscript +tdadatatable_localconnection +tdadatatable_localdatastreamer +tdadatatable_localschema +tdadatatable_logchanges +tdadatatable_logicalname +tdadatatable_masterfields +tdadatatable_mastermappingmode +tdadatatable_masteroptions +tdadatatable_masterparamsmappings +tdadatatable_masterrequestmappings +tdadatatable_mastersource +tdadatatable_maxrecords +tdadatatable_mergedelta +tdadatatable_object +tdadatatable_onafterapplyupdates +tdadatatable_onafterfieldchange +tdadatatable_onaftermergedelta +tdadatatable_onbeforeapplyupdates +tdadatatable_onbeforefieldchange +tdadatatable_onbeforemergedelta +tdadatatable_open +tdadatatable_opening +tdadatatable_parambyname +tdadatatable_params +tdadatatable_readonly +tdadatatable_recordcount +tdadatatable_remotedataadapter +tdadatatable_remotefetchenabled +tdadatatable_remoteupdatesoptions +tdadatatable_savetofile +tdadatatable_savetostream +tdadatatable_scriptcode +tdadatatable_storeactive +tdadatatable_streamingoptions +tdadatatable_where +tdadbisamdriver +tdadbisamdriver_object +tdadbsessionmanager +tdadbsessionmanager_clearsessionscommand +tdadbsessionmanager_clearsessionsoncreate +tdadbsessionmanager_clearsessionsondestroy +tdadbsessionmanager_connection +tdadbsessionmanager_deletesessioncommand +tdadbsessionmanager_fieldnamecreated +tdadbsessionmanager_fieldnamedata +tdadbsessionmanager_fieldnamelastaccessed +tdadbsessionmanager_fieldnamesessionid +tdadbsessionmanager_getallsessionidsdataset +tdadbsessionmanager_getsessioncountdataset +tdadbsessionmanager_getsessiondataset +tdadbsessionmanager_insertsessioncommand +tdadbsessionmanager_object +tdadbsessionmanager_onconvertguid +tdadbsessionmanager_schema +tdadbsessionmanager_updatesessioncommand +tdadbxdriver +tdadbxdriver_object +tdadelta +tdadelta_add +tdadelta_changes +tdadelta_clear +tdadelta_count +tdadelta_isnewrecord +tdadelta_keyfieldcount +tdadelta_keyfieldnames +tdadelta_loggedfieldcount +tdadelta_loggedfieldnames +tdadelta_loggedfieldtypes +tdadelta_object +tdadelta_removechange +tdadeltachange +tdadeltachange_changetype +tdadeltachange_delta +tdadeltachange_message +tdadeltachange_newvaluebyname +tdadeltachange_newvalues +tdadeltachange_object +tdadeltachange_oldvaluebyname +tdadeltachange_oldvalues +tdadeltachange_recid +tdadeltachange_refreshedbyserver +tdadeltachange_status +tdadiagrams +tdadiagrams_object +tdadrivermanager +tdadrivermanager_autoload +tdadrivermanager_drivercount +tdadrivermanager_driverdirectory +tdadrivermanager_driverinfo +tdadrivermanager_drivers +tdadrivermanager_loaddriver +tdadrivermanager_loaddrivers +tdadrivermanager_object +tdadrivermanager_ondriverloaded +tdadrivermanager_ondriverunloaded +tdadrivermanager_unloadalldrivers +tdadrivermanager_unloaddriver +tdafibdriver +tdafibdriver_object +tdafield +tdafield_calculated +tdafield_dictionaryentry +tdafield_inprimarykey +tdafield_keyfields +tdafield_lookup +tdafield_lookupcache +tdafield_lookupkeyfields +tdafield_lookupresultfield +tdafield_lookupsource +tdafield_object +tdafield_onchange +tdafield_onvalidate +tdagetdatarequest +tdagetdatarequest_incomingdataparameter +tdagetdatarequest_object +tdagetdatarequest_outgoingincludeschemaparameter +tdagetdatarequest_outgoingmaxrecordsparameter +tdagetdatarequest_outgoingparamsparameter +tdagetdatarequest_outgoingtablenamesparameter +tdagetdatarequest_outgoingtablerequestinfosparameter +tdagetschemarequest +tdagetschemarequest_incomingschemaparameter +tdagetschemarequest_object +tdagetschemarequest_outgoingfilterparameter +tdagetscriptsrequest +tdagetscriptsrequest_incomingscriptparameter +tdagetscriptsrequest_object +tdagetscriptsrequest_outgoingtablenamesparameter +tdaibodriver +tdaibodriver_object +tdaibxdriver +tdaibxdriver_object +tdamydacdriver +tdamydacdriver_object +tdamysqldacdriver +tdamysqldacdriver_object +tdaodacdriver +tdaodacdriver_object +tdaparam +tdaparam_asstring +tdaparam_object +tdaparam_paramtype +tdaparam_value +tdapostgresdacdriver +tdapostgresdacdriver_object +tdapoweredbydataabstractbutton +tdapoweredbydataabstractbutton_object +tdapsscriptingprovider +tdapsscriptingprovider_object +tdapsscriptingprovider_scriptengine +tdaremotedataadapter +tdaremotedataadapter_afterapplyupdates +tdaremotedataadapter_aftergetdatacall +tdaremotedataadapter_aftergetschemacall +tdaremotedataadapter_aftergetscriptscall +tdaremotedataadapter_afterupdatedatacall +tdaremotedataadapter_applyupdates +tdaremotedataadapter_beforeapplyupdates +tdaremotedataadapter_beforegetdatacall +tdaremotedataadapter_beforegetschemacall +tdaremotedataadapter_beforegetscriptscall +tdaremotedataadapter_beforeupdatedatacall +tdaremotedataadapter_cacheschema +tdaremotedataadapter_datastreamer +tdaremotedataadapter_fill +tdaremotedataadapter_fillschema +tdaremotedataadapter_fillscripts +tdaremotedataadapter_flushschema +tdaremotedataadapter_getdatacall +tdaremotedataadapter_getschemacall +tdaremotedataadapter_getscriptscall +tdaremotedataadapter_object +tdaremotedataadapter_remoteservice +tdaremotedataadapter_schema +tdaremotedataadapter_setupdefaultrequest +tdaremotedataadapter_setupdefaultrequestv3 +tdaremotedataadapter_updatedatacall +tdaremotedataadapterrequest +tdaremotedataadapterrequest_methodname +tdaremotedataadapterrequest_object +tdaremotedataadapterrequest_params +tdaremoteservice +tdaremoteservice_object +tdaschema +tdaschema_clear +tdaschema_commands +tdaschema_connectionmanager +tdaschema_datadictionary +tdaschema_datasets +tdaschema_diagrams +tdaschema_object +tdaschema_relationships +tdaschema_updaterules +tdascriptingprovider +tdascriptingprovider_object +tdasdacdriver +tdasdacdriver_object +tdasqlcommand +tdasqlcommand_description +tdasqlcommand_name +tdasqlcommand_object +tdasqlcommand_parambyname +tdasqlcommand_params +tdasqlcommand_sqlcommandcollection +tdasqlcommand_statements +tdastatement +tdastatement_columnmappings +tdastatement_connection +tdastatement_name +tdastatement_needsparams +tdastatement_object +tdastatement_sql +tdastatement_statementcollection +tdastatement_statementtype +tdastatement_targettable +tdataabstractservice +tdataabstractservice_acquireconnection +tdataabstractservice_afteracquireconnection +tdataabstractservice_afterexecutecommand +tdataabstractservice_aftergetdatasetdata +tdataabstractservice_aftergetdatasetschema +tdataabstractservice_afterprocessdeltas +tdataabstractservice_afterreleaseconnection +tdataabstractservice_allowdataaccess +tdataabstractservice_allowexecutecommands +tdataabstractservice_allowexecutesql +tdataabstractservice_allowschemaaccess +tdataabstractservice_allowwheresql +tdataabstractservice_autocreatebusinessprocessors +tdataabstractservice_beforeacquireconnection +tdataabstractservice_beforeexecutecommand +tdataabstractservice_beforegetdatasetdata +tdataabstractservice_beforegetdatasetschema +tdataabstractservice_beforeprocessdeltas +tdataabstractservice_beforereleaseconnection +tdataabstractservice_connection +tdataabstractservice_connectionname +tdataabstractservice_exporteddatatables +tdataabstractservice_object +tdataabstractservice_onacquireconnectionfailure +tdataabstractservice_onbusinessprocessorautocreated +tdataabstractservice_ongetschemaasxmlevent +tdataabstractservice_onprocessdeltaserror +tdataabstractservice_onupdatedatabegintransaction +tdataabstractservice_onupdatedatacommittransaction +tdataabstractservice_onupdatedatarollbacktransaction +tdataabstractservice_processdeltaswithoutupdaterules +tdataabstractservice_releaseconnection +tdataabstractservice_servicedatastreamer +tdataabstractservice_serviceschema +tdataabstractservice_validatecommandexecution +tdataabstractservice_validatedatasetaccess +tdataabstractservice_validatedirectsqlaccess +tdaupdatedatarequest +tdaupdatedatarequest_incomingdeltaparameter +tdaupdatedatarequest_object +tdaupdatedatarequest_outgoingdeltaparameter +tdaupdaterule +tdaupdaterule_datasetname +tdaupdaterule_dodelete +tdaupdaterule_doinsert +tdaupdaterule_doupdate +tdaupdaterule_failurebehavior +tdaupdaterule_name +tdaupdaterule_object +tdawhere +tdawhere_addcondition +tdawhere_addconditions +tdawhere_addoperator +tdawhere_addtext +tdawhere_addvaluegroup +tdawhere_changed +tdawhere_clause +tdawhere_clear +tdawhere_clientfields +tdawhere_closebracket +tdawhere_defaultoperator +tdawhere_empty +tdawhere_object +tdawhere_onchange +tdawhere_openbracket +tdaxmldatastreamer +tdaxmldatastreamer_documentname +tdaxmldatastreamer_object +tdaxmldatastreamer_options +tdaxmldatastreamer_readxslt +tdaxmldatastreamer_rowoptions +tdaxmldatastreamer_schemaoptions +tdaxmldatastreamer_skipnull +tdaxmldatastreamer_writexslt +tmultidbloginservice +tmultidbloginservice_object +tmultidbloginservice_onlogin +tsimpleloginservice +tsimpleloginservice_object +tsimpleloginservice_onlogin +userinfo +userinfo_attributes +userinfo_object +userinfo_privileges +userinfo_sessionid +userinfo_userdata +userinfo_userid diff --git a/official/5.0.30.691/Data Abstract for Delphi/Help/RemObjects Data Abstract for Delphi.cnt b/official/5.0.30.691/Data Abstract for Delphi/Help/RemObjects Data Abstract for Delphi.cnt new file mode 100644 index 0000000..a8cd6f3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Help/RemObjects Data Abstract for Delphi.cnt @@ -0,0 +1,628 @@ +:Base RemObjects Data Abstract for Delphi.hlp>MAIN +:Title RemObjects Data Abstract for Delphi +1 Welcome to Data Abstract +2 Welcome to Data Abstract=id_1 +2 What's New in Data Abstract +3 What's New in Data Abstract=id_9 +3 Breaking Changes=id_11 +2 Overview of DA Components +3 Overview of DA Components=id_5 +1 Programming with Data Abstract +2 Programming with Data Abstract=id_3 +2 Concepts +3 Concepts=id_35 +3 Schemas=id_38 +3 Database Drivers +4 Database Drivers=id_33 +4 Driver Components=id_60 +3 Connection Pooling +4 Connection Pooling=id_41 +3 Transaction Handling +4 Transaction Handling=id_42 +3 Command and Data Table Parameters +4 Command and Data Table Parameters=id_43 +3 Where Clauses +4 Where Clauses=id_45 +3 Master/Detail Relationships +4 Master/Detail Relationships=id_46 +3 Updates +4 Updates=id_47 +4 Deltas and Delta Changes=id_79 +4 AutoIncs and Generators=id_72 +4 Update Rules=id_80 +3 Cross Database Support +4 Cross Database Support=id_49 +4 Column Mapping=id_53 +3 Business Rules Scripts +4 Business Rules Scripts=id_50 +3 Dynamic Method Binding +4 Dynamic Method Binding=id_51 +4 The New v4.0 Service Interface=id_109 +2 IDE Integration +3 IDE Integration=id_36 +3 New Project Templates=id_113 +3 Component Editors +4 Component Editors=id_114 +4 Remote Data Adapter Design-Time Support=id_116 +4 Data Table Design-Time Support +5 Data Table Design-Time Support=id_117 +5 Master/Detail Wizard=id_73 +2 Comparing .NET and Delphi Implementations of Data Abstract +3 Comparing .NET and Delphi Implementations of Data Abstract=id_4 +1 Tools +2 Schema Modeler +3 Schema Modeler=id_6 +3 Schema Modeler Overview=id_132 +3 Data Tables Pane=id_54 +3 Commands Pane=id_55 +3 Detail Pane +4 Detail Pane=id_136 +4 Data Table Details=id_137 +4 Command Details=id_138 +4 Connection Details=id_139 +4 Relationships View=id_70 +4 Data Dictionary Editor=id_140 +4 Update Rules View=id_89 +4 Diagramming and Modeling Support=id_71 +4 Schema Modeler Welcome Page=id_133 +3 Connections Pane +4 Connections Pane=id_134 +3 Data Explorer +4 Data Explorer=id_135 +3 SQL Editor +4 SQL Editor=id_141 +1 Data Abstract Reference +2 Data Abstract Reference=id_7 +2 Classes +3 EDASchemaModelerOnly Class=id_155 +3 TBaseLoginService Class +4 TBaseLoginService Class=id_156 +4 TBaseLoginService.OnLogout Property=id_234 +3 TDAADODataTable Class +4 TDAADODataTable Class=id_23 +3 TDAADODriver Class +4 TDAADODriver Class=id_129 +3 TDABaseField Class +4 TDABaseField Class=id_159 +4 TDABaseField.AsBoolean Property=id_319 +4 TDABaseField.AsCurrency Property=id_320 +4 TDABaseField.AsDateTime Property=id_321 +4 TDABaseField.AsFloat Property=id_322 +4 TDABaseField.AsInteger Property=id_323 +4 TDABaseField.AsLargeInt Property=id_324 +4 TDABaseField.AsString Property=id_325 +4 TDABaseField.AsVariant Property=id_326 +4 TDABaseField.AsWideString Property=id_327 +4 TDABaseField.BlobType Property=id_328 +4 TDABaseField.DataType Property=id_316 +4 TDABaseField.Description Property=id_330 +4 TDABaseField.DictionaryEntry Property=id_331 +4 TDABaseField.GeneratorName Property=id_332 +4 TDABaseField.IsNull Property=id_333 +4 TDABaseField.Name Property=id_315 +4 TDABaseField.Size Property=id_329 +4 TDABaseField.Value Property=id_317 +4 TDABaseField.Clear Method=id_335 +3 TDABinDataStreamer Class +4 TDABinDataStreamer Class=id_13 +3 TDABusinessProcessor Class +4 TDABusinessProcessor Class=id_27 +4 TDABusinessProcessor.BusinessRulesID Property=id_380 +4 TDABusinessProcessor.CurrentChange Property=id_381 +4 TDABusinessProcessor.CurrentDelta Property=id_382 +4 TDABusinessProcessor.DeleteCommandName Property=id_383 +4 TDABusinessProcessor.InsertCommandName Property=id_384 +4 TDABusinessProcessor.OnAfterProcessChange Event=id_83 +4 TDABusinessProcessor.OnAfterProcessDelta Event=id_390 +4 TDABusinessProcessor.OnBeforeProcessChange Event=id_82 +4 TDABusinessProcessor.OnBeforeProcessDelta Event=id_81 +4 TDABusinessProcessor.OnGenerateSQL Event=id_391 +4 TDABusinessProcessor.OnProcessChange Event=id_392 +4 TDABusinessProcessor.OnProcessError Event=id_393 +4 TDABusinessProcessor.OnRefreshDeltaChange Event=id_394 +4 TDABusinessProcessor.ProcessorOptions Property=id_218 +4 TDABusinessProcessor.ReferencedDataset Property=id_378 +4 TDABusinessProcessor.RefreshDatasetName Property=id_385 +4 TDABusinessProcessor.Schema Property=id_376 +4 TDABusinessProcessor.UpdateCommandName Property=id_386 +4 TDABusinessProcessor.UpdateMode Property=id_387 +4 TDABusinessProcessor.UserUpdateFields Property=id_388 +3 TDACache Class +4 TDACache Class=id_30 +3 TDACDSDataTable Class +4 TDACDSDataTable Class=id_22 +4 TDACDSDataTable.NativeLoadFromFile Method=id_423 +4 TDACDSDataTable.NativeLoadFromStream Method=id_424 +4 TDACDSDataTable.NativeSaveToFile Method=id_425 +4 TDACDSDataTable.NativeSaveToStream Method=id_426 +3 TDAColumnMapping Class +4 TDAColumnMapping Class=id_161 +4 TDAColumnMapping.DatasetField Property=id_93 +4 TDAColumnMapping.SQLOrigin Property=id_95 +4 TDAColumnMapping.TableField Property=id_94 +3 TDAConnectionManager Class +4 TDAConnectionManager Class=id_19 +4 TDAConnectionManager.Connections Property=id_162 +4 TDAConnectionManager.DriverManager Property=id_174 +4 TDAConnectionManager.MaxPoolSize Property=id_450 +4 TDAConnectionManager.OnConnectionAcquired Event=id_458 +4 TDAConnectionManager.OnConnectionCreated Event=id_459 +4 TDAConnectionManager.OnConnectionFailure Event=id_460 +4 TDAConnectionManager.OnConnectionTimedOut Event=id_461 +4 TDAConnectionManager.PoolBehaviour Property=id_451 +4 TDAConnectionManager.PoolingEnabled Property=id_452 +4 TDAConnectionManager.PoolSize Property=id_454 +4 TDAConnectionManager.PoolTimeoutSeconds Property=id_455 +4 TDAConnectionManager.PoolTransactionBehaviour Property=id_63 +4 TDAConnectionManager.WaitIntervalSeconds Property=id_456 +4 TDAConnectionManager.ClearPool Method=id_463 +4 TDAConnectionManager.NewConnection Method=id_453 +3 TDACustomField Class +4 TDACustomField Class=id_163 +4 TDACustomField.Alignment Property=id_355 +4 TDACustomField.BusinessClassID Property=id_350 +4 TDACustomField.Calculated Property=id_487 +4 TDACustomField.CustomAttributes Property=id_488 +4 TDACustomField.DefaultValue Property=id_356 +4 TDACustomField.DisplayFormat Property=id_353 +4 TDACustomField.DisplayLabel Property=id_352 +4 TDACustomField.DisplayWidth Property=id_351 +4 TDACustomField.EditFormat Property=id_359 +4 TDACustomField.EditMask Property=id_358 +4 TDACustomField.FieldCollection Property=id_489 +4 TDACustomField.InPrimaryKey Property=id_490 +4 TDACustomField.KeyFields Property=id_491 +4 TDACustomField.LogChanges Property=id_493 +4 TDACustomField.Lookup Property=id_494 +4 TDACustomField.LookupCache Property=id_496 +4 TDACustomField.LookupKeyFields Property=id_497 +4 TDACustomField.LookupResultField Property=id_495 +4 TDACustomField.LookupSource Property=id_492 +4 TDACustomField.OldValue Property=id_498 +4 TDACustomField.OnChange Event=id_504 +4 TDACustomField.OnValidate Event=id_505 +4 TDACustomField.ReadOnly Property=id_357 +4 TDACustomField.RegExpression Property=id_360 +4 TDACustomField.Required Property=id_361 +4 TDACustomField.ServerAutoRefresh Property=id_499 +4 TDACustomField.Visible Property=id_354 +4 LoadFromStream Method +5 TDACustomField.LoadFromStream Method (IROStream)=id_501 +5 TDACustomField.LoadFromStream Method (TStream)=id_528 +4 SaveToStream Method +5 TDACustomField.SaveToStream Method (IROStream)=id_502 +5 TDACustomField.SaveToStream Method (TStream)=id_529 +3 TDADataDictionary Class +4 TDADataDictionary Class=id_21 +4 TDADataDictionary.Fields Property=id_534 +3 TDADataDictionaryField Class +4 TDADataDictionaryField Class=id_164 +3 TDADataset Class +4 TDADataset Class=id_165 +4 TDADataset.BusinessRulesClient Property=id_559 +4 TDADataset.Fields Property=id_561 +4 TDADataset.FieldByName Method=id_564 +3 TDADatasetProvider Class +4 TDADatasetProvider Class=id_26 +4 TDADatasetProvider.DataTable Property=id_574 +3 TDADatasetRelationship Class +4 TDADatasetRelationship Class=id_168 +4 TDADatasetRelationship.Description Property=id_583 +3 TDADataSource Class +4 TDADataSource Class=id_24 +4 TDADataSource.DataTable Property=id_599 +3 TDADataStreamer Class +4 TDADataStreamer Class=id_77 +3 TDADataTable Class +4 TDADataTable Class=id_25 +4 TDADataTable.Active Property=id_261 +4 TDADataTable.BusinessRulesID Property=id_262 +4 TDADataTable.Closing Property=id_263 +4 TDADataTable.Delta Property=id_170 +4 TDADataTable.DetailFields Property=id_124 +4 TDADataTable.DetailOptions Property=id_210 +4 TDADataTable.Editing Property=id_265 +4 TDADataTable.EOF Property=id_266 +4 TDADataTable.Fetching Property=id_267 +4 TDADataTable.FieldCount Property=id_268 +4 TDADataTable.Fields Property=id_269 +4 TDADataTable.FieldValues Property=id_270 +4 TDADataTable.HasDelta Property=id_271 +4 TDADataTable.HasDeltaRecursive Property=id_272 +4 TDADataTable.IsEmpty Property=id_273 +4 TDADataTable.LocalConnection Property=id_274 +4 TDADataTable.LocalDataStreamer Property=id_275 +4 TDADataTable.LocalSchema Property=id_276 +4 TDADataTable.LogChanges Property=id_278 +4 TDADataTable.LogicalName Property=id_86 +4 TDADataTable.MasterFields Property=id_123 +4 TDADataTable.MasterMappingMode Property=id_128 +4 TDADataTable.MasterOptions Property=id_213 +4 TDADataTable.MasterParamsMappings Property=id_125 +4 TDADataTable.MasterRequestMappings Property=id_126 +4 TDADataTable.MasterSource Property=id_264 +4 TDADataTable.MaxRecords Property=id_279 +4 TDADataTable.OnAfterApplyUpdates Event=id_302 +4 TDADataTable.OnAfterFieldChange Event=id_303 +4 TDADataTable.OnAfterMergeDelta Event=id_304 +4 TDADataTable.OnBeforeApplyUpdates Event=id_305 +4 TDADataTable.OnBeforeFieldChange Event=id_306 +4 TDADataTable.OnBeforeMergeDelta Event=id_307 +4 TDADataTable.Opening Property=id_280 +4 TDADataTable.Params Property=id_281 +4 TDADataTable.ReadOnly Property=id_282 +4 TDADataTable.RecordCount Property=id_283 +4 TDADataTable.RemoteDataAdapter Property=id_284 +4 TDADataTable.RemoteFetchEnabled Property=id_277 +4 TDADataTable.RemoteUpdatesOptions Property=id_220 +4 TDADataTable.ScriptCode Property=id_285 +4 TDADataTable.StoreActive Property=id_286 +4 TDADataTable.StreamingOptions Property=id_223 +4 TDADataTable.Where Property=id_287 +4 TDADataTable.ApplyUpdates Method=id_104 +4 TDADataTable.CancelUpdates Method=id_293 +4 TDADataTable.Close Method=id_294 +4 TDADataTable.FieldByName Method=id_295 +4 TDADataTable.LoadFromFile Method=id_121 +4 TDADataTable.LoadFromRemoteSource Method=id_296 +4 TDADataTable.LoadFromStream Method=id_297 +4 TDADataTable.LoadSchema Method=id_107 +4 TDADataTable.LoadScript Method=id_98 +4 TDADataTable.MergeDelta Method=id_298 +4 TDADataTable.Open Method=id_102 +4 TDADataTable.ParamByName Method=id_299 +4 TDADataTable.SaveToFile Method=id_122 +4 TDADataTable.SaveToStream Method=id_300 +3 TDADBISAMDriver Class +4 TDADBISAMDriver Class=id_171 +3 TDADBSessionManager Class +4 TDADBSessionManager Class=id_28 +4 TDADBSessionManager.ClearSessionsCommand Property=id_683 +4 TDADBSessionManager.ClearSessionsOnCreate Property=id_684 +4 TDADBSessionManager.ClearSessionsOnDestroy Property=id_685 +4 TDADBSessionManager.Connection Property=id_673 +4 TDADBSessionManager.DeleteSessionCommand Property=id_677 +4 TDADBSessionManager.FieldNameCreated Property=id_680 +4 TDADBSessionManager.FieldNameData Property=id_679 +4 TDADBSessionManager.FieldNameLastAccessed Property=id_681 +4 TDADBSessionManager.FieldNameSessionID Property=id_678 +4 TDADBSessionManager.GetAllSessionIDsDataset Property=id_686 +4 TDADBSessionManager.GetSessionCountDataSet Property=id_687 +4 TDADBSessionManager.GetSessionDataSet Property=id_674 +4 TDADBSessionManager.InsertSessionCommand Property=id_675 +4 TDADBSessionManager.OnConvertGUID Event=id_689 +4 TDADBSessionManager.Schema Property=id_672 +4 TDADBSessionManager.UpdateSessionCommand Property=id_676 +3 TDADBXDriver Class +4 TDADBXDriver Class=id_172 +3 TDADelta Class +4 TDADelta Class=id_173 +4 TDADelta.Changes Property=id_710 +4 TDADelta.Count Property=id_711 +4 TDADelta.KeyFieldCount Property=id_721 +4 TDADelta.KeyFieldNames Property=id_722 +4 TDADelta.LoggedFieldCount Property=id_723 +4 TDADelta.LoggedFieldNames Property=id_724 +4 TDADelta.LoggedFieldTypes Property=id_725 +4 Add Method +5 TDADelta.Add Method (TDADeltaChange)=id_731 +5 TDADelta.Add Method (integer, TDAChangeType, TDAChangeStatus, string)=id_743 +4 TDADelta.Clear Method +5 TDADelta.Clear Method=id_732 +4 TDADelta.IsNewRecord Method +5 TDADelta.IsNewRecord Method=id_733 +4 TDADelta.RemoveChange Method +5 TDADelta.RemoveChange Method=id_734 +3 TDADeltaChange Class +4 TDADeltaChange Class=id_84 +4 TDADeltaChange.ChangeType Property=id_746 +4 TDADeltaChange.Delta Property=id_757 +4 TDADeltaChange.Message Property=id_754 +4 TDADeltaChange.NewValueByName Property=id_758 +4 TDADeltaChange.NewValues Property=id_753 +4 TDADeltaChange.OldValueByName Property=id_759 +4 TDADeltaChange.OldValues Property=id_752 +4 TDADeltaChange.RecID Property=id_760 +4 TDADeltaChange.RefreshedByServer Property=id_527 +4 TDADeltaChange.Status Property=id_755 +3 TDADiagrams Class +4 TDADiagrams Class=id_29 +3 TDADriverManager Class +4 TDADriverManager Class=id_18 +4 TDADriverManager.AutoLoad Property=id_780 +4 TDADriverManager.DriverCount Property=id_782 +4 TDADriverManager.DriverDirectory Property=id_781 +4 TDADriverManager.DriverInfo Property=id_783 +4 TDADriverManager.Drivers Property=id_784 +4 TDADriverManager.OnDriverLoaded Event=id_786 +4 TDADriverManager.OnDriverUnloaded Event=id_787 +4 TDADriverManager.LoadDriver Method=id_789 +4 TDADriverManager.LoadDrivers Method=id_790 +4 TDADriverManager.UnloadAllDrivers Method=id_791 +4 TDADriverManager.UnloadDriver Method=id_792 +3 TDAFIBDriver Class +4 TDAFIBDriver Class=id_175 +3 TDAField Class +4 TDAField Class=id_160 +4 TDAField.Calculated Property=id_813 +4 TDAField.DictionaryEntry Property=id_814 +4 TDAField.InPrimaryKey Property=id_815 +4 TDAField.KeyFields Property=id_816 +4 TDAField.Lookup Property=id_817 +4 TDAField.LookupCache Property=id_818 +4 TDAField.LookupKeyFields Property=id_819 +4 TDAField.LookupResultField Property=id_820 +4 TDAField.LookupSource Property=id_821 +4 TDAField.OnChange Event=id_824 +4 TDAField.OnValidate Event=id_825 +3 TDAGetDataRequest Class +4 TDAGetDataRequest Class=id_176 +4 TDAGetDataRequest.IncomingDataParameter Property=id_842 +4 TDAGetDataRequest.OutgoingIncludeSchemaParameter Property=id_845 +4 TDAGetDataRequest.OutgoingMaxRecordsParameter Property=id_846 +4 TDAGetDataRequest.OutgoingParamsParameter Property=id_847 +4 TDAGetDataRequest.OutgoingTableNamesParameter Property=id_843 +4 TDAGetDataRequest.OutgoingTableRequestInfosParameter Property=id_848 +3 TDAGetSchemaRequest Class +4 TDAGetSchemaRequest Class=id_177 +4 TDAGetSchemaRequest.IncomingSchemaParameter Property=id_860 +4 TDAGetSchemaRequest.OutgoingFilterParameter Property=id_862 +3 TDAGetScriptsRequest Class +4 TDAGetScriptsRequest Class=id_178 +4 TDAGetScriptsRequest.IncomingScriptParameter Property=id_871 +4 TDAGetScriptsRequest.OutgoingTableNamesParameter Property=id_872 +3 TDAIBODriver Class +4 TDAIBODriver Class=id_179 +3 TDAIBXDriver Class +4 TDAIBXDriver Class=id_130 +3 TDAMyDACDriver Class +4 TDAMyDACDriver Class=id_180 +3 TDAMySQLDacDriver Class +4 TDAMySQLDacDriver Class=id_181 +3 TDAODACDriver Class +4 TDAODACDriver Class=id_182 +3 TDAParam Class +4 TDAParam Class=id_44 +4 TDAParam.AsString Property=id_889 +4 TDAParam.ParamType Property=id_887 +4 TDAParam.Value Property=id_890 +3 TDAPostgresDACDriver Class +4 TDAPostgresDACDriver Class=id_183 +3 TDAPoweredByDataAbstractButton Class +4 TDAPoweredByDataAbstractButton Class=id_184 +3 TDAPSScriptingProvider Class +4 TDAPSScriptingProvider Class=id_32 +4 TDAPSScriptingProvider.ScriptEngine Property=id_902 +3 TDARemoteDataAdapter Class +4 TDARemoteDataAdapter Class=id_12 +4 TDARemoteDataAdapter.AfterApplyUpdates Event=id_915 +4 TDARemoteDataAdapter.AfterGetDataCall Event=id_916 +4 TDARemoteDataAdapter.AfterGetSchemaCall Event=id_917 +4 TDARemoteDataAdapter.AfterGetScriptsCall Event=id_918 +4 TDARemoteDataAdapter.AfterUpdateDataCall Event=id_919 +4 TDARemoteDataAdapter.BeforeApplyUpdates Event=id_920 +4 TDARemoteDataAdapter.BeforeGetDataCall Event=id_921 +4 TDARemoteDataAdapter.BeforeGetSchemaCall Event=id_922 +4 TDARemoteDataAdapter.BeforeGetScriptsCall Event=id_923 +4 TDARemoteDataAdapter.BeforeUpdateDataCall Event=id_924 +4 TDARemoteDataAdapter.CacheSchema Property=id_926 +4 TDARemoteDataAdapter.DataStreamer Property=id_369 +4 TDARemoteDataAdapter.GetDataCall Property=id_101 +4 TDARemoteDataAdapter.GetSchemaCall Property=id_105 +4 TDARemoteDataAdapter.GetScriptsCall Property=id_108 +4 TDARemoteDataAdapter.RemoteService Property=id_911 +4 TDARemoteDataAdapter.Schema Property=id_927 +4 TDARemoteDataAdapter.UpdateDataCall Property=id_78 +4 TDARemoteDataAdapter.ApplyUpdates Method=id_76 +4 TDARemoteDataAdapter.Fill Method=id_103 +4 TDARemoteDataAdapter.FillSchema Method=id_106 +4 TDARemoteDataAdapter.FillScripts Method=id_97 +4 TDARemoteDataAdapter.FlushSchema Method=id_928 +4 TDARemoteDataAdapter.SetupDefaultRequest Method=id_912 +4 TDARemoteDataAdapter.SetupDefaultRequestV3 Method=id_913 +3 TDARemoteDataAdapterRequest Class +4 TDARemoteDataAdapterRequest Class=id_185 +4 TDARemoteDataAdapterRequest.MethodName Property=id_841 +4 TDARemoteDataAdapterRequest.Params Property=id_635 +3 TDARemoteService Class +4 TDARemoteService Class=id_31 +3 TDASchema Class +4 TDASchema Class=id_20 +4 TDASchema.Commands Property=id_186 +4 TDASchema.ConnectionManager Property=id_970 +4 TDASchema.DataDictionary Property=id_971 +4 TDASchema.Datasets Property=id_167 +4 TDASchema.Diagrams Property=id_772 +4 TDASchema.RelationShips Property=id_169 +4 TDASchema.UpdateRules Property=id_187 +4 TDASchema.Clear Method=id_974 +3 TDAScriptingProvider Class +4 TDAScriptingProvider Class=id_188 +3 TDASDACDriver Class +4 TDASDACDriver Class=id_190 +3 TDASQLCommand Class +4 TDASQLCommand Class=id_166 +4 TDASQLCommand.Description Property=id_554 +4 TDASQLCommand.Name Property=id_555 +4 TDASQLCommand.Params Property=id_556 +4 TDASQLCommand.SQLCommandCollection Property=id_557 +4 TDASQLCommand.Statements Property=id_193 +4 TDASQLCommand.ParamByName Method=id_563 +3 TDAStatement Class +4 TDAStatement Class=id_191 +3 TDataAbstractService Class +4 TDataAbstractService Class=id_56 +4 TDataAbstractService.AcquireConnection Property=id_1026 +4 TDataAbstractService.AfterAcquireConnection Event=id_1038 +4 TDataAbstractService.AfterExecuteCommand Event=id_1039 +4 TDataAbstractService.AfterGetDatasetData Event=id_1040 +4 TDataAbstractService.AfterGetDatasetSchema Event=id_1041 +4 TDataAbstractService.AfterProcessDeltas Event=id_1042 +4 TDataAbstractService.AfterReleaseConnection Event=id_1043 +4 TDataAbstractService.AllowDataAccess Property=id_1027 +4 TDataAbstractService.AllowExecuteCommands Property=id_1028 +4 TDataAbstractService.AllowExecuteSQL Property=id_1029 +4 TDataAbstractService.AllowSchemaAccess Property=id_1030 +4 TDataAbstractService.AllowWhereSQL Property=id_68 +4 TDataAbstractService.AutoCreateBusinessProcessors Property=id_1031 +4 TDataAbstractService.BeforeAcquireConnection Event=id_1044 +4 TDataAbstractService.BeforeExecuteCommand Event=id_1045 +4 TDataAbstractService.BeforeGetDatasetData Event=id_1046 +4 TDataAbstractService.BeforeGetDatasetSchema Event=id_1047 +4 TDataAbstractService.BeforeProcessDeltas Event=id_1048 +4 TDataAbstractService.BeforeReleaseConnection Event=id_1049 +4 TDataAbstractService.Connection Property=id_1032 +4 TDataAbstractService.ConnectionName Property=id_1033 +4 TDataAbstractService.ExportedDataTables Property=id_1035 +4 TDataAbstractService.OnAcquireConnectionFailure Event=id_1050 +4 TDataAbstractService.OnBusinessProcessorAutoCreated Event=id_1051 +4 TDataAbstractService.OnGetSchemaAsXMLEvent Event=id_863 +4 TDataAbstractService.OnProcessDeltasError Event=id_1052 +4 TDataAbstractService.OnUpdateDataBeginTransaction Event=id_1053 +4 TDataAbstractService.OnUpdateDataCommitTransaction Event=id_1054 +4 TDataAbstractService.OnUpdateDataRollBackTransaction Event=id_1055 +4 TDataAbstractService.ProcessDeltasWithoutUpdateRules Property=id_1036 +4 TDataAbstractService.ServiceDataStreamer Property=id_370 +4 TDataAbstractService.ServiceSchema Property=id_377 +4 TDataAbstractService.ValidateCommandExecution Event=id_1056 +4 TDataAbstractService.ValidateDatasetAccess Event=id_1057 +4 TDataAbstractService.ValidateDirectSQLAccess Event=id_1058 +4 TDataAbstractService.ReleaseConnection Method=id_1034 +3 TDAUpdateDataRequest Class +4 TDAUpdateDataRequest Class=id_194 +4 TDAUpdateDataRequest.IncomingDeltaParameter Property=id_1101 +4 TDAUpdateDataRequest.OutgoingDeltaParameter Property=id_1100 +3 TDAUpdateRule Class +4 TDAUpdateRule Class=id_195 +4 TDAUpdateRule.DatasetName Property=id_1111 +4 TDAUpdateRule.DoDelete Property=id_1112 +4 TDAUpdateRule.DoInsert Property=id_1113 +4 TDAUpdateRule.DoUpdate Property=id_1114 +4 TDAUpdateRule.FailureBehavior Property=id_1115 +4 TDAUpdateRule.Name Property=id_1116 +3 TDAWhere Class +4 TDAWhere Class=id_15 +4 TDAWhere.Changed Property=id_1128 +4 TDAWhere.Clause Property=id_1129 +4 TDAWhere.ClientFields Property=id_1130 +4 TDAWhere.DefaultOperator Property=id_1131 +4 TDAWhere.Empty Property=id_1133 +4 TDAWhere.OnChange Property=id_1134 +4 TDAWhere.AddCondition Method=id_1136 +4 TDAWhere.AddConditions Method=id_1137 +4 TDAWhere.AddOperator Method=id_1132 +4 TDAWhere.AddText Method=id_1138 +4 TDAWhere.AddValueGroup Method=id_1139 +4 TDAWhere.Clear Method=id_1140 +4 TDAWhere.CloseBracket Method=id_17 +4 TDAWhere.OpenBracket Method=id_16 +3 TDAXmlDataStreamer Class +4 TDAXmlDataStreamer Class=id_14 +4 TDAXmlDataStreamer.DocumentName Property=id_1160 +4 TDAXmlDataStreamer.Options Property=id_1161 +4 TDAXmlDataStreamer.ReadXSLT Property=id_1162 +4 TDAXmlDataStreamer.RowOptions Property=id_1163 +4 TDAXmlDataStreamer.SchemaOptions Property=id_1164 +4 TDAXmlDataStreamer.SkipNull Property=id_1165 +4 TDAXmlDataStreamer.WriteXSLT Property=id_1166 +3 TMultiDbLoginService Class +4 TMultiDbLoginService Class=id_158 +4 TMultiDbLoginService.OnLogin Event=id_239 +3 TSimpleLoginService Class +4 TSimpleLoginService Class=id_157 +4 TSimpleLoginService.OnLogin Event=id_238 +3 UserInfo Class +4 UserInfo Class=id_196 +4 UserInfo.Attributes Property=id_1196 +4 UserInfo.Privileges Property=id_1197 +4 UserInfo.SessionID Property=id_1199 +4 UserInfo.UserData Property=id_1198 +4 UserInfo.UserID Property=id_1200 +2 Interfaces +3 IDAADOConnection Interface +4 IDAADOConnection Interface=id_198 +4 IDAADOConnection.ProviderName Property=id_1212 +4 IDAADOConnection.ProviderType Property=id_1213 +3 IDAConnection Interface +4 IDAConnection Interface=id_39 +4 IDAConnection.Connected Property=id_1215 +4 IDAConnection.ConnectionString Property=id_1218 +4 IDAConnection.InTransaction Property=id_1219 +4 IDAConnection.Name Property=id_1220 +4 IDAConnection.Password Property=id_1221 +4 IDAConnection.UserID Property=id_1222 +4 IDAConnection.BeginTransaction Method=id_1224 +4 IDAConnection.Close Method=id_1217 +4 IDAConnection.CommitTransaction Method=id_1225 +4 IDAConnection.NewCommand Method=id_203 +4 IDAConnection.NewDataset Method=id_201 +4 IDAConnection.Open Method=id_1216 +4 IDAConnection.RollbackTransaction Method=id_1226 +3 IDADataset Interface +4 IDADataset Interface=id_40 +4 IDADataset.Active Property=id_252 +4 IDADataset.EOF Property=id_255 +4 IDADataset.FieldCount Property=id_257 +4 IDADataset.Fields Property=id_258 +4 IDADataset.FieldValues Property=id_259 +4 IDADataset.IsEmpty Property=id_260 +4 IDADataset.Close Method=id_254 +4 IDADataset.FieldByName Method=id_292 +4 IDADataset.Next Method=id_256 +4 IDADataset.Open Method=id_253 +3 IDADelta Interface +4 IDADelta Interface=id_48 +4 IDADelta.Changes Property=id_713 +4 IDADelta.Count Property=id_714 +4 IDADelta.KeyFieldCount Property=id_715 +4 IDADelta.KeyFieldNames Property=id_716 +4 IDADelta.LoggedFieldCount Property=id_717 +4 IDADelta.LoggedFieldNames Property=id_718 +4 IDADelta.LoggedFieldTypes Property=id_719 +4 IDADelta.LogicalName Property=id_720 +4 Add Method +5 Add Method=id_727 +5 IDADelta.Add Method (TDADeltaChange)=id_1288 +5 IDADelta.Add Method (integer, TDAChangeType, TDAChangeStatus, string)=id_1289 +4 IDADelta.Clear Method +5 IDADelta.Clear Method=id_728 +4 IDADelta.IsNewRecord Method +5 IDADelta.IsNewRecord Method=id_729 +4 IDADelta.RemoveChange Method +5 IDADelta.RemoveChange Method=id_730 +3 IDAIBConnectionProperties Interface +4 IDAIBConnectionProperties Interface=id_202 +4 IDAIBConnectionProperties.Charset Property=id_1297 +4 IDAIBConnectionProperties.Role Property=id_1298 +4 IDAIBConnectionProperties.SQLDialect Property=id_1299 +3 IDAIBTransactionAccess Interface +4 IDAIBTransactionAccess Interface=id_65 +4 IDAIBTransactionAccess.Transaction Property=id_1307 +4 IDAIBTransactionAccess.Commit Method=id_1310 +4 IDAIBTransactionAccess.CommitRetaining Method=id_1312 +4 IDAIBTransactionAccess.Rollback Method=id_1311 +4 IDAIBTransactionAccess.RollbackRetaining Method=id_1313 +3 IDAInterbaseConnection Interface +4 IDAInterbaseConnection Interface=id_199 +3 IDAOracleConnection Interface +4 IDAOracleConnection Interface=id_200 +3 IDASQLCommand Interface +4 IDASQLCommand Interface=id_59 +4 IDASQLCommand.Name Property=id_247 +4 IDASQLCommand.Params Property=id_248 +4 IDASQLCommand.Prepared Property=id_249 +4 IDASQLCommand.SQL Property=id_250 +4 IDASQLCommand.Where Property=id_251 +4 IDASQLCommand.Execute Method=id_289 +4 IDASQLCommand.ParamByName Method=id_290 +4 IDASQLCommand.RefreshParams Method=id_291 +1 Samples +2 Samples=id_8 +1 Additional Information +2 Additional Information=id_1371 +2 FAQs=id_1373 +2 Online Articles=id_1374 +2 Getting Technical Support=id_189 +2 Newsgroups=id_1375 +1 Copyright Notice +2 Copyright Notice=id_1380 diff --git a/official/5.0.30.691/Data Abstract for Delphi/Help/RemObjects Data Abstract for Delphi.hlp b/official/5.0.30.691/Data Abstract for Delphi/Help/RemObjects Data Abstract for Delphi.hlp new file mode 100644 index 0000000..fca84f1 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Help/RemObjects Data Abstract for Delphi.hlp differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/INSTALL.LOG b/official/5.0.30.691/Data Abstract for Delphi/INSTALL.LOG new file mode 100644 index 0000000..95d6385 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/INSTALL.LOG @@ -0,0 +1,3037 @@ +*** Installation Started 07/29/2008 12:02 *** +Title: RemObjects Data Abstract for Delphi +Source: C:\DOCUME~1\Usuario\CONFIG~1\Temp\GLBA.tmp | 07-29-2008 | 12:02:46 | 71680 +Made Dir: C:\Archivos de programa\RemObjects Software +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\UNWISE.EXE | 07-26-2002 | 18:02:06 | | 153088 | 5be5019b +RegDB Key: Software\Microsoft\Windows\CurrentVersion\Uninstall\Data Abstract 'Vinci' for Delphi +RegDB Val: Data Abstract 'Vinci' for Delphi +RegDB Name: DisplayName +RegDB Root: 2 +RegDB Key: Software\Microsoft\Windows\CurrentVersion\Uninstall\Data Abstract 'Vinci' for Delphi +RegDB Val: C:\ARCHIV~1\REMOBJ~1\DATAAB~1\UNWISE.EXE C:\ARCHIV~1\REMOBJ~1\DATAAB~1\INSTALL.LOG +RegDB Name: UninstallString +RegDB Root: 2 +RegDB Key: Software\Microsoft\Windows\CurrentVersion\Uninstall\Data Abstract 'Vinci' for Delphi +RegDB Val: _ +RegDB Name: RegCompany +RegDB Root: 2 +RegDB Key: Software\Microsoft\Windows\CurrentVersion\Uninstall\Data Abstract 'Vinci' for Delphi +RegDB Val: _ +RegDB Name: RegOwner +RegDB Root: 2 +Made Dir: C:\Archivos de programa\RemObjects Software\Everwood +Made Dir: C:\Archivos de programa\RemObjects Software\Everwood\Bin +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\EWSetRegistryPath.exe | 01-06-2006 | 13:16:34 | | 116224 | 96193577 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\RemObjects_Everwood_D6.bpl | 05-23-2008 | 22:04:30 | 2.0.1.109 | 260096 | e6e2570b +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\RemObjects_Everwood_D7.bpl | 05-23-2008 | 22:04:30 | 2.0.1.109 | 261120 | 25d696eb +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\RemObjects_Everwood_D6.dcp | 05-23-2008 | 22:04:30 | | 84272 | 58e7b3d9 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\RemObjects_Everwood_D7.dcp | 05-23-2008 | 22:04:30 | | 87580 | 23a1d43f +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\RemObjects_Everwood_D9.bpl | 05-23-2008 | 22:04:32 | 2.0.1.109 | 268288 | d2bfe54a +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\RemObjects_Everwood_D9.dcp | 05-23-2008 | 22:04:32 | | 91664 | cfeb76ae +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\RemObjects_Everwood_D10.bpl | 05-23-2008 | 22:04:34 | 2.0.1.109 | 264704 | 4a05b635 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\RemObjects_Everwood_D10.dcp | 05-23-2008 | 22:04:34 | | 91906 | 976a5fee +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\RemObjects_Everwood_D11.bpl | 05-23-2008 | 22:04:34 | 2.0.1.109 | 264704 | 179a9655 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\RemObjects_Everwood_D11.dcp | 05-23-2008 | 22:04:34 | | 91915 | 2886f005 +Made Dir: C:\Archivos de programa\RemObjects Software\Everwood\Source +Made Dir: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\RemObjects_Everwood_D6.dpk | 10-20-2006 | 22:54:12 | | 1321 | aac43c71 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\RemObjects_Everwood_D6.cfg | 10-08-2007 | 21:58:00 | | 376 | 584bcad7 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\RemObjects_Everwood_D6.dof | 10-08-2007 | 21:58:00 | | 5009 | dc2ee817 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\RemObjects_Everwood_D6.res | 05-23-2008 | 22:04:28 | | 392 | 6787d85b +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\RemObjects_Everwood_D7.dpk | 10-20-2006 | 22:54:12 | | 1321 | 7229b44a +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\RemObjects_Everwood_D7.cfg | 10-08-2007 | 21:58:00 | | 540 | 6cd75910 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\RemObjects_Everwood_D7.dof | 10-08-2007 | 21:58:00 | | 3326 | 770233c0 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\RemObjects_Everwood_D7.res | 05-23-2008 | 22:04:30 | | 392 | 6787d85b +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\RemObjects_Everwood_D9.bdsproj | 01-03-2006 | 18:39:24 | | 10398 | aeae826a +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\RemObjects_Everwood_D9.cfg | 10-08-2007 | 21:58:00 | | 512 | 7e4f5fc8 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\RemObjects_Everwood_D9.dof | 10-20-2006 | 22:54:12 | | 3535 | b9f87056 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\RemObjects_Everwood_D9.dpk | 10-20-2006 | 22:54:12 | | 1321 | bc0ed08e +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\RemObjects_Everwood_D9.res | 05-23-2008 | 22:04:30 | | 392 | 6787d85b +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\RemObjects_Everwood_D10.bdsproj | 01-03-2006 | 18:39:24 | | 10393 | 5377e35f +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\RemObjects_Everwood_D10.cfg | 10-08-2007 | 21:58:00 | | 518 | 4ac93bc +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\RemObjects_Everwood_D10.dpk | 10-20-2006 | 22:54:12 | | 1322 | c217326f +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\RemObjects_Everwood_D10.res | 05-23-2008 | 22:04:32 | | 392 | 6787d85b +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\RemObjects_Everwood_D11.dproj | 10-08-2007 | 21:58:00 | | 6790 | 67314d14 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\RemObjects_Everwood_D11.dpk | 09-13-2007 | 13:16:32 | | 1322 | 1afaba54 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\RemObjects_Everwood_D11.res | 05-23-2008 | 22:04:34 | | 392 | 6787d85b +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\uEWOTAMessages.pas | 08-19-2006 | 15:44:52 | | 1601 | 2805e15e +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\uEWOTANewModuleExpert.pas | 01-27-2007 | 22:39:30 | | 286 | 978aef87 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\uEWOTANewProjectExpert.pas | 01-27-2007 | 22:39:30 | | 291 | a44ff5d9 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\uEWOTARepositoryExpert.pas | 01-03-2008 | 19:53:06 | | 9176 | fed76b4c +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\uEWOTAWizards.pas | 01-27-2007 | 22:39:30 | | 9523 | f87eaa98 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\uEWSampleInfo.dfm | 05-05-2008 | 11:53:20 | | 36589 | 2398803a +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\uEWSampleInfo.pas | 10-17-2007 | 15:23:18 | | 3687 | 932f0bf8 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\uEWStringTools.pas | 08-19-2006 | 15:44:52 | | 998 | 2126883a +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\uEWTools.pas | 08-19-2006 | 15:44:52 | | 273 | 28c13b3d +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\uEWWizard.dfm | 01-27-2007 | 22:39:30 | | 19494 | 9e40a13d +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\uEWWizard.pas | 01-03-2008 | 19:53:06 | | 7398 | 27f975ac +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\EverwoodIDEResources.res | 05-23-2008 | 22:04:28 | | 15292 | 40e5d0a2 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\RemObjects_Everwood_Reg.pas | 01-03-2008 | 19:53:06 | | 274 | 10e6f39f +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\uEWAbout.dfm | 09-25-2005 | 20:55:24 | | 342395 | df9db1f9 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\uEWAbout.pas | 01-03-2008 | 19:53:06 | | 3012 | 56b9ce9f +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\uEWHelpers.pas | 01-03-2008 | 19:53:06 | | 2886 | 12b359f2 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\uEWMenuManager.pas | 01-27-2007 | 22:39:30 | | 9809 | 66eff00e +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\uEWOTAHelpers.pas | 10-03-2007 | 19:25:02 | | 10578 | 5dba221a +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\eDefines.inc | 04-28-2008 | 14:24:26 | | 16839 | 252645ba +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Source\Delphi\Everwood.inc | 01-03-2008 | 19:53:06 | | 71 | 7678d69e +RegDB Key: Software\RemObjects\Everwood for Delphi +RegDB Val: 1 +RegDB Name: Installed +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood for Delphi +RegDB Val: C:\Archivos de programa\RemObjects Software\Everwood +RegDB Name: InstallDir +RegDB Root: 1 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\RemObjects.Everwood.dll | 05-23-2008 | 21:47:50 | 2.0.1.109 | 360448 | c9dff059 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\RemObjects.Everwood.BDS2.dll | 05-23-2008 | 21:47:50 | 2.0.1.109 | 28672 | b7ad89d5 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\RemObjects.Everwood.BDS3.dll | 05-23-2008 | 21:47:50 | 2.0.1.109 | 28672 | 5b875759 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\RemObjects.Everwood.BDS4.dll | 05-23-2008 | 21:47:52 | 2.0.1.109 | 28672 | 138decdd +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\RemObjects.Everwood.BDS5.dll | 05-23-2008 | 21:48:04 | 2.0.1.109 | 28672 | 6f553738 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\RemObjects.Everwood.VisualStudio.dll | 05-23-2008 | 21:47:52 | 2.0.1.109 | 28672 | 29dd8393 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\RemObjects.Everwood.VisualStudio.2005.dll | 05-23-2008 | 21:48:06 | 2.0.1.109 | 20480 | b5546320 +Made Dir: C:\Archivos de programa\RemObjects Software\Everwood\Bin\1033 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\1033\RemObjects.Everwood.Resources.dll | 05-23-2008 | 21:48:08 | | 34816 | 6e4ada65 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\RemObjects.Everwood.ShDocWv.dll | 03-23-2005 | 20:16:42 | 1.1.0.0 | 45056 | f40d2fd3 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\SHDocVw.dll | 03-23-2005 | 20:23:18 | 1.1.0.0 | 126976 | ebcbceb7 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\Microsoft.VisualStudio.VSIP.Helper.dll | 03-17-2004 | 01:36:20 | 7.0.4077.0 | 77824 | 9a8a7b05 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\Microsoft.VisualStudio.OLE.Interop.dll | 03-17-2004 | 01:36:22 | 7.0.4077.0 | 118784 | fb88135d +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\Microsoft.VisualStudio.Shell.Interop.dll | 03-17-2004 | 01:36:20 | 7.0.4077.0 | 249856 | 7caed748 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\Microsoft.VisualStudio.Shell.Interop.8.0.dll | 04-09-2005 | 03:12:44 | 8.0.50215.44 | 163840 | 40276db7 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\Microsoft.VisualStudio.TextManager.Interop.dll | 03-17-2004 | 01:36:20 | 7.0.4077.0 | 114688 | 6491f7e +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\RemObjects.Everwood.VarReplacer.exe | 03-25-2005 | 21:03:22 | | 3584 | ddf48d20 +Made Dir: C:\Archivos de programa\RemObjects Software\Everwood\Bin\temp +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\temp\gacutil.exe | 09-23-2005 | 07:01:18 | 2.0.50727.42 | 97472 | d289f3d3 +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Bin\temp\gacutil.exe.config | 09-22-2005 | 23:22:28 | | 181 | e75546ba +RegDB Key: Software\RemObjects\Everwood for .NET +RegDB Val: 1 +RegDB Name: Installed +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood for .NET +RegDB Val: C:\Archivos de programa\RemObjects Software\Everwood +RegDB Name: InstallDir +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood for .NET +RegDB Val: +RegDB Name: Version +RegDB Root: 1 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common) +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\RemObjects SDK.lic | 05-23-2008 | 22:03:04 | | 945 | 9ea71247 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\ROServiceBuilder.exe | 05-23-2008 | 22:03:24 | 5.0.30.691 | 3168256 | 6e0dee6e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\ROServiceBuilder3.chm | 05-23-2008 | 22:03:56 | | 1188261 | 6d462597 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\ROServiceBuilder70.bpl | 05-23-2008 | 22:03:18 | 5.0.30.691 | 6818304 | b3d88803 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\vcl70.bpl | 08-09-2002 | 17:00:00 | 7.0.4.453 | 1381376 | ee3f2d0b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\rtl70.bpl | 08-09-2002 | 17:00:00 | 7.0.4.453 | 778240 | cc284be7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\RODL.exe | 05-23-2008 | 22:04:20 | 5.0.30.691 | 584704 | f7035c48 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\ROSBDefaultEditor.dll | 05-23-2008 | 22:03:34 | 5.0.30.691 | 195584 | 9db1236f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\ROSBDefaultValidator.dll | 05-23-2008 | 22:03:32 | 5.0.30.691 | 30208 | b4075309 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\ROSBStandardViews.dll | 05-23-2008 | 22:03:34 | 5.0.30.691 | 94208 | 8b94f44d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\ROSBStandardImporters.dll | 05-23-2008 | 22:03:36 | 5.0.30.691 | 172032 | d06f1f63 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\ROSBSOAP.dll | 05-23-2008 | 22:03:38 | 5.0.30.691 | 266240 | e3198777 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\ROSBPasImporter.dll | 05-23-2008 | 22:03:40 | 5.0.30.691 | 46080 | 38ab8ad2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\ROSBTLBImporter.dll | 05-23-2008 | 22:03:38 | 5.0.30.691 | 52736 | 8cabd8d9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\ROSBPHP.dll | 05-23-2008 | 22:03:30 | 5.0.30.691 | 51712 | e3c4e705 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\ROSBJSONRPC.dll | 05-23-2008 | 22:03:32 | 5.0.30.691 | 70656 | eea6362e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\ROSBDelphi.dll | 05-23-2008 | 22:03:26 | 5.0.30.691 | 159232 | 7bd497fc +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\ROSBBCB.dll | 05-23-2008 | 22:03:28 | 5.0.30.691 | 380928 | f95e5946 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\ROMasterServer.exe | 05-23-2008 | 22:04:18 | 5.0.30.691 | 2962944 | 23abd0ae +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\MasterServer_Data +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\MasterServer_Data\MessagesPerSession.nx1 | 03-28-2004 | 01:53:44 | | 32768 | 72745057 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\MasterServer_Data\nxTrans.cfg | 03-28-2004 | 01:53:44 | | 8 | 8b312d43 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\MasterServer_Data\Sessions.nx1 | 03-28-2004 | 01:53:44 | | 32768 | 8f654dbb +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\MasterServer_Data\Messages.nx1 | 03-28-2004 | 01:53:44 | | 40960 | e4a98f7c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\ROCOM.dll | 05-23-2008 | 22:04:12 | 5.0.30.691 | 1270272 | 4ec54cd9 +Self-Register: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\ROCOM.dll +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\ROServiceTester.exe | 05-23-2008 | 22:04:08 | 5.0.30.691 | 8788992 | d3712e2f +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\ro.png | 05-17-2007 | 13:03:16 | | 10767 | 829fa9a6 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\License.txt | 03-13-2008 | 17:47:10 | | 9459 | 9ae670d8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Launch.exe | 12-03-2003 | 20:26:00 | | 14848 | 81197b84 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\README.html | 02-22-2008 | 15:00:48 | | 12094 | 98e4b1bf +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Help +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Help\RemObjects SDK for Delphi.hlp | 05-23-2008 | 22:07:22 | | 3671966 | 5f575ba7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Help\RemObjects SDK for Delphi.cnt | 05-23-2008 | 22:05:48 | | 35546 | 8c8da6a0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Help\RemObjects SDK for Delphi.als | 05-23-2008 | 22:05:48 | | 20783 | 16e42b1f +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D6 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D6\RemObjects_Core_D6.bpl | 05-23-2008 | 22:04:54 | 5.0.30.691 | 1944576 | b07d62fc +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D6\RemObjects_IDE_D6.bpl | 05-23-2008 | 22:04:56 | 5.0.30.691 | 1472000 | 9a522793 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D6\RemObjects_WebBroker_D6.bpl | 05-23-2008 | 22:04:56 | 5.0.30.691 | 29696 | 3f038e45 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D6\RemObjects_Indy_D6.bpl | 05-23-2008 | 22:04:56 | 5.0.30.691 | 208896 | 4038b0d5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D6\RemObjects_RODX_D6.bpl | 05-23-2008 | 22:04:58 | 5.0.30.691 | 132096 | 1cc97378 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D6\RemObjects_BPDX_D6.bpl | 05-23-2008 | 22:04:58 | 5.0.30.691 | 41472 | b160eafc +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D6\RemObjects_DataSnap_D6.bpl | 05-23-2008 | 22:05:00 | 5.0.30.691 | 102912 | a0b321d2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D6\RemObjects_Synapse_D6.bpl | 05-23-2008 | 22:05:00 | 5.0.30.691 | 236544 | b566013c +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D7\RemObjects_Core_D7.bpl | 05-23-2008 | 22:05:02 | 5.0.30.691 | 1952768 | 2a47fe57 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D7\RemObjects_IDE_D7.bpl | 05-23-2008 | 22:05:02 | 5.0.30.691 | 1473536 | 3b442362 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D7\RemObjects_WebBroker_D7.bpl | 05-23-2008 | 22:05:04 | 5.0.30.691 | 29696 | 660de8ca +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D7\RemObjects_Indy_D7.bpl | 05-23-2008 | 22:05:04 | 5.0.30.691 | 215552 | feffee65 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D7\RemObjects_RODX_D7.bpl | 05-23-2008 | 22:05:04 | 5.0.30.691 | 132608 | 23611be4 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D7\RemObjects_BPDX_D7.bpl | 05-23-2008 | 22:05:06 | 5.0.30.691 | 41472 | 7a4f8390 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D7\RemObjects_DataSnap_D7.bpl | 05-23-2008 | 22:05:06 | 5.0.30.691 | 103424 | f200ef71 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D7\RemObjects_Synapse_D7.bpl | 05-23-2008 | 22:05:06 | 5.0.30.691 | 237056 | 7d619d98 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D10 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D10\RemObjects_Core_D10.bpl | 05-23-2008 | 22:05:08 | 5.0.30.691 | 1951744 | dabe1a4 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D10\RemObjects_IDE_D10.bpl | 05-23-2008 | 22:05:10 | 5.0.30.691 | 1476096 | 7744ce1b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D10\RemObjects_WebBroker_D10.bpl | 05-23-2008 | 22:05:10 | 5.0.30.691 | 29696 | 2c89af9f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D10\RemObjects_RODX_D10.bpl | 05-23-2008 | 22:05:12 | 5.0.30.691 | 132608 | 3747f639 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D10\RemObjects_BPDX_D10.bpl | 05-23-2008 | 22:05:14 | 5.0.30.691 | 41472 | fe6b79b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D10\RemObjects_DataSnap_D10.bpl | 05-23-2008 | 22:05:14 | 5.0.30.691 | 101376 | 6e56632c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D10\RemObjects_Synapse_D10.bpl | 05-23-2008 | 22:05:16 | 5.0.30.691 | 234496 | b615329 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D10\RemObjects_Indy_D10.bpl | 05-23-2008 | 22:05:12 | 5.0.30.691 | 221184 | 6ff1e5 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D11 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D11\RemObjects_Core_D11.bpl | 05-23-2008 | 22:05:18 | 5.0.30.691 | 1951744 | 3861b2a9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D11\RemObjects_IDE_D11.bpl | 05-23-2008 | 22:05:18 | 5.0.30.691 | 1476096 | df744f8f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D11\RemObjects_WebBroker_D11.bpl | 05-23-2008 | 22:05:20 | 5.0.30.691 | 29696 | c359bf70 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D11\RemObjects_RODX_D11.bpl | 05-23-2008 | 22:05:22 | 5.0.30.691 | 132608 | 80f26081 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D11\RemObjects_BPDX_D11.bpl | 05-23-2008 | 22:05:22 | 5.0.30.691 | 41984 | 8c01dfe7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D11\RemObjects_DataSnap_D11.bpl | 05-23-2008 | 22:05:24 | 5.0.30.691 | 101376 | cd940fa +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D11\RemObjects_Synapse_D11.bpl | 05-23-2008 | 22:05:24 | 5.0.30.691 | 234496 | a9816406 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D11\RemObjects_Indy_D11.bpl | 05-23-2008 | 22:05:20 | 5.0.30.691 | 221184 | 1bffbc0b +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\uRODataSnap.rodl | 01-29-2006 | 17:16:02 | | 3713 | 95566916 +RegDB Key: Software\RemObjects\RemObjects SDK +RegDB Val: +RegDB Root: 1 +RegDB Key: Software\RemObjects\RemObjects SDK\KnownRodls +RegDB Val: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\uRODataSnap.rodl +RegDB Name: DataSnap +RegDB Root: 1 +RegDB Key: Software\RemObjects\RemObjects SDK\Variables +RegDB Val: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi +RegDB Name: RemObjects SDK for Delphi +RegDB Root: 1 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D6\RemObjects_Core_D6.dcp | 05-23-2008 | 22:04:54 | | 2412438 | 95650c02 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D6\RemObjects_IDE_D6.dcp | 05-23-2008 | 22:04:56 | | 581059 | 9105c6d9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D6\RemObjects_WebBroker_D6.dcp | 05-23-2008 | 22:04:56 | | 19603 | 4ab3c44d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D6\RemObjects_Indy_D6.dcp | 05-23-2008 | 22:04:56 | | 262548 | 4f13cdfd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D6\RemObjects_RODX_D6.dcp | 05-23-2008 | 22:04:58 | | 217075 | d6d30dd2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D6\RemObjects_BPDX_D6.dcp | 05-23-2008 | 22:04:58 | | 28657 | 2c86a633 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D6\RemObjects_DataSnap_D6.dcp | 05-23-2008 | 22:05:00 | | 105579 | 37027bcf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D6\RemObjects_Synapse_D6.dcp | 05-23-2008 | 22:05:00 | | 351939 | 899dca19 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D7\RemObjects_Core_D7.dcp | 05-23-2008 | 22:05:02 | | 2424969 | 96936323 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D7\RemObjects_IDE_D7.dcp | 05-23-2008 | 22:05:02 | | 593584 | 7affb677 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D7\RemObjects_WebBroker_D7.dcp | 05-23-2008 | 22:05:04 | | 20291 | 65da5c0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D7\RemObjects_Indy_D7.dcp | 05-23-2008 | 22:05:04 | | 272365 | b391eb01 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D7\RemObjects_RODX_D7.dcp | 05-23-2008 | 22:05:04 | | 217928 | 7ec64100 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D7\RemObjects_BPDX_D7.dcp | 05-23-2008 | 22:05:06 | | 29726 | dcded5e0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D7\RemObjects_DataSnap_D7.dcp | 05-23-2008 | 22:05:06 | | 108946 | fb51179f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D7\RemObjects_Synapse_D7.dcp | 05-23-2008 | 22:05:06 | | 355512 | c4a88713 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D10\RemObjects_Core_D10.dcp | 05-23-2008 | 22:05:08 | | 2557142 | a5ad7deb +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D10\RemObjects_IDE_D10.dcp | 05-23-2008 | 22:05:10 | | 605931 | d3d54e4b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D10\RemObjects_WebBroker_D10.dcp | 05-23-2008 | 22:05:10 | | 20355 | a3dae4fe +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D10\RemObjects_RODX_D10.dcp | 05-23-2008 | 22:05:12 | | 227163 | e43aa495 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D10\RemObjects_BPDX_D10.dcp | 05-23-2008 | 22:05:14 | | 29562 | b5276320 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D10\RemObjects_DataSnap_D10.dcp | 05-23-2008 | 22:05:14 | | 112182 | 81a7e771 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D10\RemObjects_Synapse_D10.dcp | 05-23-2008 | 22:05:16 | | 373553 | aee202b9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D10\RemObjects_Indy_D10.dcp | 05-23-2008 | 22:05:12 | | 289788 | 3fab203a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D11\RemObjects_Core_D11.dcp | 05-23-2008 | 22:05:18 | | 2557117 | 1b2da531 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D11\RemObjects_IDE_D11.dcp | 05-23-2008 | 22:05:18 | | 606012 | 665cb7c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D11\RemObjects_WebBroker_D11.dcp | 05-23-2008 | 22:05:20 | | 20384 | 7dfe9e13 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D11\RemObjects_RODX_D11.dcp | 05-23-2008 | 22:05:22 | | 227084 | 26462ed2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D11\RemObjects_BPDX_D11.dcp | 05-23-2008 | 22:05:22 | | 29579 | b6f943f8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D11\RemObjects_DataSnap_D11.dcp | 05-23-2008 | 22:05:24 | | 112113 | 4adae2e4 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D11\RemObjects_Synapse_D11.dcp | 05-23-2008 | 22:05:24 | | 373563 | a8d1e502 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Dcu\D11\RemObjects_Indy_D11.dcp | 05-23-2008 | 22:05:20 | | 289739 | fe3ebe6 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\BuildPackages_D7.bpg | 05-21-2008 | 11:20:48 | | 1428 | e4c25f6a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\BuildPackages_D6.bpg | 05-21-2008 | 11:20:48 | | 1424 | ec47a211 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\BuildPackages_D5.bpg | 04-01-2004 | 20:05:20 | | 1326 | be224155 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\BuildPackages_D10.bdsgroup | 05-21-2008 | 11:20:48 | | 2301 | feb7d934 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\BuildPackages_D11.groupproj | 05-21-2008 | 11:20:48 | | 6021 | b8cabf0b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Core_Reg.res | 12-23-2002 | 05:05:02 | | 5140 | f13f9c8f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Core_Reg.pas | 05-19-2008 | 15:14:34 | | 3547 | 7b0e8bd2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Core_D7.dpk | 05-19-2008 | 15:14:34 | | 3928 | 68d57d37 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Core_D6.dpk | 05-19-2008 | 15:14:34 | | 3962 | 86afc61f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Core_D5.dpk | 05-19-2008 | 15:14:34 | | 3893 | cf16d71f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Core_D7.res | 05-23-2008 | 22:05:00 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Core_D6.res | 05-23-2008 | 22:04:52 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Core_D5.res | 08-19-2003 | 17:50:26 | | 524 | b44217e7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Core_D7.dof | 03-12-2007 | 12:41:34 | | 2240 | 9917ab7d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Core_D6.dof | 03-21-2004 | 16:24:18 | | 1303 | 5f86dfa6 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Core_D5.dof | 05-13-2003 | 20:18:20 | | 1798 | 7f2edaa8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Core_D10.bdsproj | 01-19-2007 | 19:37:24 | | 10371 | 7fada18e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Core_D10.dpk | 05-19-2008 | 15:14:34 | | 4029 | ad5b0a24 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Core_D10.res | 05-23-2008 | 22:05:08 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Core_D10.cfg | 03-12-2007 | 12:41:34 | | 625 | e95f7b80 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Core_D11.dproj | 03-26-2008 | 14:13:08 | | 15301 | 8748bdbc +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Core_D11.dpk | 05-19-2008 | 15:14:34 | | 3928 | 2ee1c649 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Core_D11.res | 05-23-2008 | 22:05:16 | | 528 | 72f60ecf +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\RemObjects_IDE_Reg.pas | 02-28-2008 | 10:18:46 | | 6766 | 49948ff5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\RemObjects_IDE_D7.dpk | 05-21-2008 | 09:26:56 | | 3065 | 344f3dd8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\RemObjects_IDE_D6.dpk | 05-21-2008 | 09:26:56 | | 3038 | 67ca0d20 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\RemObjects_IDE_D5.dpk | 04-03-2006 | 19:54:52 | | 2243 | 17b957ee +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\RemObjects_IDE_D7.res | 05-23-2008 | 22:05:02 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\RemObjects_IDE_D5.res | 08-19-2003 | 17:50:26 | | 524 | b44217e7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\RemObjects_IDE_D6.res | 05-23-2008 | 22:04:54 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\RemObjects_IDE_D7.dof | 04-03-2006 | 19:54:52 | | 3289 | 9c225b07 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\RemObjects_IDE_D6.dof | 07-10-2004 | 20:20:14 | | 4792 | e63040c7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\RemObjects_IDE_D5.dof | 05-13-2003 | 20:18:20 | | 1899 | 6d4f41de +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\RemObjects_IDE_D10.bdsproj | 01-19-2007 | 19:37:24 | | 10437 | f00c9da0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\RemObjects_IDE_D10.cfg | 01-19-2007 | 19:37:24 | | 772 | d902a5ef +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\RemObjects_IDE_D10.dpk | 05-21-2008 | 09:26:56 | | 3149 | 32ac9ec8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\RemObjects_IDE_D10.res | 05-23-2008 | 22:05:10 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\RemObjects_IDE_D11.dproj | 03-26-2008 | 12:59:26 | | 10798 | eb5ea400 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\RemObjects_IDE_D11.dpk | 05-21-2008 | 09:26:56 | | 3037 | 951f1f26 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\RemObjects_IDE_D11.res | 05-23-2008 | 22:05:18 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_WebBroker_Reg.pas | 01-05-2006 | 23:12:40 | | 1312 | 9a494e4f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_WebBroker_D7.dpk | 04-01-2004 | 02:59:10 | | 749 | 484ef75c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_WebBroker_D6.dpk | 04-01-2004 | 02:59:10 | | 749 | b5a2387d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_WebBroker_D5.dpk | 04-01-2004 | 02:59:10 | | 749 | 68e66f5f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_WebBroker_D7.dof | 04-01-2004 | 02:59:10 | | 5028 | 55d9911 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_WebBroker_D6.dof | 04-01-2004 | 02:59:10 | | 1841 | ca10d7c8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_WebBroker_D5.dof | 03-12-2007 | 12:41:34 | | 2132 | cc075741 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_WebBroker_D7.res | 05-23-2008 | 22:05:04 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_WebBroker_D6.res | 05-23-2008 | 22:04:56 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_WebBroker_D5.res | 04-01-2004 | 02:59:10 | | 520 | 93617178 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_WebBroker_D10.bdsproj | 01-19-2007 | 19:37:24 | | 10321 | af7fb77f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_WebBroker_D10.cfg | 01-19-2007 | 19:37:24 | | 625 | 4c0fb2cb +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_WebBroker_D10.dpk | 01-19-2007 | 19:37:24 | | 844 | 6dacf9e9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_WebBroker_D10.res | 05-23-2008 | 22:05:10 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_WebBroker_D11.dproj | 03-26-2008 | 14:13:08 | | 5643 | b55046ac +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_WebBroker_D11.dpk | 09-12-2007 | 23:38:30 | | 765 | 9183b6d3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_WebBroker_D11.res | 05-23-2008 | 22:05:18 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Indy_Reg.pas | 05-22-2007 | 21:09:02 | | 2305 | 60e208e4 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Indy_D7.dpk | 05-22-2007 | 21:09:02 | | 1806 | 9a729c0b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Indy_D6.dpk | 05-22-2007 | 21:09:02 | | 1806 | fa698fd4 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Indy_D5.dpk | 05-22-2007 | 21:09:02 | | 1783 | f90cb013 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Indy_D7.res | 05-23-2008 | 22:05:04 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Indy_D6.res | 05-23-2008 | 22:04:56 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Indy_D5.res | 09-06-2003 | 15:36:58 | | 524 | b44217e7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Indy_D7.dof | 03-12-2007 | 12:41:34 | | 2233 | 7b9988dd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Indy_D6.dof | 03-21-2004 | 16:24:18 | | 3181 | 957e6ee5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Indy_D5.dof | 06-17-2003 | 15:17:20 | | 1666 | 5c79d686 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Indy_D10.bdsproj | 01-19-2007 | 19:37:24 | | 10876 | c76d72bb +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Indy_D10.cfg | 03-12-2007 | 12:41:34 | | 625 | e95f7b80 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Indy_D10.dpk | 05-22-2007 | 21:09:02 | | 1970 | b4b7e97d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Indy_D10.res | 05-23-2008 | 22:05:12 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Indy_D11.dproj | 03-26-2008 | 14:13:08 | | 7850 | d7150bb7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Indy_D11.dpk | 09-13-2007 | 14:32:06 | | 1888 | a528d421 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Indy_D11.res | 05-23-2008 | 22:05:20 | | 528 | 72f60ecf +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\RemObjects_RODX_D7.dpk | 02-21-2005 | 15:24:16 | | 1087 | dd3e4e92 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\RemObjects_RODX_D6.dpk | 02-21-2005 | 15:24:16 | | 1087 | 5a13eec0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\RemObjects_RODX_D5.dpk | 05-29-2003 | 22:56:32 | | 1066 | 59143c73 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\RemObjects_RODX_D7.res | 05-23-2008 | 22:05:04 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\RemObjects_RODX_D6.res | 05-23-2008 | 22:04:58 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\RemObjects_RODX_D5.res | 09-06-2003 | 15:36:58 | | 524 | b44217e7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\RemObjects_RODX_D7.dof | 04-01-2004 | 02:59:10 | | 2357 | 9f01cc49 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\RemObjects_RODX_D6.dof | 03-31-2003 | 20:17:18 | | 1962 | 5eb705fd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\RemObjects_RODX_D5.dof | 06-17-2003 | 15:31:34 | | 1420 | 46367fa7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\RemObjects_RODX_D10.bdsproj | 01-19-2007 | 19:37:24 | | 10322 | 95be4803 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\RemObjects_RODX_D10.cfg | 01-19-2007 | 19:37:24 | | 648 | 84739fe3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\RemObjects_RODX_D10.dpk | 01-19-2007 | 19:37:24 | | 1083 | ea3a6300 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\RemObjects_RODX_D10.res | 05-23-2008 | 22:05:12 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\RemObjects_RODX_D11.dproj | 03-26-2008 | 14:13:08 | | 6721 | f3819e04 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\RemObjects_RODX_D11.dpk | 09-12-2007 | 23:38:30 | | 1057 | 2937cea +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\RemObjects_RODX_D11.res | 05-23-2008 | 22:05:22 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_BPDX_Reg.pas | 04-04-2007 | 11:54:24 | | 1773 | 4171ef3b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_BPDX_D7.dpk | 03-30-2004 | 18:59:40 | | 766 | 9e4543c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_BPDX_D6.dpk | 03-30-2004 | 18:59:40 | | 758 | 3b8c680c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_BPDX_D5.dpk | 03-30-2004 | 18:59:40 | | 781 | 7fe91ee3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_BPDX_D7.res | 05-23-2008 | 22:05:06 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_BPDX_D6.res | 05-23-2008 | 22:04:58 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_BPDX_D5.res | 09-06-2003 | 15:36:58 | | 524 | b44217e7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_BPDX_D7.dof | 03-30-2004 | 18:59:40 | | 3420 | e75f9f7a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_BPDX_D6.dof | 03-21-2004 | 16:24:18 | | 2100 | 8250c8d5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_BPDX_D5.dof | 06-17-2003 | 15:17:20 | | 1550 | 2168121c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_BPDX_D10.bdsproj | 01-19-2007 | 19:37:24 | | 10302 | 6089406f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_BPDX_D10.cfg | 01-19-2007 | 19:37:24 | | 611 | 5a60a775 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_BPDX_D10.dpk | 01-19-2007 | 19:37:24 | | 783 | 5b0d9394 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_BPDX_D10.res | 05-23-2008 | 22:05:14 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_BPDX_D11.dproj | 03-26-2008 | 14:13:08 | | 5547 | 9eba8b8b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_BPDX_D11.dpk | 09-12-2007 | 23:38:30 | | 783 | e8b282d6 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_BPDX_D11.res | 05-23-2008 | 22:05:22 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\RemObjects_DataSnap_Reg.pas | 03-29-2004 | 20:18:20 | | 1473 | 8aff7282 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\RemObjects_DataSnap_D6.dpk | 06-07-2007 | 14:25:28 | | 1428 | b810615c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\RemObjects_DataSnap_D7.dpk | 06-07-2007 | 14:25:28 | | 1428 | bbc4cdb0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\RemObjects_DataSnap_D6.res | 05-23-2008 | 22:04:58 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\RemObjects_DataSnap_D7.res | 05-23-2008 | 22:05:06 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\RemObjects_DataSnap_D6.dof | 03-21-2004 | 16:25:48 | | 3023 | 26fa06ae +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\RemObjects_DataSnap_D7.dof | 03-30-2004 | 18:59:40 | | 2828 | 3df2888c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\RemObjects_DataSnap_D10.bdsproj | 05-12-2007 | 13:59:34 | | 10427 | e4f287f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\RemObjects_DataSnap_D10.cfg | 01-19-2007 | 19:37:24 | | 673 | 59119278 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\RemObjects_DataSnap_D10.dpk | 06-07-2007 | 14:25:28 | | 1430 | 1afd6561 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\RemObjects_DataSnap_D10.res | 05-23-2008 | 22:05:14 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\RemObjects_DataSnap_D11.dproj | 03-26-2008 | 12:59:26 | | 8818 | 4de14f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\RemObjects_DataSnap_D11.dpk | 09-12-2007 | 23:38:30 | | 1420 | e2dd9ac0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\RemObjects_DataSnap_D11.res | 05-23-2008 | 22:05:22 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Synapse_Reg.pas | 04-23-2008 | 12:34:38 | | 1714 | 1bf23693 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Synapse_D7.dpk | 04-23-2008 | 12:34:38 | | 1563 | e3515421 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Synapse_D7.res | 05-23-2008 | 22:05:06 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Synapse_D7.dof | 03-12-2007 | 12:41:34 | | 2287 | 1cf41cc5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Synapse_D6.dof | 03-12-2007 | 12:41:34 | | 2238 | 110281c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Synapse_D6.dpk | 04-23-2008 | 12:34:38 | | 1568 | b5830b44 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Synapse_D6.res | 05-23-2008 | 22:05:00 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Synapse_D5.dof | 03-12-2007 | 12:41:34 | | 2227 | b0b8da85 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Synapse_D5.dpk | 04-23-2008 | 12:34:38 | | 1553 | 1d58d736 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Synapse_D5.res | 03-27-2004 | 21:47:34 | | 1880 | 4ea2599b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Synapse_D10.bdsproj | 03-12-2007 | 12:41:34 | | 8465 | acdd26d1 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Synapse_D10.dpk | 04-23-2008 | 12:34:38 | | 1570 | 40abf51d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Synapse_D10.res | 05-23-2008 | 22:05:14 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Synapse_D10.cfg | 03-12-2007 | 12:41:34 | | 641 | 77d8c8a4 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Synapse_D11.dproj | 04-23-2008 | 12:34:38 | | 6783 | 1e6ecdbe +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Synapse_D11.dpk | 04-23-2008 | 12:34:38 | | 1567 | 2724d80a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Synapse_D11.res | 05-23-2008 | 22:05:24 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Core_Glyphs.res | 05-23-2008 | 22:04:50 | | 76208 | 7302c118 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_WebBroker_Glyphs.res | 05-23-2008 | 22:04:50 | | 2748 | d438f66d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Indy_Glyphs.res | 05-23-2008 | 22:04:50 | | 42532 | bde52ca4 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Bpdx_Glyphs.res | 05-23-2008 | 22:04:50 | | 7272 | 88982fc0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects_Synapse_Glyphs.res | 05-23-2008 | 22:04:50 | | 19108 | 52b9c8b1 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\RemObjects_DataSnap_Glyphs.res | 05-23-2008 | 22:04:52 | | 7344 | 24ff0fc1 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RemObjects.inc | 04-04-2008 | 18:14:18 | | 4416 | 88dc5de5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\eDefines.inc | 04-28-2008 | 14:24:26 | | 16839 | 252645ba +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROIndyHTTPChannel.pas | 02-04-2008 | 12:33:22 | | 7090 | 83452c3d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROIdeOnly.pas | 04-04-2007 | 11:54:24 | | 1332 | f7120a08 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROHTTPTools.pas | 12-21-2007 | 12:55:42 | | 3485 | e2be22e5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROHTTPDispatch.pas | 10-15-2007 | 19:09:44 | | 4502 | 330ba171 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uRODL.pas | 05-19-2008 | 17:56:52 | | 64396 | 960f8a2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROClientIntf.pas | 02-14-2008 | 16:19:46 | | 19012 | b5847d7d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROClient.pas | 05-23-2008 | 12:45:56 | | 75002 | 6b407b9e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROXMLSerializer.pas | 05-23-2008 | 11:16:18 | | 68713 | 99270256 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROXDOM_2_3.pas | 02-18-2008 | 21:57:04 | | 1226598 | b7339bb4 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROWebBrokerServer.pas | 12-21-2007 | 12:55:42 | | 14455 | 7cf95e36 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROUnicodeConv.pas | 03-12-2007 | 16:06:30 | | 132501 | 9f5b6b55 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROTypes.pas | 05-22-2008 | 10:33:44 | | 30205 | a56d71eb +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROStreamSerializer.pas | 05-22-2008 | 10:33:44 | | 38340 | d96581fe +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROSOAPMessage.pas | 03-19-2008 | 16:34:22 | | 37724 | 42dede25 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROServerIntf.pas | 12-21-2007 | 12:55:42 | | 5042 | 282706f4 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROServer.pas | 05-05-2008 | 17:19:54 | | 40404 | 3d56611e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROSerializer.pas | 05-22-2008 | 10:33:44 | | 34041 | 3ca4d680 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uRORes.pas | 05-05-2008 | 17:19:54 | | 11690 | ec57649e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROPoweredByRemObjectsButton.res | 04-04-2007 | 11:54:24 | | 14712 | ccc5efee +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROPoweredByRemObjectsButton.pas | 05-04-2007 | 16:30:46 | | 4980 | 3f1d779e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROWinInetHttpChannel.pas | 05-22-2008 | 11:59:46 | | 26055 | 7ccdc852 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROEncryption.pas | 05-22-2008 | 10:33:44 | | 20212 | 7854c727 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uRODLLChannel.pas | 04-09-2008 | 09:43:06 | | 8929 | 272ac59c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uRODLLServer.pas | 10-06-2006 | 19:47:54 | | 5482 | d840cc42 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uRODLLHelpers.pas | 10-06-2006 | 19:47:54 | | 2981 | a1dfecef +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROClasses.pas | 05-22-2008 | 10:33:44 | | 55093 | 9be26c85 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROClassFactories.pas | 12-21-2007 | 12:55:42 | | 14806 | 34fb5c22 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROAsync.pas | 12-28-2007 | 15:58:28 | | 10482 | 41d6f946 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROAsyncResponseStorage.pas | 12-21-2006 | 21:18:52 | | 7511 | 811d0880 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROThread.pas | 04-04-2007 | 11:54:24 | | 5835 | ea44026e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uRORemoteDataModule.pas | 02-04-2008 | 13:26:18 | | 12714 | fbfdcbf0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROCOMInit.pas | 01-05-2006 | 23:07:34 | | 1107 | abb84986 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROLocalChannel.pas | 12-21-2007 | 12:55:42 | | 2914 | 7919ec5c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROLocalServer.pas | 12-21-2007 | 12:55:42 | | 1941 | 23cfa9e3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROThreadPool.pas | 04-23-2008 | 12:34:38 | | 7306 | c895bd9c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROSCHelpers.pas | 05-20-2008 | 10:54:08 | | 28892 | feb823fc +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROSuperTCPServer.pas | 05-08-2008 | 12:45:18 | | 18227 | 7f364460 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROSuperTCPChannel.pas | 05-08-2008 | 12:45:18 | | 30236 | 2925dd36 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROXmlRpcMessage.pas | 05-22-2008 | 10:33:44 | | 43961 | 929b8428 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROServerMultiMessage.pas | 05-23-2008 | 12:39:20 | | 13269 | 23987d4f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROCompression.pas | 04-07-2008 | 13:09:26 | | 9773 | af7b3e30 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROIndyTCPChannel.pas | 02-07-2008 | 18:34:56 | | 7843 | b09f402f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROMSXML2_TLB.pas | 02-04-2006 | 17:11:32 | | 158036 | b888507 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROMSXMLImpl.pas | 03-26-2008 | 14:13:08 | | 16329 | 2ac5bb6f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROOpenXMLImpl.pas | 01-16-2008 | 13:25:20 | | 17320 | 19913a8c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROXMLIntf.pas | 04-14-2008 | 15:21:34 | | 6317 | c0965649 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROWinMessageServer.pas | 12-21-2007 | 12:55:42 | | 7860 | cf0a8e14 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROWinMessageChannel.pas | 12-21-2007 | 12:55:42 | | 8729 | d64f7010 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROBinMessage.pas | 05-20-2008 | 12:49:00 | | 21106 | 54d14a31 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROIndyHTTPServer.pas | 04-04-2008 | 14:37:18 | | 14974 | d05606b2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROIndyTCPServer.pas | 12-21-2007 | 12:55:42 | | 8413 | db8043bd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROBPDXHTTPServer.pas | 02-04-2008 | 12:33:22 | | 16344 | 7fbff801 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROBPDXTCPServer.pas | 03-21-2006 | 21:31:48 | | 5317 | 79c1ea64 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROIndyUDPChannel.pas | 10-15-2007 | 19:09:44 | | 19675 | ff90e1a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROIndyUDPServer.pas | 09-26-2007 | 17:40:46 | | 9868 | 76975592 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROSessions.pas | 01-17-2008 | 11:37:56 | | 31486 | 7325fc90 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uRORemoteService.pas | 10-24-2007 | 18:37:30 | | 7159 | 84f8ea30 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uRODBSessionManager.pas | 05-20-2008 | 14:28:36 | | 17797 | b5d3d79 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uRoPleaseWaitForm.pas | 10-15-2007 | 19:09:44 | | 3268 | 2d302268 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uRoPleaseWaitForm.dfm | 03-27-2007 | 17:19:06 | | 5716 | d59dd4e5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROPleaseWaitForm_Kylix.xfm | 05-17-2006 | 13:45:12 | | 769 | bc6625e3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROPleaseWaitForm_Kylix.pas | 05-17-2006 | 13:45:12 | | 2758 | b9066e72 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROServiceComponent.pas | 03-15-2007 | 17:32:38 | | 1121 | 79c50204 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROSynapseHTTPChannel.pas | 02-04-2008 | 12:33:22 | | 6427 | d477bc72 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROEventRepository.pas | 03-11-2008 | 16:52:36 | | 50924 | 16c60c13 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uRODynamicRequest.pas | 05-22-2008 | 10:33:44 | | 44675 | 4d85977 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROMasterServerSessionManager.pas | 05-04-2007 | 16:30:46 | | 5054 | ee600713 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROMasterServerEventRepository.pas | 10-17-2007 | 14:29:26 | | 4348 | 643b689d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ROMasterServerLibrary_Intf.pas | 10-17-2007 | 14:34:16 | | 14568 | 60b44c08 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROPostMessage.pas | 05-22-2008 | 10:33:44 | | 34584 | d5c6960 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROComboService.pas | 06-19-2007 | 13:50:38 | | 9180 | 11c12804 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROHtmlServerInfoRes.html | 12-05-2006 | 23:07:10 | | 1236 | 9fbac4c2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROHtmlServerInfoRes.ico | 01-18-2006 | 16:23:44 | | 22486 | 5c6e478a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROHtmlServerInfoRes.xsl | 01-25-2008 | 12:21:40 | | 29325 | 2577962d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROHtmlServerInfoRes.css | 01-18-2006 | 17:25:46 | | 2599 | 3ff25ea +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROHtmlServerInfo.lrs | 07-23-2007 | 12:25:40 | | 98758 | 719f5cf9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROHtmlServerInfo.pas | 02-13-2008 | 11:56:40 | | 5390 | 50b7d903 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROHtmlServerInfo.res | 07-23-2007 | 12:25:40 | | 51252 | e955a0cb +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROHtmlServerInfo.rc | 06-29-2007 | 01:18:48 | | 304 | 74a67f86 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROBroadcastServer.pas | 09-26-2007 | 17:58:36 | | 4931 | 53a71bbd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROBroadcastChannel.pas | 10-15-2007 | 19:09:44 | | 7397 | 1912739c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROStreamUtils.pas | 10-15-2007 | 19:09:44 | | 9292 | d58ecca3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uRONamedPipeServer.pas | 12-21-2007 | 12:55:42 | | 14469 | 44238041 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uRONamedPipeChannel.pas | 12-21-2007 | 12:55:42 | | 9643 | 4ca002e4 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROIndyEmailChannel.pas | 10-18-2007 | 17:31:10 | | 10355 | c9525143 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROIndyEmailServer.pas | 02-08-2008 | 13:54:14 | | 12253 | c5cf5343 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROIndyEmail.pas | 10-18-2007 | 17:31:10 | | 2655 | ab42210e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uRODiscovery_Intf.pas | 09-26-2007 | 17:44:40 | | 3256 | b9175f08 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uRODiscovery_Invk.pas | 04-24-2007 | 16:06:54 | | 2411 | 777f86c3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uRODiscoveryService_Impl.pas | 09-26-2007 | 17:44:40 | | 1778 | d5772a81 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uRODiscovery.pas | 01-17-2007 | 12:35:26 | | 12003 | 99d6b993 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uRODiscovery_Async.pas | 04-24-2007 | 16:06:54 | | 3220 | 3841ed8c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ROServiceDiscovery.RODL | 06-23-2006 | 16:45:10 | | 1071 | 22ce5614 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROBaseSuperHttpServer.pas | 05-08-2008 | 12:45:18 | | 37821 | eacf0a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uIPAsyncHttpServer.pas | 04-23-2008 | 12:34:38 | | 16358 | a68a863b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uIPAsyncSocket.pas | 02-04-2008 | 12:33:22 | | 29131 | d4087709 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uIPHttpHeaders.pas | 03-26-2008 | 12:59:26 | | 3646 | e73f1a8b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROIpSuperHttpServer.pas | 05-21-2008 | 09:24:22 | | 7066 | 68baafea +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROIndySuperHttpChannel.pas | 02-07-2008 | 18:34:56 | | 8953 | 5b951ef7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROSynapseSuperHttpChannel.pas | 02-20-2008 | 12:37:46 | | 7417 | adae9f90 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROBaseSuperHttpChannel.pas | 05-08-2008 | 12:45:18 | | 21695 | c6eee9a0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROSynapseSCHelpers.pas | 05-20-2008 | 10:54:08 | | 23017 | 7510a9c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROSynapseServerSocket.pas | 05-13-2008 | 11:15:58 | | 5053 | 449226fb +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROSynapseSuperTCPChannel.pas | 05-08-2008 | 12:45:18 | | 26617 | 40a466eb +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROSynapseSuperTCPServer.pas | 05-08-2008 | 12:45:18 | | 18492 | c4c65808 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROEncryptionEnvelope.pas | 05-22-2008 | 10:33:44 | | 47553 | aa9115f2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROIpHttpServer.pas | 04-23-2008 | 12:34:38 | | 12496 | 8469fcce +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROIpTcpServer.pas | 04-23-2008 | 14:56:12 | | 12645 | e0ee12c5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROAsyncSCHelpers.pas | 05-20-2008 | 10:54:08 | | 26573 | 955d378d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROAsyncSuperTcpServer.pas | 05-08-2008 | 12:45:18 | | 9828 | 268c7c25 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROIcsAsyncSuperTcpServer.pas | 04-04-2008 | 18:14:18 | | 32265 | bcc80a87 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROJSONMessage.pas | 04-23-2008 | 12:59:50 | | 964 | 5e3b79c4 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\Synapse +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\Synapse\sslinux.pas | 05-23-2007 | 01:35:16 | | 41239 | b4b66fbc +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\Synapse\sswin32.pas | 03-26-2008 | 12:59:26 | | 54669 | 3d94673f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\Synapse\ssfpc.pas | 09-12-2007 | 21:53:08 | | 27589 | 2bee506a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\Synapse\synacode.pas | 05-23-2007 | 01:35:16 | | 51924 | bd7f3f60 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\Synapse\synautil.pas | 09-26-2007 | 17:38:24 | | 48970 | 5aee47d8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\Synapse\synsock.pas | 09-26-2007 | 17:38:24 | | 3814 | 8fd6791f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\Synapse\synafpc.pas | 09-26-2007 | 17:38:24 | | 5190 | 24d7aa78 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\Synapse\synaip.pas | 05-23-2007 | 01:43:52 | | 11703 | 8425449d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\Synapse\blcksock.pas | 09-26-2007 | 17:38:24 | | 124895 | 7f58fa30 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\Synapse\httpsend.pas | 09-26-2007 | 17:38:24 | | 25961 | 247008b0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\uRODXSockClient.pas | 03-15-2007 | 17:32:38 | | 22516 | 1b6ecca0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\uRODXSock.pas | 09-26-2007 | 17:41:54 | | 56348 | 877c0d2c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\uRODXSessionTracker.pas | 09-05-2007 | 15:46:02 | | 4045 | 903daba3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\uRODXServerCore.pas | 05-22-2008 | 10:33:44 | | 38784 | e4f0353 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\uRODXSecurity.pas | 12-24-2002 | 22:21:40 | | 12379 | b135107b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\uRODXISAPIFilter.pas | 09-27-2007 | 18:44:34 | | 15475 | b75aa337 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\uRODXISAPI.pas | 09-27-2007 | 18:44:34 | | 60687 | 459d2b48 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\uRODXHTTPServerCore.pas | 05-22-2008 | 10:33:44 | | 28875 | 748153a9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\uRODXHTTPHeaderTools.pas | 03-15-2007 | 17:32:38 | | 22705 | 3bfac439 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\Resource_Turkish.inc | 12-23-2002 | 05:05:02 | | 3048 | ab191098 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\Resource_Spanish.inc | 12-23-2002 | 05:05:02 | | 3710 | 98a473c4 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\Resource_Russian.inc | 12-23-2002 | 05:05:02 | | 3239 | a5a510e1 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\Resource_Portuguese.inc | 12-23-2002 | 05:05:02 | | 3661 | 38bc11b6 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\Resource_LowMem.inc | 12-23-2002 | 05:05:02 | | 2002 | 8240cd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\Resource_Italian.inc | 12-23-2002 | 05:05:02 | | 3192 | 95c19c3b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\Resource_German.inc | 12-23-2002 | 05:05:02 | | 3710 | 6f2b156f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\Resource_French.inc | 12-23-2002 | 05:05:02 | | 3536 | 8f7cb1fc +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\Resource_English.inc | 12-23-2002 | 05:05:02 | | 4772 | ff7a857c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\uRODXSock.def | 09-26-2007 | 17:41:54 | | 1549 | 30dbfee7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\uRODXFree.def | 09-26-2007 | 17:41:54 | | 1547 | c71544d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\uRODXString.pas | 05-22-2008 | 10:33:44 | | 82772 | d6abc8ef +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX\uRODXSocket.pas | 05-22-2008 | 10:33:44 | | 32412 | f0d62243 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC\uRODECReg.pas | 12-24-2002 | 22:21:40 | | 5011 | 71808eeb +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC\uRODECUtil.pas | 05-22-2008 | 10:33:44 | | 49824 | 8b19f472 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC\uROEncKeyPropEditor.pas | 12-24-2002 | 22:21:40 | | 3382 | 7bc73578 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC\uROHash.pas | 05-22-2008 | 10:33:44 | | 176865 | 145d129b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC\uROHCMngr.pas | 12-24-2002 | 22:21:40 | | 12218 | e39003c0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC\uRORFC2289.pas | 01-18-2006 | 21:55:40 | | 20132 | d95b167d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC\uRORng.pas | 12-24-2002 | 22:21:40 | | 22359 | 93f22bb5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC\uROcipher1.inc | 12-23-2002 | 05:05:02 | | 80869 | 3a40b145 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC\uROcipher.inc | 12-23-2002 | 05:05:02 | | 137282 | 50274e0d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC\uROHash.inc | 12-23-2002 | 05:05:02 | | 68213 | 764984a8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC\uRORFC1760.inc | 12-23-2002 | 05:05:02 | | 17654 | f39f3a8e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC\uROSquare.inc | 12-23-2002 | 05:05:02 | | 27741 | b7eb3564 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC\uROVer.inc | 12-23-2002 | 05:05:02 | | 1111 | 26ae3b07 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC\uRODECReg.res | 12-23-2002 | 05:05:02 | | 1388 | 9b9386e5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC\uRORFC1760.RES | 12-23-2002 | 05:05:02 | | 8266 | e967ccfe +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC\uROEncKeyPropEditor.dfm | 02-08-2008 | 13:46:22 | | 9383 | c9dd9ff +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC\uROCipher1.pas | 12-24-2002 | 22:21:40 | | 114429 | ae7c402 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC\uROCipher.pas | 05-22-2008 | 10:33:44 | | 116952 | 2a774a47 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC\uROCiphers.pas | 05-22-2008 | 10:33:44 | | 1733 | adbce90b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC\uRODECConst.pas | 04-19-2006 | 15:50:06 | | 3901 | 2eb2da90 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\uRODataSnapNewServerModuleWizard.pas | 08-10-2006 | 15:18:46 | | 10347 | 85998c6e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\uRODataSnapNewServerModuleWizard.res | 04-09-2004 | 01:33:08 | | 3388 | 42118f7b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\uRODataSnapProviderManager.pas | 12-24-2002 | 22:21:40 | | 2043 | 3a3af53d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\uRODataSnapProviderPublisher.dfm | 06-14-2003 | 23:05:40 | | 67 | fd402d2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\uRODataSnapProviderPublisher.pas | 05-21-2008 | 11:48:56 | | 3638 | 82d729a2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\uRODataSnapPublishedProvidersCollection.pas | 01-15-2003 | 01:55:36 | | 3263 | af3ba108 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\uRODataSnapRes.pas | 12-24-2002 | 22:21:40 | | 142 | 603a38c4 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\uROBinaryHelpers.pas | 05-22-2008 | 10:33:44 | | 22549 | b25693aa +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\uRODataSnap_Intf.pas | 06-01-2006 | 12:19:22 | | 11847 | 1be46df3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\uRODataSnap_Async.pas | 05-16-2006 | 13:40:28 | | 11339 | 539125e1 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\uRODataSnap_Invk.pas | 05-04-2007 | 16:30:46 | | 9252 | 68678d4 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\uRODataSnapBaseAppServer.pas | 09-18-2003 | 14:30:12 | | 7825 | 8badb29a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\uRODataSnapConnection.pas | 04-21-2008 | 13:58:14 | | 14369 | 597f6c99 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap\uRODataSnapModule.pas | 12-24-2002 | 22:21:40 | | 5553 | b65bb0af +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen\uRODLToPascalIntf.pas | 05-19-2008 | 17:30:52 | | 101541 | e176578d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen\uRODLToPascalInvk.pas | 05-06-2008 | 09:47:36 | | 15135 | 62c7681c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen\uRODLToPascalAsync.pas | 01-14-2008 | 01:58:44 | | 14562 | 814d4e2b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen\uRODLToPascalImpl.pas | 04-23-2007 | 01:26:04 | | 11984 | d32732c5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen\uRODLToWSDL.pas | 12-28-2007 | 11:34:40 | | 44050 | 97d47342 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen\uRODLToXML.pas | 04-14-2008 | 15:21:34 | | 51549 | fc40f386 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen\uRODLGenTools.pas | 04-21-2008 | 00:51:04 | | 18217 | 42c3b0f5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen\uRODLToPascal.pas | 03-21-2004 | 19:44:26 | | 221 | 1cba3fe8 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\uRODLIntfConverter.pas | 04-20-2008 | 20:38:28 | | 7598 | 892d6027 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\uRODLSplitableConverter.pas | 12-31-2007 | 03:24:48 | | 18777 | 75323abd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\uRODLTemplateBasedConverter.pas | 05-08-2008 | 17:10:02 | | 132910 | f931ab4c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\uRODLLineStream.pas | 04-20-2008 | 20:38:28 | | 2044 | 10110095 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\uRODLTemplateBasedConverterUtils.pas | 05-05-2008 | 11:17:44 | | 27377 | 8eb6ca05 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\uRODLCppConverters.pas | 04-20-2008 | 20:38:28 | | 15972 | 60e488f1 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\uRODLDelphiConverters.pas | 04-20-2008 | 20:38:28 | | 8572 | c47f84f0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\uRODLImplConverter.pas | 04-04-2007 | 11:54:24 | | 5467 | 6915b5e0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\uRODLAsyncConverter.pas | 01-16-2008 | 17:44:40 | | 3365 | 855d0804 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\uRODLConvertersUtils.pas | 05-01-2008 | 11:01:30 | | 42705 | 21d421a3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\uRODLInvkConverter.pas | 01-16-2008 | 17:44:40 | | 4514 | 7a3edae7 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\Templates +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\Templates\template.wrapper_async.pas | 08-08-2006 | 19:40:34 | | 817 | 13e3d46b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\Templates\template.wrapper_intf.pas | 08-08-2006 | 19:40:34 | | 817 | 13e3d46b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\Templates\template.wrapper_invk.pas | 08-08-2006 | 19:40:34 | | 833 | 7ddc96f6 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\Templates\template.impl.dfm | 09-25-2007 | 18:15:22 | | 158 | a9f210e8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\Templates\template.async.h | 05-20-2008 | 11:03:54 | | 9593 | 12e282b0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\Templates\template.impl.h | 05-20-2008 | 11:03:54 | | 3677 | 4ca842b9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\Templates\template.intf.h | 05-20-2008 | 11:03:54 | | 19894 | 8c87fe8c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\Templates\template.invk.h | 05-20-2008 | 11:03:54 | | 2729 | 9544a0b6 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\Templates\template.wrapper_async.h | 08-08-2006 | 19:40:34 | | 697 | 78d74350 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\Templates\template.wrapper_intf.h | 08-08-2006 | 19:40:34 | | 697 | 78d74350 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\Templates\template.wrapper_invk.h | 08-08-2006 | 19:40:34 | | 697 | 78d74350 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\Templates\template.async.cpp | 02-06-2007 | 17:21:26 | | 7250 | 65158a6d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\Templates\template.impl.cpp | 05-20-2008 | 11:03:54 | | 3194 | f1eab7e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\Templates\template.intf.cpp | 05-20-2008 | 13:07:12 | | 60837 | 3af4ed1f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\Templates\template.invk.cpp | 05-20-2008 | 11:03:54 | | 8260 | 86984b29 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\Templates\template.async.pas | 10-05-2007 | 16:46:34 | | 8012 | ae089917 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\Templates\template.impl.pas | 10-05-2007 | 16:46:34 | | 2796 | e59c91b6 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\Templates\template.intf.pas | 05-08-2008 | 17:10:02 | | 62318 | 3745a684 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\Templates\template.invk.pas | 05-05-2008 | 17:19:54 | | 7044 | d5bde0f4 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\Templates\Templates.res | 05-23-2008 | 22:04:52 | | 216924 | d13eb4bd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen2\Templates\Templates.rc | 04-20-2008 | 20:38:28 | | 1210 | cb5a60d7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\fCustomIDEMessagesForm.pas | 12-24-2002 | 22:21:40 | | 3426 | d6070695 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\fServerProjectOptions.pas | 05-28-2007 | 10:46:56 | | 6474 | e68df966 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\uROIDEMenu.pas | 05-20-2008 | 13:30:42 | | 18681 | da9f3e0b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\uROIDEPrjWizard.pas | 12-06-2007 | 19:32:16 | | 20459 | c6bafb88 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\uROIDETools.pas | 04-21-2008 | 11:46:22 | | 22882 | 14f42001 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\uRORODLNotifier.pas | 05-20-2008 | 13:30:42 | | 18435 | 742e01dc +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\uROResWriter.pas | 12-24-2002 | 22:21:40 | | 1787 | 2a870d35 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\fCustomIDEMessagesForm.dfm | 12-23-2002 | 05:05:02 | | 11001 | 1b57e70 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\fServerProjectOptions.dfm | 05-23-2008 | 22:04:48 | | 235625 | 51edc32e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\fDispatchersEditorForm.pas | 04-18-2003 | 18:42:20 | | 7084 | f18dbb41 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\fDispatchersEditorForm.dfm | 04-25-2004 | 17:57:42 | | 10137 | f3772345 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\fROAbout.dfm | 06-07-2007 | 17:03:22 | | 1015047 | 1ca832a3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\fROAbout.pas | 06-07-2007 | 17:03:22 | | 2756 | 6d6fdf10 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\uROIDEData.pas | 12-24-2002 | 22:21:40 | | 910 | f96f0c72 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\uROIDEData.dfm | 04-06-2004 | 22:13:20 | | 29041 | 9c99abdb +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\NewRORemoteDataModule.ico | 12-23-2002 | 05:05:02 | | 2238 | 321668e3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\fCustomIDEMessagesFormKylix.pas | 12-31-2002 | 18:51:08 | | 3156 | ad2d34ca +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\fCustomIDEMessagesFormKylix.dfm | 12-31-2002 | 18:51:08 | | 1098 | 4d16bf32 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\fDispatchersEditorFormKylix.pas | 01-21-2003 | 01:42:34 | | 6937 | 88ea2b74 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\fDispatchersEditorFormKylix.dfm | 01-21-2003 | 01:42:34 | | 9991 | 7add467f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\fServerProjectOptionsKylix.pas | 01-21-2003 | 01:42:34 | | 6156 | bad0c7fa +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\fServerProjectOptionsKylix.dfm | 01-21-2003 | 01:42:34 | | 61226 | aa9b7d0e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\uROIDEEditors.pas | 02-28-2008 | 10:18:46 | | 5549 | 75477480 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\uROProductVersionInfo_Intf.pas | 06-01-2006 | 12:19:22 | | 22521 | a0a63bee +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\uROProductVersionInfoForm.dfm | 05-23-2008 | 22:04:48 | | 7270 | 47f35ef6 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\uROProductVersionInfoForm.pas | 06-09-2003 | 03:38:08 | | 1830 | f1abe6f0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\uROProductVersionInfo.pas | 05-04-2007 | 16:30:46 | | 2693 | 106f42e2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\fROServerClassForm.pas | 10-30-2007 | 13:29:46 | | 3190 | 49a20bb0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\fROServerClassForm.dfm | 05-23-2008 | 22:04:46 | | 226559 | 805783c8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\uROExtraEditors.pas | 01-20-2006 | 03:32:10 | | 3056 | 3924fb00 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\fNewProjectForm.pas | 12-06-2007 | 19:32:16 | | 7023 | 5f2d213c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\fNewProjectForm.dfm | 05-23-2008 | 22:04:46 | | 233352 | b5bdf4e9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\Resources.BDS.RES | 03-09-2007 | 19:42:20 | | 8644 | d5066feb +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\uROLoginNeededForm.pas | 05-05-2008 | 11:17:44 | | 5465 | c3a1e6ab +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\IDE\uROLoginNeededForm.dfm | 05-23-2008 | 22:04:48 | | 56193 | f9bed400 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\uROZLib.pas | 11-26-2007 | 13:43:34 | | 30384 | cedc295 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\infback.obj | 09-27-2006 | 16:41:30 | | 6913 | d0e3dbc8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\inffast.obj | 09-27-2006 | 16:41:30 | | 1568 | 17e887e3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\inflate.obj | 09-27-2006 | 16:41:30 | | 10546 | 5515441c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\inftrees.obj | 09-27-2006 | 16:41:30 | | 1681 | efdd92be +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\trees.obj | 09-27-2006 | 16:41:30 | | 10932 | 727b7484 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\adler32.obj | 09-27-2006 | 16:41:30 | | 977 | 60aaa699 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\deflate.obj | 09-27-2006 | 16:41:30 | | 8769 | 85e9bb8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\uncompr.obj | 09-27-2006 | 16:41:30 | | 440 | f2e963c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\compress.obj | 09-27-2006 | 16:41:30 | | 502 | b9f3f946 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\crc32.obj | 09-27-2006 | 16:41:30 | | 10586 | 12c7f923 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\gzio.obj | 09-27-2006 | 16:41:30 | | 5124 | c680789 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\zutil.obj | 09-27-2006 | 16:41:30 | | 747 | 1e962822 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\Zlib\FPC +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\FPC\uROZLib.pas | 10-15-2007 | 15:41:48 | | 13698 | 43f58010 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\Zlib\Kylix +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\Kylix\uROZLib.pas | 12-31-2002 | 18:38:56 | | 19372 | d1328973 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\Kylix\infblock.obj | 04-05-2004 | 18:13:52 | | 5527 | 723c3620 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\Kylix\infcodes.obj | 04-05-2004 | 18:13:52 | | 3790 | e8753755 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\Kylix\inffast.obj | 04-05-2004 | 18:13:52 | | 2335 | f80d2de0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\Kylix\inflate.obj | 04-05-2004 | 18:13:52 | | 3280 | 7c512d85 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\Kylix\inftrees.obj | 04-05-2004 | 18:13:52 | | 8115 | 52a21d54 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\Kylix\infutil.obj | 04-05-2004 | 18:13:52 | | 1409 | 8577507f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\Kylix\trees.obj | 04-05-2004 | 18:13:52 | | 11868 | b3a0e0b8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\Kylix\adler32.obj | 04-05-2004 | 18:13:52 | | 612 | f48dc4c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\ZLib\Kylix\deflate.obj | 04-05-2004 | 18:13:52 | | 7304 | d130f05b +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Styles.css | 06-27-2006 | 12:49:24 | | 1490 | c0549e5f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Samples.html | 10-19-2007 | 15:29:08 | | 14613 | 669d994f +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Arrays +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Arrays\ArraysServer.dpr | 11-20-2006 | 02:24:40 | | 558 | b5a84afb +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Arrays\ArraysServer.bdsproj | 05-25-2007 | 17:12:08 | | 8387 | 38d3d70c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Arrays\ArraysServer.dproj | 05-29-2007 | 16:16:46 | | 3588 | cff21a55 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Arrays\Arrays.Sample.html | 12-06-2006 | 17:40:30 | | 664 | 1ba26052 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Arrays\ArraysClientMain.pas | 02-19-2007 | 18:06:40 | | 5435 | a2131f15 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Arrays\ArraysLibrary_Intf.pas | 11-20-2006 | 02:24:40 | | 20467 | ad2bf492 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Arrays\ArraysLibrary_Invk.pas | 11-20-2006 | 02:24:40 | | 1962 | eb93b462 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Arrays\ArraysServerMain.pas | 11-20-2006 | 02:24:40 | | 874 | 23ab142c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Arrays\ArraysService_Impl.pas | 11-20-2006 | 02:24:40 | | 4178 | 60d8224a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Arrays\ArraysLibrary.rodl | 11-20-2006 | 02:24:40 | | 3037 | aac405c6 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Arrays\Arrays.bpg | 11-20-2006 | 02:24:40 | | 833 | 97a9dbba +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Arrays\Arrays.bdsgroup | 05-25-2007 | 17:12:08 | | 711 | a3e53f03 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Arrays\Arrays.groupproj | 05-29-2007 | 16:16:46 | | 1464 | bb452b16 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Arrays\ArraysClient.res | 11-20-2006 | 02:24:40 | | 22748 | ab21813 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Arrays\ArraysServer.res | 11-20-2006 | 02:24:40 | | 22748 | 9880fe42 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Arrays\RODLFILE.res | 11-20-2006 | 02:24:40 | | 3117 | ec338fc8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Arrays\ArraysClientMain.dfm | 11-20-2006 | 02:24:40 | | 2189 | 46b6f8d9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Arrays\ArraysServerMain.dfm | 05-23-2008 | 22:04:42 | | 1479 | dce2147 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Arrays\ArraysClient.dpr | 11-20-2006 | 02:24:40 | | 316 | 94959e23 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Arrays\ArraysClient.bdsproj | 05-25-2007 | 17:12:08 | | 8387 | 1037e0b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Arrays\ArraysClient.dproj | 05-29-2007 | 16:16:46 | | 3423 | cb8a42c +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\async_EmailSettings.pas | 03-23-2007 | 12:12:58 | | 5320 | 43f7800e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\async_EmailSettings.dfm | 05-23-2008 | 22:04:42 | | 4717 | 4f090bb4 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\AsyncClientMain.dfm | 02-08-2008 | 13:54:14 | | 3974 | 7034e90c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\AsyncServerMain.dfm | 02-08-2008 | 13:54:14 | | 2676 | 37d45c85 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\AsyncClient.dpr | 02-08-2008 | 13:54:14 | | 372 | c0ebf3c9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\AsyncClient.bdsproj | 05-25-2007 | 17:40:00 | | 8386 | 8d907d80 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\AsyncClient.dproj | 05-29-2007 | 16:16:46 | | 3417 | 85bc08c6 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\AsyncServer.dpr | 02-08-2008 | 13:54:14 | | 607 | 3e4c347b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\AsyncServer.bdsproj | 05-25-2007 | 17:40:00 | | 8385 | 116b65e9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\AsyncServer.dproj | 05-29-2007 | 16:16:46 | | 3578 | 81e9b4eb +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\AsyncGroup.Sample.html | 06-25-2006 | 14:29:14 | | 1077 | 9a81331f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\AsyncLibrary.rodl | 04-21-2006 | 21:47:26 | | 960 | 733497f0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\AsyncGroup.bpg | 05-28-2007 | 13:42:24 | | 827 | 28d7ce26 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\AsyncGroup.bdsgroup | 05-25-2007 | 17:40:00 | | 705 | bf4ab570 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\AsyncGroup.groupproj | 05-29-2007 | 16:16:46 | | 1446 | f014c1d4 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\AsyncClientMain.pas | 02-08-2008 | 13:54:14 | | 7027 | f4cb2d3b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\AsyncLibrary_Async.pas | 04-21-2006 | 21:47:26 | | 2797 | e4f347f6 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\AsyncLibrary_Intf.pas | 05-28-2007 | 13:42:24 | | 2759 | 1ada3524 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\AsyncLibrary_Invk.pas | 02-08-2008 | 13:54:14 | | 1878 | 1ffcc4ae +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\AsyncServerMain.pas | 02-08-2008 | 13:54:14 | | 3141 | 9ac3b95 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\AsyncService_Impl.pas | 04-21-2006 | 21:47:26 | | 1390 | 1db46eb1 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\AsyncClient.res | 04-21-2006 | 21:47:26 | | 22748 | a6c8709c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\AsyncServer.res | 04-21-2006 | 21:47:26 | | 23460 | 98e0e797 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Async\RODLFILE.res | 04-21-2006 | 21:47:26 | | 1040 | dd47a7de +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Auto Server +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Auto Server\AutoServerLibrary_Intf.pas | 04-06-2006 | 02:34:06 | | 3196 | 19ac35fa +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Auto Server\AutoServerLibrary_Invk.pas | 04-06-2006 | 02:34:06 | | 2595 | 8125cb17 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Auto Server\AutoServerService_Impl.pas | 04-06-2006 | 02:34:06 | | 1544 | 85caed2e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Auto Server\AutoServer.res | 04-06-2006 | 02:34:06 | | 22748 | b8aec145 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Auto Server\AutoServer_Client.res | 04-06-2006 | 02:34:06 | | 23752 | 5cc5b097 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Auto Server\RODLFILE.res | 04-06-2006 | 02:34:06 | | 1200 | ae3a88b4 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Auto Server\AutoServer_ClientMain.dfm | 05-23-2008 | 22:04:42 | | 1897 | 5e37b29d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Auto Server\AutoServer_ServerMain.dfm | 05-23-2008 | 22:04:42 | | 880 | 69862c41 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Auto Server\AutoServer.dpr | 04-06-2006 | 02:34:06 | | 607 | b94d6b61 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Auto Server\AutoServer.bdsproj | 05-25-2007 | 17:12:08 | | 8385 | 75a3053c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Auto Server\AutoServer.dproj | 05-29-2007 | 16:16:46 | | 3602 | 9f44686f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Auto Server\AutoServer_Client.dpr | 04-06-2006 | 02:34:06 | | 349 | 76b958cb +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Auto Server\AutoServer_Client.bdsproj | 05-25-2007 | 17:12:08 | | 8391 | e6a035f4 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Auto Server\AutoServer_Client.dproj | 05-29-2007 | 16:16:46 | | 3452 | 7668b92b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Auto Server\AutoServerGroup.Sample.html | 04-21-2006 | 21:36:34 | | 851 | 4235d66 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Auto Server\AutoServer.rodl | 04-06-2006 | 02:34:06 | | 1120 | 2edc714f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Auto Server\AutoServerGroup.bpg | 04-06-2006 | 02:34:06 | | 842 | 5abd1df7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Auto Server\AutoServerGroup.bdsgroup | 05-25-2007 | 17:12:08 | | 720 | 747589dc +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Auto Server\AutoServerGroup.groupproj | 05-29-2007 | 16:16:46 | | 1491 | 68e88ba7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Auto Server\AutoServer_ClientMain.pas | 05-30-2006 | 17:06:10 | | 4146 | 469d57e6 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Auto Server\AutoServer_ServerMain.pas | 04-06-2006 | 02:34:06 | | 831 | 786df99e +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Broadcast Chat +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Broadcast Chat\BroadcastChat.res | 04-21-2006 | 21:36:26 | | 23604 | 68173a9b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Broadcast Chat\RODLFILE.res | 04-21-2006 | 21:36:26 | | 1080 | f324ff5a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Broadcast Chat\BroadcastChatMain.dfm | 05-17-2006 | 21:51:42 | | 11317 | 8578e85 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Broadcast Chat\BroadcastChat.dpr | 04-21-2006 | 21:36:26 | | 598 | dfee1aa1 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Broadcast Chat\BroadcastChat.bdsproj | 05-25-2007 | 17:12:08 | | 8387 | 44121064 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Broadcast Chat\BroadcastChat.dproj | 05-29-2007 | 16:16:46 | | 3614 | e1bd1ed4 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Broadcast Chat\BroadcastChat.Sample.html | 04-18-2007 | 19:01:38 | | 808 | 5663d643 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Broadcast Chat\BroadcastChatLibrary.rodl | 04-21-2006 | 21:36:26 | | 1000 | 391f0573 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Broadcast Chat\BroadcastChatLibrary_Async.pas | 04-21-2006 | 21:36:26 | | 3696 | 23ad42f7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Broadcast Chat\BroadcastChatLibrary_Intf.pas | 04-21-2006 | 21:36:26 | | 3384 | 471d9498 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Broadcast Chat\BroadcastChatLibrary_Invk.pas | 04-21-2006 | 21:36:26 | | 2725 | c644c74 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Broadcast Chat\BroadcastChatMain.pas | 04-25-2006 | 19:33:50 | | 3684 | e86b4c62 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Broadcast Chat\BroadcastChatService_Impl.pas | 04-25-2006 | 19:33:50 | | 2268 | 98f9851d +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\COM +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\COM\COM.Sample.html | 06-09-2006 | 22:23:22 | | 1014 | 45690f16 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\COM\COM_Main.dfm | 05-25-2006 | 04:25:08 | | 1097 | fe40284b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\COM\COM_Main.pas | 05-25-2006 | 04:25:08 | | 2534 | e20f7fdc +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\COM\COMClient.dpr | 05-25-2006 | 04:25:08 | | 292 | ab1866ac +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\COM\COMClient.bdsproj | 05-25-2007 | 17:12:08 | | 8384 | c3f13863 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\COM\COMClient.dproj | 05-29-2007 | 16:16:46 | | 3441 | 439f963d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\COM\COMClient.res | 05-25-2006 | 04:25:08 | | 22748 | ab21813 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\COM\ExcelDemo.xls | 05-25-2006 | 04:25:08 | | 33280 | 6a62f60a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\COM\ROASPDemo.asp | 05-25-2006 | 04:25:08 | | 777 | 43fcce39 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\COM\ROCOM_TLB.dcr | 03-27-2004 | 18:42:50 | | 32 | 245d8dcd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\COM\ROCOM_TLB.pas | 03-27-2004 | 18:42:50 | | 11780 | 83b1e903 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\COM\Test.vbs | 05-25-2006 | 04:25:08 | | 631 | 97dd7ac2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\COM\COM.bpg | 05-25-2006 | 04:25:08 | | 842 | feb6358b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\COM\COM.bdsgroup | 05-25-2007 | 17:12:08 | | 720 | cbb716e0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\COM\COM.groupproj | 05-29-2007 | 16:16:46 | | 1491 | 9ad0cdc7 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnapServerMain.pas | 05-23-2007 | 13:36:30 | | 797 | da0dfbc5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnapClient.res | 04-22-2006 | 00:08:42 | | 22748 | ab21813 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnapIsapiServer.res | 04-21-2006 | 22:00:50 | | 876 | 384c3b77 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnapServer.res | 04-21-2006 | 22:00:50 | | 22748 | 5ac86f48 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnapClientMain.dfm | 05-23-2007 | 13:36:30 | | 11464 | 1c0b714 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnapISAPIServerMain.dfm | 04-21-2006 | 22:00:50 | | 767 | 5ba888d9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnapServerData.dfm | 05-23-2007 | 13:36:30 | | 2451 | 7c351e65 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnapServerMain.dfm | 05-23-2008 | 22:04:42 | | 50379 | c76bc287 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnapClient.dpr | 04-22-2006 | 00:08:42 | | 314 | 8751c22b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnapClient.bdsproj | 05-25-2007 | 17:12:08 | | 8389 | 64e1961b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnapClient.dproj | 05-29-2007 | 16:16:46 | | 3435 | b645afa3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnapIsapiServer.dpr | 04-21-2006 | 22:00:50 | | 588 | a1718417 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnapIsapiServer.bdsproj | 05-25-2007 | 17:12:08 | | 8394 | df59b532 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnapIsapiServer.dproj | 05-29-2007 | 16:16:46 | | 3582 | 62ad9211 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnapServer.dpr | 05-23-2007 | 13:36:30 | | 437 | 6b5b288b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnapServer.bdsproj | 05-25-2007 | 17:12:08 | | 8389 | eff3f304 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnapServer.dproj | 05-29-2007 | 16:16:46 | | 3552 | 294b0b69 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnap.Sample.html | 06-29-2006 | 05:44:22 | | 450 | e26dfd76 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnap.bpg | 04-21-2006 | 22:00:50 | | 931 | af39af27 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnap.bdsgroup | 05-25-2007 | 17:12:08 | | 834 | bad36964 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnap.groupproj | 05-29-2007 | 16:16:46 | | 1942 | e6d5be4 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnapClientMain.pas | 06-28-2006 | 02:08:02 | | 3295 | 15836f58 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnapISAPIServerMain.pas | 04-21-2006 | 22:00:50 | | 521 | 74ba5549 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\DataSnap\DataSnapServerData.pas | 06-28-2006 | 02:08:02 | | 1602 | 42fc21e1 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransferClientMain.dfm | 05-23-2008 | 22:04:42 | | 2188 | 5263b0e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransferServerData.dfm | 05-23-2008 | 22:04:42 | | 810 | fcd4035e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransferServerMain.dfm | 05-23-2008 | 22:04:42 | | 1619 | 19f7f60f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransferService_Impl.dfm | 04-21-2006 | 22:00:50 | | 316 | a691b8a8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransferClient.dpr | 04-21-2006 | 22:00:50 | | 601 | c35fab3f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransferClient.bdsproj | 05-25-2007 | 17:12:08 | | 8401 | 39fb6ab6 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransferClient.dproj | 05-29-2007 | 16:16:46 | | 3659 | 79aedd3a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransferServer.dpr | 04-21-2006 | 22:00:50 | | 1260 | 80907c1c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransferServer.bdsproj | 05-25-2007 | 17:12:08 | | 8401 | 4ef3fa44 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransferServer.dproj | 05-29-2007 | 16:16:46 | | 3922 | c701be9a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransfer.Sample.html | 06-29-2006 | 11:07:44 | | 1061 | 5edbf2de +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransferLibrary.rodl | 04-21-2006 | 22:00:50 | | 2042 | f6cf27f2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransfer.bpg | 04-21-2006 | 22:00:50 | | 917 | 382b179b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransfer.bdsgroup | 05-25-2007 | 17:12:08 | | 795 | fdcabdde +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransfer.groupproj | 05-29-2007 | 16:16:46 | | 1716 | 14580fc3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransferClientDownloadThread.pas | 12-12-2006 | 16:38:56 | | 5614 | 3f297787 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransferClientMain.pas | 06-29-2006 | 12:10:34 | | 6730 | d8877ad3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransferClientUploadThread.pas | 01-12-2007 | 17:03:22 | | 6077 | dfc7137b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransferLibrary_Intf.pas | 06-28-2006 | 12:48:30 | | 7224 | f5545d3c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransferLibrary_Invk.pas | 04-21-2006 | 22:00:50 | | 4675 | feda1613 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransferServerData.pas | 06-28-2006 | 12:48:30 | | 915 | acf5730a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransferServerMain.pas | 06-29-2006 | 12:10:34 | | 1501 | 1131f900 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransferService_Impl.pas | 06-28-2006 | 12:48:30 | | 3562 | a82b63c9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransferClient.res | 04-21-2006 | 22:00:50 | | 22748 | ab21813 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ExtendedFileTransferServer.res | 04-21-2006 | 22:00:50 | | 22748 | 9880fe42 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\RODLFILE.res | 04-21-2006 | 22:00:50 | | 2122 | c3f7ba9c +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\DownloadFiles +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\DownloadFiles\create.dir +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ServerFiles +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Extended File Transfer\ServerFiles\create.dir +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\First Sample +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\First Sample\FirstSampleService_Impl.dfm | 03-27-2006 | 16:21:00 | | 136 | 1152cd98 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\First Sample\FirstSampleClient.dpr | 03-27-2006 | 16:50:28 | | 336 | db8b9bd4 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\First Sample\FirstSampleClient.bdsproj | 05-25-2007 | 17:12:08 | | 8392 | f2dbf45d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\First Sample\FirstSampleClient.dproj | 05-29-2007 | 16:16:46 | | 3506 | 6c9ed85 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\First Sample\FirstSampleServer.dpr | 03-27-2006 | 16:50:28 | | 622 | 4e9b285 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\First Sample\FirstSampleServer.bdsproj | 05-25-2007 | 17:12:08 | | 8392 | 66498e4a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\First Sample\FirstSampleServer.dproj | 05-29-2007 | 16:16:46 | | 3677 | 6b9e25d5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\First Sample\FirstSample.Sample.html | 04-19-2006 | 17:02:20 | | 1827 | a487b847 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\First Sample\FirstSample.rodl | 03-27-2006 | 16:21:00 | | 1595 | b0838078 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\First Sample\FirstSample.bpg | 03-27-2006 | 16:21:00 | | 863 | 46a2c77c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\First Sample\FirstSample.bdsgroup | 05-25-2007 | 17:12:08 | | 741 | fcd643c5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\First Sample\FirstSample.groupproj | 05-29-2007 | 16:16:46 | | 1554 | 27ee451e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\First Sample\FirstSample_Intf.pas | 03-27-2006 | 16:21:00 | | 4551 | ac8d4205 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\First Sample\FirstSample_Invk.pas | 03-27-2006 | 16:21:00 | | 4440 | 80e9d23e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\First Sample\FirstSampleClientMain.pas | 05-30-2006 | 17:06:10 | | 2066 | a28c596f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\First Sample\FirstSampleServerMain.pas | 04-23-2006 | 02:48:00 | | 3419 | 2319eacf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\First Sample\FirstSampleService_Impl.pas | 04-19-2006 | 17:02:20 | | 3250 | d0906ccf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\First Sample\FirstSampleClient.res | 03-27-2006 | 16:50:28 | | 876 | dd75daa5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\First Sample\FirstSampleServer.res | 03-27-2006 | 16:50:28 | | 876 | dd75daa5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\First Sample\RODLFILE.res | 03-27-2006 | 16:21:00 | | 1675 | 2dc15a9b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\First Sample\FirstSampleClientMain.dfm | 05-17-2006 | 22:03:32 | | 3058 | 8e2f398b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\First Sample\FirstSampleServerMain.dfm | 05-23-2008 | 22:04:42 | | 2937 | e46f243a +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\HTTP Chat +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\HTTP Chat\HTTPChatClientMain.dfm | 05-23-2008 | 22:04:42 | | 4056 | c23dfedd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\HTTP Chat\HTTPChatServerMain.dfm | 05-23-2008 | 22:04:42 | | 3622 | abf2971 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\HTTP Chat\HTTPChatService_Impl.dfm | 04-24-2006 | 17:05:38 | | 307 | 8e66e832 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\HTTP Chat\HTTPChatClient.dpr | 04-24-2006 | 17:05:38 | | 330 | fef6b892 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\HTTP Chat\HTTPChatClient.bdsproj | 05-25-2007 | 17:12:08 | | 8389 | eb9ab432 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\HTTP Chat\HTTPChatClient.dproj | 05-29-2007 | 16:16:46 | | 3435 | ed3871cb +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\HTTP Chat\HTTPChatServer.dpr | 04-24-2006 | 17:05:38 | | 622 | 14469723 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\HTTP Chat\HTTPChatServer.bdsproj | 05-25-2007 | 17:12:08 | | 8389 | 4a0fa1e9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\HTTP Chat\HTTPChatServer.dproj | 05-29-2007 | 16:16:46 | | 3661 | 2ba21947 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\HTTP Chat\HTTPChat.Sample.html | 06-27-2006 | 13:57:56 | | 1087 | 95ee99fb +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\HTTP Chat\HTTPChatLibrary.rodl | 04-24-2006 | 17:05:38 | | 3714 | 5ae0c36f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\HTTP Chat\HTTPChat.bpg | 04-24-2006 | 17:05:38 | | 845 | ee47f7a8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\HTTP Chat\HTTPChat.bdsgroup | 05-25-2007 | 17:12:08 | | 723 | 49ae321b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\HTTP Chat\HTTPChat.groupproj | 05-29-2007 | 16:16:46 | | 1500 | 98d48d16 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\HTTP Chat\HTTPChatClientMain.pas | 07-14-2006 | 12:49:06 | | 8032 | 355838ad +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\HTTP Chat\HTTPChatLibrary_Intf.pas | 04-24-2006 | 17:05:38 | | 20759 | cccf53e5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\HTTP Chat\HTTPChatLibrary_Invk.pas | 04-24-2006 | 17:05:38 | | 4289 | 7882a86f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\HTTP Chat\HTTPChatServerMain.pas | 04-24-2006 | 17:05:38 | | 4623 | 6afe478f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\HTTP Chat\HTTPChatService_Impl.pas | 04-24-2006 | 17:06:58 | | 4752 | 665685f5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\HTTP Chat\HTTPChatClient.res | 04-24-2006 | 17:05:38 | | 22748 | ab21813 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\HTTP Chat\HTTPChatServer.res | 04-24-2006 | 17:05:38 | | 22748 | b8aec145 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoISAPI.res | 04-21-2006 | 21:47:26 | | 876 | 483416c3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoServer.res | 04-21-2006 | 21:47:26 | | 23724 | 358994b2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\RODLFile.RES | 04-21-2006 | 21:47:26 | | 5085 | d0d904f4 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoClientMain.dfm | 03-31-2008 | 17:01:12 | | 30815 | 87ff18df +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoISAPIMain.dfm | 04-21-2006 | 21:47:26 | | 986 | 7a404030 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoServerMain.dfm | 05-23-2008 | 22:04:42 | | 44167 | 7c63f6ee +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoService_Impl.dfm | 12-05-2006 | 13:38:54 | | 177 | e33bc8cd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoClient.dpr | 04-21-2006 | 21:47:26 | | 378 | f957e04d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoClient.bdsproj | 05-25-2007 | 17:12:08 | | 8389 | 3ea7b0f0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoClient.dproj | 05-29-2007 | 16:16:46 | | 3491 | 1bdaa565 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoISAPI.dpr | 04-21-2006 | 21:47:26 | | 872 | dd546aad +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoISAPI.bdsproj | 05-25-2007 | 17:12:08 | | 8388 | 210b432f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoISAPI.dproj | 05-29-2007 | 16:16:46 | | 3651 | 9c14862e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoServer.dpr | 04-26-2006 | 14:25:04 | | 666 | 268a8936 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoServer.bdsproj | 05-25-2007 | 17:12:08 | | 8388 | 75c39234 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoServer.dproj | 05-29-2007 | 16:16:46 | | 3419 | 193be3fc +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemo.Sample.html | 04-23-2007 | 12:35:28 | | 2005 | f7071e14 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoLibrary.rodl | 04-21-2006 | 21:47:26 | | 5005 | 8ce21a9e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemo.bpg | 04-21-2006 | 21:47:26 | | 913 | a68ed935 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemo.bdsgroup | 05-25-2007 | 17:12:08 | | 816 | b2e81e1f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemo.groupproj | 05-29-2007 | 16:16:46 | | 1888 | 6bfe9ff8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoClientMain.pas | 03-31-2008 | 17:01:12 | | 55201 | 23afb636 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoCustomClass.pas | 04-23-2007 | 12:35:28 | | 1921 | 1a2cab74 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoISAPIMain.pas | 04-21-2006 | 21:47:26 | | 542 | 4150b3ed +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoLibrary_Intf.pas | 03-31-2008 | 17:01:12 | | 33630 | 65b513c3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoLibrary_Invk.pas | 03-31-2008 | 17:01:12 | | 15505 | 25e1c866 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoServerMain.pas | 05-23-2008 | 13:03:28 | | 20551 | 41452617 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoService_Impl.pas | 12-05-2006 | 13:38:54 | | 5057 | e29a2f3a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\MegaDemo\MegaDemoClient.res | 04-21-2006 | 21:47:26 | | 22748 | ab21813 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannel_ServerMain.pas | 08-28-2007 | 15:40:44 | | 5996 | 421bd803 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannelLibrary_Intf.pas | 08-28-2007 | 15:40:44 | | 2762 | ebea3eea +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannelLibrary_Invk.pas | 08-28-2007 | 15:40:44 | | 1823 | 9ce2589f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannelService_Impl.pas | 04-26-2006 | 14:53:12 | | 1362 | 2c284490 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannel_Client.res | 04-26-2006 | 14:53:12 | | 22748 | ab21813 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannel_DLLServer.res | 04-26-2006 | 14:53:12 | | 876 | d795f11f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannel_Server.res | 04-26-2006 | 14:53:12 | | 23724 | 358994b2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannel_ClientData.dfm | 04-26-2006 | 14:53:12 | | 484 | fe120d71 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannel_ClientMain.dfm | 05-23-2008 | 22:04:42 | | 4630 | 90f49851 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannel_ServerMain.dfm | 05-23-2008 | 22:04:42 | | 6626 | bdc2b8ea +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannel_Client.dpr | 04-26-2006 | 14:53:12 | | 540 | 6fb162af +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannel_Client.bdsproj | 05-25-2007 | 17:12:08 | | 8394 | e2ffee59 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannel_Client.dproj | 05-29-2007 | 16:16:46 | | 3592 | 6758ebc9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannel_DLLServer.dpr | 04-26-2006 | 14:53:12 | | 752 | 98b19d6c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannel_DLLServer.bdsproj | 05-25-2007 | 17:12:08 | | 8397 | 2d3bb92a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannel_DLLServer.dproj | 05-29-2007 | 16:16:46 | | 3533 | ffe4175e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannel_Server.dpr | 04-26-2006 | 14:53:12 | | 634 | 44dec486 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannel_Server.bdsproj | 05-25-2007 | 17:12:08 | | 8393 | 7391f66a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannel_Server.dproj | 05-29-2007 | 16:16:46 | | 3647 | 604bf35d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannel.Sample.html | 08-28-2007 | 15:40:44 | | 1719 | 8f397029 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannelLibrary.rodl | 04-26-2006 | 14:53:12 | | 674 | 96daa98b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannel.bpg | 04-26-2006 | 14:53:12 | | 970 | 3b881d46 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannel.bdsgroup | 05-25-2007 | 17:12:08 | | 873 | a9530172 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannel.groupproj | 05-29-2007 | 16:16:46 | | 2059 | b0cf8117 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannel_ClientData.pas | 04-26-2006 | 14:53:12 | | 1181 | 1b030990 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Multi Channel\MultiChannel_ClientMain.pas | 08-28-2007 | 15:40:44 | | 4127 | 5d477a8b +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServer_Client.res | 04-21-2006 | 22:00:50 | | 23460 | 92e057f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServer_MainServer.res | 04-21-2006 | 22:00:50 | | 23460 | 98e0e797 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServer_ProxyServer.res | 04-21-2006 | 22:00:50 | | 23460 | 98e0e797 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\RODLFILE.res | 04-21-2006 | 22:00:50 | | 1775 | c321a7ed +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServer_Client_Main.dfm | 05-23-2008 | 22:04:42 | | 1825 | 6e75767d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServer_MainServer_Main.dfm | 05-23-2008 | 22:04:42 | | 909 | 6b58c17b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServer_ProxyServer_Main.dfm | 04-21-2006 | 22:00:50 | | 961 | 5d8699c9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServer_Client.dpr | 04-21-2006 | 22:00:50 | | 348 | 62313c1e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServer_Client.bdsproj | 05-25-2007 | 17:12:08 | | 8392 | 4b5d3ff3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServer_Client.dproj | 05-29-2007 | 16:16:46 | | 3460 | 8a5d75f7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServer_MainServer.dpr | 04-21-2006 | 22:00:50 | | 682 | 9397013d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServer_MainServer.bdsproj | 05-25-2007 | 17:12:08 | | 8396 | 684f9f13 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServer_MainServer.dproj | 05-29-2007 | 16:16:46 | | 3676 | b626780a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServer_ProxyServer.dpr | 04-21-2006 | 22:00:50 | | 455 | cda8c474 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServer_ProxyServer.bdsproj | 05-25-2007 | 17:12:08 | | 8397 | 5c66ee8e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServer_ProxyServer.dproj | 05-29-2007 | 16:16:46 | | 3555 | bf1c9c95 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServer.Sample.html | 06-26-2006 | 13:12:12 | | 1263 | 2e2c6279 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServerMainLibrary.rodl | 04-21-2006 | 22:00:50 | | 1695 | bb61173 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServer.bpg | 04-21-2006 | 22:00:50 | | 979 | 5e269229 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServer.bdsgroup | 05-25-2007 | 17:12:08 | | 882 | 3d97a4a9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServer.groupproj | 05-29-2007 | 16:16:46 | | 2086 | eb0273b0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServer_Client_Main.pas | 04-21-2006 | 22:00:50 | | 2087 | 81d8b1a2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServer_MainServer_Main.pas | 04-21-2006 | 22:00:50 | | 882 | c0a56925 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServer_ProxyServer_Impl.pas | 06-26-2006 | 12:13:06 | | 3220 | f4204377 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServer_ProxyServer_Main.pas | 04-21-2006 | 22:00:50 | | 995 | 23eb98 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServerMainLibrary_Intf.pas | 04-21-2006 | 22:00:50 | | 5837 | c0e0db99 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServerMainLibrary_Invk.pas | 04-21-2006 | 22:00:50 | | 3960 | 446bc71a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Proxy Server\ProxyServerMainService_Impl.pas | 04-21-2006 | 22:00:50 | | 1874 | d1203b0e +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Service Discovery +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Service Discovery\ServiceDiscoveryMain.dfm | 05-23-2008 | 22:04:42 | | 5962 | 844dc044 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Service Discovery\ServiceDiscoveryMain.pas | 07-28-2006 | 12:18:32 | | 5879 | 96244e36 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Service Discovery\RODLFILE.res | 08-11-2003 | 18:10:06 | | 1233 | 11366909 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Service Discovery\ServiceDiscovery.dpr | 06-22-2006 | 19:05:00 | | 335 | d93d2659 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Service Discovery\ServiceDiscovery.bdsproj | 05-25-2007 | 17:12:08 | | 8391 | 880860f1 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Service Discovery\ServiceDiscovery.dproj | 05-29-2007 | 16:16:46 | | 3447 | 19461b56 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Service Discovery\ServiceDiscovery.res | 06-22-2006 | 19:05:00 | | 22748 | a6c8709c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Service Discovery\ServiceDiscovery.Sample.html | 06-26-2006 | 14:19:26 | | 766 | 19fd5fdf +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypesService_Impl.pas | 06-26-2006 | 17:03:58 | | 3421 | ac3f679b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\RODLFILE.res | 06-06-2006 | 00:00:06 | | 2414 | 9fe1547c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypes_Client.res | 06-06-2006 | 00:00:06 | | 22748 | ab21813 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypes_Server.res | 06-06-2006 | 00:00:06 | | 22748 | 5ac86f48 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\LoginService_Impl.dfm | 06-06-2006 | 00:00:06 | | 124 | 32ea6995 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypes_ClientMain.dfm | 05-23-2008 | 22:04:42 | | 3774 | 703923f0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypes_Server_DBSessionManager.dfm | 06-26-2006 | 17:03:58 | | 4009 | cb30ca18 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypes_ServerMain.dfm | 05-23-2008 | 22:04:42 | | 3848 | 4e60f6f8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypesService_Impl.dfm | 06-06-2006 | 00:00:06 | | 138 | 4416762f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypes_Client.dpr | 06-22-2006 | 18:07:38 | | 354 | 272a299b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypes_Client.bdsproj | 05-25-2007 | 17:12:08 | | 8394 | 23d4b218 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypes_Client.dproj | 05-29-2007 | 16:16:46 | | 3465 | 3cfd8184 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypes_Server.dpr | 02-05-2007 | 19:22:12 | | 1015 | b36c19c5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypes_Server.bdsproj | 05-25-2007 | 17:12:08 | | 8394 | 4983b340 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypes_Server.dproj | 05-29-2007 | 16:16:46 | | 3966 | 7f9ef0a6 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypes.Sample.html | 06-23-2006 | 12:08:16 | | 2052 | 33b83a6a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypes Create Session Table.sql | 06-06-2006 | 00:00:06 | | 351 | f2b14a0c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypesLibrary.rodl | 06-06-2006 | 00:00:06 | | 2334 | b8ea53de +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypes.bpg | 06-06-2006 | 00:00:06 | | 875 | 5ddae631 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypes.bdsgroup | 05-25-2007 | 17:12:08 | | 753 | c8beb8f9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypes.groupproj | 05-29-2007 | 16:16:46 | | 1590 | 5e7ce81a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\LoginService_Impl.pas | 06-06-2006 | 00:00:06 | | 2933 | 6fac7acd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypes_ClientMain.pas | 06-26-2006 | 13:38:28 | | 2896 | 4a03cfc1 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypes_Server_DBSessionManager.pas | 06-22-2006 | 18:07:38 | | 715 | 5da68cb1 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypes_ServerMain.pas | 09-17-2007 | 15:12:38 | | 8902 | ebafdfab +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypesLibrary_Intf.pas | 06-06-2006 | 00:00:06 | | 6466 | a8c0b11b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Session Types\SessionTypesLibrary_Invk.pas | 06-06-2006 | 00:00:06 | | 6085 | c939878 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\SuperTCPChannelChat_Server.res | 04-21-2006 | 19:17:52 | | 22748 | 9880fe42 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\ChatServerService_Impl.dfm | 04-21-2006 | 19:17:52 | | 306 | 78c64ebb +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\LoginService_Impl.dfm | 04-21-2006 | 19:17:52 | | 270 | f057e2a3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\SuperTCPChannelChat_ClientMain.dfm | 05-23-2008 | 22:04:42 | | 2525 | eb12f20f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\SuperTCPChannelChat_ServerMain.dfm | 10-10-2007 | 13:13:22 | | 1291 | f7a49d11 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\SuperTCPChannelChat_Client.dpr | 04-21-2006 | 19:17:52 | | 358 | 253cff1a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\SuperTCPChannelChat_Client.bdsproj | 05-25-2007 | 17:12:08 | | 8401 | 2b0832e7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\SuperTCPChannelChat_Client.dproj | 05-29-2007 | 16:16:46 | | 3507 | 126cbbfa +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\SuperTCPChannelChat_Server.dpr | 04-21-2006 | 19:17:52 | | 849 | c8660929 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\SuperTCPChannelChat_Server.bdsproj | 05-25-2007 | 17:12:08 | | 8401 | 610111ed +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\SuperTCPChannelChat_Server.dproj | 05-29-2007 | 16:16:46 | | 3865 | 702df497 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\SuperTCPChannelChat.Sample.html | 06-27-2006 | 14:54:02 | | 882 | b73f1b52 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\SuperTCPChannelChatLibrary.rodl | 04-25-2006 | 17:50:06 | | 2743 | 122f4946 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\SuperTCPChannelChat.bpg | 04-21-2006 | 19:17:52 | | 917 | 66912271 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\SuperTCPChannelChat.bdsgroup | 05-25-2007 | 17:12:08 | | 795 | 2d5f9084 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\SuperTCPChannelChat.groupproj | 05-29-2007 | 16:16:46 | | 1716 | 82bf135a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\ChatServerService_Impl.pas | 02-05-2008 | 19:02:40 | | 2361 | bf0f0d45 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\LoginService_Impl.pas | 02-05-2008 | 19:02:40 | | 3072 | 69296314 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\SuperTCPChannelChat_ClientMain.pas | 06-27-2006 | 19:16:20 | | 5666 | 260056d1 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\SuperTCPChannelChat_ServerMain.pas | 10-10-2007 | 13:13:22 | | 2414 | 745463a5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\SuperTCPChannelChatLibrary_Intf.pas | 10-10-2007 | 13:13:22 | | 11882 | 9a2ba7e7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\SuperTCPChannelChatLibrary_Invk.pas | 10-10-2007 | 13:13:22 | | 4401 | 184b93cf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\RODLFILE.res | 04-25-2006 | 17:50:06 | | 2823 | b1b817e7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Super TCP Channel Chat\SuperTCPChannelChat_Client.res | 04-21-2006 | 19:17:52 | | 22748 | a6c8709c +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories\SingletonService_Impl.pas | 04-11-2004 | 14:50:46 | | 1026 | bdda303d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories\SingleCallService_Impl.pas | 06-27-2006 | 19:59:36 | | 984 | ee851bfb +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories\RODLFile.RES | 06-27-2006 | 19:59:36 | | 2344 | b28394f1 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories\PooledService_Impl.pas | 06-27-2006 | 19:59:36 | | 1086 | e3d6491f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories\ClassFactoryClientMain.pas | 06-27-2006 | 19:59:36 | | 2449 | 7cbd4d47 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories\ClassFactoryClientMain.dfm | 05-23-2008 | 22:04:42 | | 3886 | 74ed0aac +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories\ClassFactories.Sample.html | 06-29-2006 | 12:41:08 | | 1782 | 2a889f32 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories\ClassFactoryServerMain.pas | 06-27-2006 | 19:59:36 | | 893 | 64337583 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories\ClassFactoryServerMain.dfm | 05-23-2008 | 22:04:42 | | 1033 | fc957de2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories\ClassFactoryServer.res | 10-18-2007 | 17:57:16 | | 23696 | 6d2620c8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories\ClassFactoryServer.dpr | 10-18-2007 | 17:57:16 | | 733 | b3ad8c9a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories\ClassFactoryServer.bdsproj | 05-25-2007 | 17:12:08 | | 8392 | 6556a4af +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories\ClassFactoryServer.dproj | 05-29-2007 | 16:16:46 | | 3752 | dcda899f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories\ClassFactoryLibrary_Invk.pas | 06-27-2006 | 19:59:36 | | 5685 | c0e8cfbd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories\ClassFactoryLibrary_Intf.pas | 06-27-2006 | 19:59:36 | | 6971 | b6a2c4e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories\ClassFactoryLibrary.RODL | 06-27-2006 | 19:59:36 | | 2264 | 14f71e45 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories\ClassFactoryClient.res | 03-28-2006 | 13:24:36 | | 22748 | ab21813 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories\ClassFactoryClient.dpr | 03-28-2006 | 13:24:36 | | 358 | 516f1074 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories\ClassFactoryClient.bdsproj | 05-25-2007 | 17:12:08 | | 8393 | a538cd47 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories\ClassFactoryClient.dproj | 05-29-2007 | 16:16:46 | | 3520 | 3891a138 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories\ClassFactories.bpg | 06-27-2006 | 19:59:36 | | 869 | 73b63fcc +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories\ClassFactories.bdsgroup | 05-25-2007 | 17:12:08 | | 747 | 12f840bd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Class Factories\ClassFactories.groupproj | 05-29-2007 | 16:16:46 | | 1572 | 66abd4ee +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dispatch Notifier +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dispatch Notifier\DispatchNotifierClient.res | 04-21-2006 | 22:00:50 | | 23752 | 96821486 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dispatch Notifier\DispatchNotifierServer.res | 04-21-2006 | 22:00:50 | | 22748 | 14d4a9ca +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dispatch Notifier\RODLFile.RES | 04-21-2006 | 22:00:50 | | 937 | f222f8a2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dispatch Notifier\DispatchNotifierClientMain.dfm | 05-23-2008 | 22:04:42 | | 1751 | 4862e361 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dispatch Notifier\DispatchNotifierServerMain.dfm | 05-23-2008 | 22:04:42 | | 1382 | 21bdb27f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dispatch Notifier\DispatchNotifierClient.dpr | 04-21-2006 | 22:00:50 | | 319 | f950b058 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dispatch Notifier\DispatchNotifierClient.bdsproj | 05-25-2007 | 17:12:08 | | 8396 | 54180f71 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dispatch Notifier\DispatchNotifierClient.dproj | 05-29-2007 | 16:16:46 | | 3482 | 5ad67acf +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dispatch Notifier\DispatchNotifierServer.dpr | 04-21-2006 | 22:00:50 | | 631 | dd2b21f8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dispatch Notifier\DispatchNotifierServer.bdsproj | 05-25-2007 | 17:12:08 | | 8397 | 2b05eed9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dispatch Notifier\DispatchNotifierServer.dproj | 05-29-2007 | 16:16:46 | | 3678 | ab8e7b08 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dispatch Notifier\DispatchNotifier.Sample.html | 06-27-2006 | 13:45:36 | | 1004 | 8e6ae02 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dispatch Notifier\DispatchNotifierLibrary.rodl | 04-21-2006 | 22:00:50 | | 857 | 1980f353 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dispatch Notifier\DispatchNotifier.bpg | 04-21-2006 | 22:00:50 | | 893 | b7af5d3c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dispatch Notifier\DispatchNotifier.bdsgroup | 05-25-2007 | 17:12:08 | | 771 | 6dca8732 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dispatch Notifier\DispatchNotifier.groupproj | 05-29-2007 | 16:16:46 | | 1644 | e17d4e3c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dispatch Notifier\DispatchNotifierClientMain.pas | 04-21-2006 | 22:00:50 | | 1260 | 6ad7dec +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dispatch Notifier\DispatchNotifierLibrary_Intf.pas | 04-21-2006 | 22:00:50 | | 2755 | 37b19a0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dispatch Notifier\DispatchNotifierLibrary_Invk.pas | 04-21-2006 | 22:00:50 | | 1795 | 8f82af1f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dispatch Notifier\DispatchNotifierServerMain.pas | 05-17-2006 | 19:02:14 | | 1295 | c22a8943 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dispatch Notifier\DispatchNotifierService_Impl.pas | 06-27-2006 | 13:04:00 | | 5114 | 7f0cc17f +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dynamic Request +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dynamic Request\DynamicRequestClient.res | 04-21-2006 | 22:00:50 | | 22748 | ab21813 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dynamic Request\DynamicRequestServer.res | 04-21-2006 | 22:00:50 | | 22748 | 5ac86f48 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dynamic Request\RODLFile.RES | 04-21-2006 | 22:00:50 | | 2164 | d19dd717 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dynamic Request\DynamicRequestClientMain.dfm | 05-23-2008 | 22:04:42 | | 2869 | 635cb96e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dynamic Request\DynamicRequestServerMain.dfm | 05-23-2008 | 22:04:42 | | 932 | fda20638 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dynamic Request\DynamicRequestClient.dpr | 04-21-2006 | 22:00:50 | | 357 | 6f318736 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dynamic Request\DynamicRequestClient.bdsproj | 05-25-2007 | 17:12:08 | | 8395 | d2ac705c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dynamic Request\DynamicRequestClient.dproj | 05-29-2007 | 16:16:46 | | 3471 | 284c8c82 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dynamic Request\DynamicRequestServer.dpr | 04-21-2006 | 22:00:50 | | 655 | e1a64f90 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dynamic Request\DynamicRequestServer.bdsproj | 05-25-2007 | 17:12:08 | | 8395 | 643a4d87 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dynamic Request\DynamicRequestServer.dproj | 05-29-2007 | 16:16:46 | | 3660 | 19191994 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dynamic Request\DynamicRequest.Sample.html | 06-26-2006 | 11:37:46 | | 1154 | e497961d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dynamic Request\DynamicRequestLibrary.rodl | 04-21-2006 | 22:00:50 | | 2084 | 828a54fb +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dynamic Request\DynamicRequest.bpg | 04-21-2006 | 22:00:50 | | 881 | 1b665247 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dynamic Request\DynamicRequest.bdsgroup | 05-25-2007 | 17:12:08 | | 759 | 4e609930 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dynamic Request\DynamicRequest.groupproj | 05-29-2007 | 16:16:46 | | 1608 | 1060d47d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dynamic Request\DynamicRequestClientMain.pas | 06-07-2007 | 19:18:58 | | 2900 | d0e0109a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dynamic Request\DynamicRequestLibrary_Intf.pas | 04-21-2006 | 22:00:50 | | 6010 | 5fdb6261 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dynamic Request\DynamicRequestLibrary_Invk.pas | 04-21-2006 | 22:00:50 | | 3949 | bc346d43 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dynamic Request\DynamicRequestServerMain.pas | 06-27-2006 | 18:18:12 | | 787 | 55792a7e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Dynamic Request\DynamicRequestService_Impl.pas | 04-21-2006 | 22:00:50 | | 1972 | 9033c9cf +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server\TimeServer_ClientMain.dfm | 05-23-2008 | 22:04:42 | | 1457 | ed042424 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server\TimeServer_ServerMain.dfm | 06-27-2006 | 12:21:36 | | 1302 | ae6cc604 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server\TimeServer.dpr | 04-21-2006 | 22:00:50 | | 542 | 7d667549 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server\TimeServer.bdsproj | 05-25-2007 | 17:12:08 | | 8385 | 7866e466 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server\TimeServer.dproj | 05-29-2007 | 16:16:46 | | 3581 | 9e29961 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server\TimeServer_Client.dpr | 04-21-2006 | 22:00:50 | | 373 | 10a750ac +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server\TimeServer_Client.bdsproj | 05-25-2007 | 17:12:08 | | 8391 | 2b842348 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server\TimeServer_Client.dproj | 05-29-2007 | 16:16:46 | | 3504 | 25e5588 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server\TimeServerGroup.Sample.html | 06-26-2006 | 20:32:22 | | 467 | 54ecfae1 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server\TimeServer.rodl | 10-24-2006 | 15:40:22 | | 1147 | eb4e22c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server\TimeServerGroup.bpg | 04-21-2006 | 22:00:50 | | 842 | b6041d43 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server\TimeServerGroup.bdsgroup | 05-25-2007 | 17:12:08 | | 720 | ad39a29a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server\TimeServerGroup.groupproj | 05-29-2007 | 16:16:46 | | 1491 | 632a5bb8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server\TfrmServerSelectSrc.pas | 04-21-2006 | 22:00:50 | | 2517 | 508ceed0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server\TimeServer_ClientMain.pas | 06-27-2006 | 12:21:36 | | 1278 | e42d9801 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server\TimeServer_Impl.pas | 04-21-2006 | 22:00:50 | | 1497 | 72e65940 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server\TimeServer_Intf.pas | 04-21-2006 | 22:00:50 | | 3042 | bb449283 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server\TimeServer_Invk.pas | 04-21-2006 | 22:00:50 | | 2500 | 903786b8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server\TimeServer_ServerMain.pas | 06-27-2006 | 12:21:36 | | 1165 | c09b5c8c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server\RODLFILE.res | 04-21-2006 | 22:00:50 | | 1207 | c1267b38 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server\TimeServer.res | 04-21-2006 | 22:00:50 | | 22748 | 14d4a9ca +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server\TimeServer_Client.res | 04-21-2006 | 22:00:50 | | 23752 | 96821486 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Time Server\TfrmServerSelectSrc.dfm | 04-21-2006 | 22:00:50 | | 1145 | 4e62f37e +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Variants +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Variants\VariantsClientMain.dfm | 05-30-2006 | 17:06:10 | | 1583 | bd960831 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Variants\VariantsServerMain.dfm | 05-23-2008 | 22:04:42 | | 1228 | 8741aadd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Variants\VariantsClient.dpr | 04-21-2006 | 22:00:50 | | 286 | f7c59a8a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Variants\VariantsClient.bdsproj | 05-25-2007 | 17:12:08 | | 8389 | 153ed42 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Variants\VariantsClient.dproj | 05-29-2007 | 16:16:46 | | 3435 | e64f9915 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Variants\VariantsServer.dpr | 04-21-2006 | 22:00:50 | | 542 | 5f5cdee4 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Variants\VariantsServer.bdsproj | 05-25-2007 | 17:12:08 | | 8388 | f5d45a0e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Variants\VariantsServer.dproj | 05-29-2007 | 16:16:46 | | 3605 | 9152030b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Variants\VariantsGroup.Sample.html | 06-26-2006 | 11:37:46 | | 987 | 65bab1ad +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Variants\VariantsLibrary.rodl | 04-21-2006 | 22:00:50 | | 1908 | 69ac7181 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Variants\VariantsGroup.bpg | 04-21-2006 | 22:00:50 | | 845 | 85aad375 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Variants\VariantsGroup.bdsgroup | 05-25-2007 | 17:12:08 | | 723 | 73c67975 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Variants\VariantsGroup.groupproj | 05-29-2007 | 16:16:46 | | 1500 | f2ad60ff +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Variants\VariantsClientMain.pas | 05-30-2006 | 17:06:10 | | 6589 | 2d22299b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Variants\VariantsLibrary_Intf.pas | 04-21-2006 | 22:00:50 | | 9556 | d2a15afe +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Variants\VariantsLibrary_Invk.pas | 04-21-2006 | 22:00:50 | | 4579 | de754769 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Variants\VariantsServerMain.pas | 04-21-2006 | 22:00:50 | | 832 | a8570c9b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Variants\VariantsService_Impl.pas | 04-21-2006 | 22:00:50 | | 1940 | 15ebb708 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Variants\RODLFILE.res | 04-21-2006 | 22:00:50 | | 1988 | 2b045a80 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Variants\VariantsClient.res | 04-21-2006 | 22:00:50 | | 22748 | ab21813 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Variants\VariantsServer.res | 04-21-2006 | 22:00:50 | | 23724 | 358994b2 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\FPC Server +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\FPC Server\NewLibrary_Async.pas | 06-06-2007 | 18:48:54 | | 3312 | 535fd9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\FPC Server\NewLibrary_Intf.pas | 06-06-2007 | 18:48:54 | | 3221 | d7a84d38 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\FPC Server\NewLibrary_Invk.pas | 06-06-2007 | 18:48:54 | | 2643 | eb241b2d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\FPC Server\NewService_Impl.pas | 06-06-2007 | 18:48:54 | | 1440 | 1cf11f01 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\FPC Server\RODLFILE.res | 06-06-2007 | 18:48:54 | | 1252 | 62a99134 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\FPC Server\SimpleClient.pas | 06-06-2007 | 18:48:54 | | 1078 | fd5aeb4c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\FPC Server\SimpleServer.pas | 06-06-2007 | 18:48:54 | | 884 | 965ab5e7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\FPC Server\SimpleServer.res | 06-06-2007 | 18:48:54 | | 22748 | 34fa96cd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\FPC Server\NewLibrary.RODL | 06-06-2007 | 18:48:54 | | 1172 | a40ccbd9 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes\NamedPipeServerMain.dfm | 06-03-2006 | 14:18:22 | | 610 | 96997373 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes\NamedPipeClient.dpr | 06-08-2006 | 03:04:46 | | 338 | 631153ea +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes\NamedPipeClient.bdsproj | 05-25-2007 | 17:12:08 | | 8390 | adf6fe48 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes\NamedPipeClient.dproj | 05-29-2007 | 16:16:46 | | 3441 | 5f69df6e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes\NamedPipeServer.dpr | 06-08-2006 | 03:04:46 | | 609 | c7f00fe +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes\NamedPipeServer.bdsproj | 05-25-2007 | 17:12:08 | | 8390 | 6e7f6aa1 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes\NamedPipeServer.dproj | 05-29-2007 | 16:16:46 | | 3614 | 14bbeb7b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes\NamedPipeGroup.Sample.html | 06-27-2006 | 17:57:44 | | 778 | 5108701f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes\NamedPipeLibrary.rodl | 06-08-2006 | 03:04:46 | | 1242 | 9f2c46b2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes\NamedPipeGroup.bpg | 06-03-2006 | 14:16:38 | | 851 | 751af4f8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes\NamedPipeGroup.bdsgroup | 05-25-2007 | 17:12:08 | | 729 | 1b786781 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes\NamedPipeGroup.groupproj | 05-29-2007 | 16:16:46 | | 1518 | 6b44b807 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes\NamedPipeClientMain.pas | 06-08-2006 | 03:04:46 | | 1796 | b3704dc6 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes\NamedPipeClientMain.dfm | 05-23-2008 | 22:04:42 | | 1654 | 8512858e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes\NamedPipeLibrary_Intf.pas | 06-08-2006 | 03:04:46 | | 3450 | 22205f2b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes\NamedPipeLibrary_Invk.pas | 06-08-2006 | 03:04:46 | | 3164 | cae4d7df +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes\NamedPipeServerMain.pas | 06-03-2006 | 14:18:22 | | 1619 | 24e4e96d +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes\NamedPipeService_Impl.pas | 06-08-2006 | 03:04:46 | | 1640 | 5f7195a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes\NamedPipeClient.res | 06-08-2006 | 03:04:46 | | 22748 | ab21813 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes\NamedPipeServer.res | 06-08-2006 | 03:04:46 | | 22748 | 9880fe42 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes\RODLFILE.res | 06-08-2006 | 03:04:46 | | 1322 | f261f79b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes\install_service.cmd | 06-26-2006 | 19:08:10 | | 62 | bb836ea2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\Named Pipes\uninstall_service.cmd | 06-26-2006 | 19:08:10 | | 65 | b751f1a9 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\RODL +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\RODL\RODLMain.dfm | 07-17-2006 | 12:39:34 | | 3010 | dac13340 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\RODL\RODL.dpr | 04-06-2006 | 02:33:00 | | 211 | 2ad324e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\RODL\RODL.bdsproj | 05-25-2007 | 17:12:08 | | 8379 | c13bf6b1 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\RODL\RODL.dproj | 05-29-2007 | 16:16:46 | | 3375 | 166668 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\RODL\RODL.Sample.html | 12-08-2006 | 11:19:44 | | 1072 | e09c999f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\RODL\RODLMain.pas | 04-14-2008 | 15:21:34 | | 10223 | fd67e8a7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples\RODL\RODL.res | 04-06-2006 | 02:33:00 | | 3372 | 20e772fd +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\Config.ini | 03-30-2006 | 06:05:54 | | 121 | cbc6ac8 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\TemplateOptions.ini | 10-17-2007 | 11:35:14 | | 463 | 93a62050 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\$svclibname.rodl | 04-08-2004 | 19:57:18 | | 1007 | fc2a22bb +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\_BDS +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\_BDS\Server +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\_BDS\Server\$PRJNAME.bdsproj | 11-24-2004 | 21:55:18 | | 8205 | b6c69788 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\_BDS\Client +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\_BDS\Client\$PRJNAMEClient.bdsproj | 11-24-2004 | 21:55:18 | | 8211 | 1cb444d1 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\_BDS\Client\$PRJNAMEGroup.bdsgroup | 11-22-2007 | 15:05:26 | | 664 | 72f2b298 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\VclExe +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\VclExe\fServerForm.pas | 10-09-2006 | 18:14:28 | | 697 | 1463511b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\VclExe\fServerForm.dfm | 08-13-2003 | 16:07:18 | | 856 | a7ba6d6c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\VclExe\Info.ini | 12-21-2006 | 22:22:06 | | 158 | 98249651 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\VclExe\Icon.ico | 04-09-2004 | 01:37:50 | | 3262 | 64303600 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\VclExe\$PRJNAME.res | 04-09-2004 | 01:49:26 | | 22748 | 34fa96cd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\VclExe\$PRJNAME.dpr | 07-20-2003 | 18:27:24 | | 317 | 19ffefe +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Isapi +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Isapi\Unit1.pas | 10-09-2006 | 18:14:28 | | 347 | 52615b3f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Isapi\Unit1.dfm | 02-24-2003 | 20:12:24 | | 422 | d3a6baa7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Isapi\Info.ini | 03-06-2004 | 14:27:18 | | 110 | ca291550 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Isapi\Icon.ico | 04-09-2004 | 01:35:18 | | 3262 | 8ee81af9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Isapi\$PRJNAME.res | 04-09-2004 | 17:46:56 | | 22748 | 34fa96cd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Isapi\$PRJNAME.dpr | 07-20-2003 | 18:27:24 | | 622 | 54ed9445 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Cgi +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Cgi\Unit1.pas | 10-09-2006 | 18:14:28 | | 347 | 52615b3f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Cgi\Unit1.dfm | 02-24-2003 | 20:12:24 | | 422 | d3a6baa7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Cgi\Info.ini | 03-06-2004 | 14:28:26 | | 94 | d3d3c4ef +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Cgi\Icon.ico | 04-09-2004 | 01:34:54 | | 3262 | 733ff608 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Cgi\$PRJNAME.res | 04-09-2004 | 01:49:26 | | 22748 | 34fa96cd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Cgi\$PRJNAME.dpr | 07-20-2003 | 18:27:24 | | 392 | aae96eb8 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Apache2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Apache2\Unit1.pas | 10-09-2006 | 18:14:28 | | 347 | 52615b3f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Apache2\Unit1.dfm | 02-24-2003 | 20:12:24 | | 422 | d3a6baa7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Apache2\Info.ini | 03-15-2006 | 21:42:08 | | 148 | 7592c51b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Apache2\Icon.ico | 04-09-2004 | 01:34:22 | | 3262 | 8ee81af9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Apache2\$PRJNAME.res | 04-09-2004 | 17:46:56 | | 22748 | 34fa96cd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Apache2\$PRJNAME.dpr | 07-20-2003 | 18:27:24 | | 429 | aa813a73 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Apache +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Apache\Unit1.pas | 10-09-2006 | 18:14:28 | | 347 | 52615b3f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Apache\Unit1.dfm | 02-24-2003 | 20:12:24 | | 422 | d3a6baa7 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Apache\Info.ini | 03-06-2004 | 14:28:26 | | 148 | d9ab060e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Apache\Icon.ico | 04-09-2004 | 01:34:22 | | 3262 | 8ee81af9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Apache\$PRJNAME.res | 04-09-2004 | 17:46:56 | | 22748 | 34fa96cd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Apache\$PRJNAME.dpr | 07-20-2003 | 18:27:24 | | 426 | 75893ef7 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\ClxExe +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\ClxExe\Info.ini | 12-21-2006 | 22:22:06 | | 237 | a1338b1c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\ClxExe\fServerForm.pas | 10-09-2006 | 18:14:28 | | 508 | 7ea3b882 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\ClxExe\fServerForm.xfm | 07-20-2003 | 18:27:24 | | 496 | cb6a647b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\ClxExe\$PRJNAME.dpr | 07-20-2003 | 18:27:24 | | 318 | 7903a49e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\ClxExe\$PRJNAME.res | 04-09-2004 | 01:49:26 | | 22748 | 34fa96cd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\ClxExe\Icon.ico | 04-09-2004 | 01:34:54 | | 3262 | 64303600 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\DLL +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\DLL\$PRJNAME.res | 04-09-2004 | 17:46:56 | | 22748 | 34fa96cd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\DLL\Icon.ico | 04-09-2004 | 01:35:18 | | 3262 | f8946563 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\DLL\Info.ini | 04-23-2007 | 16:44:08 | | 124 | acc8f0d3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\DLL\$PRJNAME.dpr | 10-09-2006 | 18:14:28 | | 658 | 15dd3baa +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Service +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Service\Icon.ico | 04-09-2004 | 01:35:18 | | 3262 | e7eada98 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Service\Info.ini | 12-21-2006 | 22:22:06 | | 174 | 6245c3be +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Service\Unit1.dfm | 06-17-2003 | 15:31:34 | | 541 | a936c1ff +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Service\Unit1.pas | 10-09-2006 | 18:14:28 | | 1468 | 545dbf57 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Service\$PRJNAME.dpr | 07-20-2003 | 18:27:24 | | 310 | 567f5cf3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\Service\$PRJNAME.res | 04-09-2004 | 01:49:26 | | 22748 | 34fa96cd +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\LOCAL +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\LOCAL\Info.ini | 01-17-2006 | 19:23:30 | | 130 | ff44ec14 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\LOCAL\fClientDataModule.dfm | 01-17-2006 | 19:23:30 | | 375 | 64b222eb +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\LOCAL\fMainForm.dfm | 01-17-2006 | 19:23:30 | | 522 | 59ec7f7a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\LOCAL\fServerDataModule.dfm | 01-17-2006 | 19:23:30 | | 420 | 82a92caa +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\LOCAL\$PRJNAME.dpr | 01-17-2006 | 19:23:30 | | 573 | 15181692 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\LOCAL\Icon.ico | 01-17-2006 | 19:23:30 | | 3262 | 13498aad +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\LOCAL\fClientDataModule.pas | 10-09-2006 | 18:14:28 | | 427 | da03f341 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\LOCAL\fMainForm.pas | 01-17-2006 | 19:23:30 | | 409 | 1f1f39e0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\LOCAL\fServerDataModule.pas | 10-09-2006 | 18:14:28 | | 411 | d559bae0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\LOCAL\$PRJNAME.res | 01-17-2006 | 19:23:30 | | 22748 | 557d2f64 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\COMBOEXE +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\COMBOEXE\fServerDataModule.pas | 10-09-2006 | 18:14:28 | | 643 | 91f5a349 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\COMBOEXE\fServerForm.dfm | 04-11-2004 | 17:43:42 | | 579 | 19c9757 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\COMBOEXE\fServerForm.pas | 04-11-2004 | 17:43:42 | | 477 | ad54006 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\COMBOEXE\Icon.ico | 04-11-2004 | 17:43:42 | | 3262 | 7ccd8aff +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\COMBOEXE\Info.ini | 12-21-2006 | 22:22:06 | | 184 | dfc20223 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\COMBOEXE\$PRJNAME.dpr | 04-11-2004 | 17:43:42 | | 643 | d4ecd304 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\COMBOEXE\$PRJNAME.res | 04-11-2004 | 17:43:42 | | 22748 | 34fa96cd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\COMBOEXE\fServerDataModule.dfm | 04-11-2004 | 17:43:42 | | 451 | 1285274 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\CONSOLE +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\CONSOLE\$PRJNAME.dpr | 06-06-2007 | 15:20:06 | | 679 | 7de5bf0f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\CONSOLE\$PRJNAME.res | 06-06-2007 | 15:11:12 | | 22748 | 34fa96cd +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\CONSOLE\Info.ini | 06-06-2007 | 15:11:12 | | 172 | 55b57515 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\RO\CONSOLE\Icon.ico | 06-06-2007 | 18:48:22 | | 3262 | 733ff608 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\_Client +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\_Client\$PRJNAMEClient.res | 03-29-2004 | 20:17:22 | | 22748 | a6c8709c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\_Client\$PRJNAMEGroup.bpg | 03-06-2004 | 14:26:16 | | 822 | b30475f0 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\_Client\fClientForm.dfm | 08-28-2003 | 22:46:56 | | 719 | b44c58c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\_Client\fClientForm.pas | 10-09-2006 | 18:14:28 | | 889 | e7894cb2 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\_Client\$PRJNAMEClient.dpr | 08-28-2003 | 22:46:56 | | 236 | 265eaeb5 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Bin +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Help\RegisterDelphiHelp.exe | 12-03-2003 | 20:26:00 | | 97280 | bd823b42 +Shell Link: C:\Documents and Settings\Usuario\Menú Inicio\Programas\RemObjects SDK\Service Builder.lnk +Link Info: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\ROServiceBuilder.exe | | | 0 | 1 | 0 | +Shell Link: C:\Documents and Settings\Usuario\Menú Inicio\Programas\RemObjects SDK\Service Tester.lnk +Link Info: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\ROServiceTester.exe | | | 0 | 1 | 0 | +Shell Link: C:\Documents and Settings\Usuario\Menú Inicio\Programas\RemObjects SDK\MasterServer.lnk +Link Info: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\ROMasterServer.exe | | | 0 | 1 | 0 | +Made Dir: C:\Archivos de programa\RemObjects Software\Everwood\Welcome +Made Dir: C:\Archivos de programa\RemObjects Software\Everwood\Welcome\RemObjects SDK +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Welcome\RemObjects SDK\Welcome.png | 05-17-2007 | 15:24:54 | | 34659 | cc05cf6a +RegDB Key: Software\RemObjects\Everwood\Welcome +RegDB Val: +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood\Welcome\Products +RegDB Val: +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood\Welcome\Products\RemObjects SDK +RegDB Val: 5.0.30.691 +RegDB Name: Installed Version +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood\Welcome\Products\RemObjects SDK +RegDB Val: 3 +RegDB Name: Order +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood\Welcome\Products\RemObjects SDK +RegDB Val: C:\Archivos de programa\RemObjects Software\Everwood\Welcome\RemObjects SDK\Welcome.png +RegDB Name: Image +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood\Welcome\Products\RemObjects SDK\Samples for Delphi +RegDB Val: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Samples +RegDB Name: Folder +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood\Welcome\Products\RemObjects SDK\Samples for Delphi +RegDB Val: Flat +RegDB Name: Structure +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood\Welcome\Products\RemObjects SDK +RegDB Val: Data Abstract +RegDB Name: Hide For +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood\Welcome\Products\RemObjects SDK +RegDB Val: http://devcenter.remobjects.com/ro +RegDB Name: DevCenter URL +RegDB Root: 1 +RegDB Key: Software\RemObjects\RemObjects SDK for Delphi +RegDB Val: 1 +RegDB Name: Installed +RegDB Root: 1 +RegDB Key: Software\RemObjects\RemObjects SDK for Delphi +RegDB Val: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi +RegDB Name: InstallDir +RegDB Root: 1 +RegDB Key: Software\RemObjects\RemObjects SDK for Delphi +RegDB Val: 5.0.30.691 +RegDB Name: Version +RegDB Root: 1 +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\BACKUP +File Delete: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Help\RegisterDelphiHelp.exe +Backup Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\BACKUP\RegisterDelphiHelp.exe +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract (Common) +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DASchemaModeler.exe | 05-23-2008 | 22:15:24 | 5.0.30.691 | 11554304 | 7350c2d7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DASchemaModeler.chm | 05-23-2008 | 22:16:34 | | 116401 | 47c7b11b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\borlndmm.dll | 08-09-2002 | 17:00:00 | 7.0.4.453 | 22528 | ec93288e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DefaultConnections.ini | 04-03-2006 | 18:13:56 | | 879 | dfaa0117 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\Data Abstract.lic | 05-23-2008 | 22:14:54 | | 945 | 121cc2f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DAConverter.exe | 05-23-2008 | 22:16:46 | | 112056 | 47750d98 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DABDEDrv.dad | 05-23-2008 | 22:15:34 | 5.0.30.691 | 1272320 | 565af1b2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DAIBXDrv.dad | 05-23-2008 | 22:15:34 | 5.0.30.691 | 1200128 | 9321da41 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DAIBODrv.dad | 05-23-2008 | 22:15:56 | 5.0.30.691 | 1665024 | 5cd06e1e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DADBXDrv.dad | 05-23-2008 | 22:15:30 | 5.0.30.691 | 1974784 | 317ae96a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DAADODrv.dad | 05-23-2008 | 22:15:28 | 5.0.30.691 | 1191424 | 4434f3b5 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DASDACDrv.dad | 05-23-2008 | 22:15:38 | 5.0.30.691 | 1371136 | 3f82c605 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DAMyDACDrv.dad | 05-23-2008 | 22:15:42 | 5.0.30.691 | 1427456 | fe051712 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DAODACDrv.dad | 05-23-2008 | 22:15:40 | 5.0.30.691 | 1523712 | 869a1263 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DAIBDACDrv.dad | 05-23-2008 | 22:15:44 | 5.0.30.691 | 1451008 | c5e85bc2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DANexusDBDrv.dad | 05-23-2008 | 22:16:14 | 5.0.30.691 | 3131392 | b7dc3c52 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DADBISAM3Drv.dad | 05-23-2008 | 22:15:50 | 5.0.30.691 | 1718272 | d5c54ec0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DADBISAM4Drv.dad | 05-23-2008 | 22:15:52 | 5.0.30.691 | 2026496 | 798f6de5 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DAPostgresDACDrv.dad | 05-23-2008 | 22:15:48 | 5.0.30.691 | 1348608 | 27eb5f74 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DAMySQLDACDrv.dad | 05-23-2008 | 22:15:48 | 5.0.30.691 | 1419264 | 77c30a5e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DAFIBDrv.dad | 05-23-2008 | 22:16:20 | 5.0.30.691 | 1508352 | 27405a99 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DAZeosDrv.dad | 05-23-2008 | 22:16:24 | 5.0.30.691 | 2012160 | d92607cd +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DAElevateDBDrv.dad | 05-23-2008 | 22:16:18 | | 2008576 | f0af9cf6 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DAAnyDACDrv.dad | 05-23-2008 | 22:16:30 | 5.0.5.25 | 2487808 | 6b00e40b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\dbxmss30.dll | 08-26-2007 | 21:03:00 | 11.0.2804.9245 | 258048 | 6bd18b59 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\dbxmys30.dll | 08-26-2007 | 21:03:00 | 11.0.2804.9245 | 228864 | e764a9e3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\dbxmysA30.dll | 08-26-2007 | 21:03:00 | 11.0.2804.9245 | 215040 | b40f9c31 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\dbxora30.dll | 08-26-2007 | 21:03:00 | 11.0.2804.9245 | 311296 | dfe461d5 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\dbxoraw30.dll | 08-26-2007 | 21:03:00 | 11.0.2804.9245 | 334848 | d8c98c8d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\dbxasa30.dll | 08-26-2007 | 21:03:00 | 11.0.2804.9245 | 235520 | 17db664d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\dbxase30.dll | 08-26-2007 | 21:03:00 | 11.0.2804.9245 | 256512 | 70881c06 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\dbxdb230.dll | 08-26-2007 | 21:03:00 | 11.0.2804.9245 | 241664 | e06e5323 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\dbxinf30.dll | 08-26-2007 | 21:03:00 | 11.0.2804.9245 | 270848 | c841716a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\dbxint30.dll | 08-26-2007 | 21:03:00 | 11.0.2804.9245 | 253440 | be3a9c5b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\dbxdrivers.ini | 12-26-2007 | 13:44:54 | | 10175 | f0d78322 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\dbxconnections.ini | 02-19-2008 | 17:07:32 | | 5027 | 43b475c5 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DASQLiteDrv.dad | 05-23-2008 | 22:15:36 | 5.0.30.691 | 1076736 | dce857eb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\sqlite3.dll | 02-13-2007 | 09:09:00 | | 388126 | 5069b4ff +File Overwrite: C:\WINDOWS\system32\msvcrt.dll | 08-19-2004 | 20:42:18 | 7.0.2600.2180 | 681472 | 3e43316c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\license.txt | 03-13-2008 | 17:47:10 | | 9459 | 9ae670d8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\README.html | 02-22-2008 | 15:00:48 | | 12730 | 47e2d19b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\da.png | 05-17-2007 | 13:03:16 | | 6599 | 3933defd +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Launch.exe | 12-03-2003 | 20:26:00 | | 14848 | 81197b84 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DAServer.exe | 05-23-2008 | 22:16:42 | 5.0.30.691 | 6998528 | 1415337f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\ROSBDataAbstract.dll | 05-23-2008 | 22:03:42 | 5.0.30.691 | 326144 | c944d694 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK (Common)\Bin\ROSBDataAbstract.codetemplates.cfg | 03-28-2004 | 03:18:34 | | 2487 | 44b5ea9c +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Help +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Help\RemObjects Data Abstract for Delphi.hlp | 05-23-2008 | 22:18:58 | | 1290240 | b6defd06 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Help\RemObjects Data Abstract for Delphi.cnt | 05-23-2008 | 22:18:32 | | 25859 | c8aefbca +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Help\RemObjects Data Abstract for Delphi.als | 05-23-2008 | 22:18:32 | | 15349 | 6e13c357 +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D6 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D6\DataAbstract_Core_D6.bpl | 05-23-2008 | 22:14:18 | 5.0.30.691 | 1394176 | 2c8feaa1 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D6\DataAbstract_Scripting_D6.bpl | 05-23-2008 | 22:14:20 | 5.0.30.691 | 72192 | 8a50f801 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D6\DataAbstract_IDE_D6.bpl | 05-23-2008 | 22:14:22 | 5.0.30.691 | 273408 | f79d9dd9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D6\DataAbstract_ADODriver_D6.bpl | 05-23-2008 | 22:14:22 | 5.0.30.691 | 95232 | 5a019863 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D6\DataAbstract_IBXDriver_D6.bpl | 05-23-2008 | 22:14:22 | 5.0.30.691 | 58880 | fb0e3f96 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D6\DataAbstract_DBXDriver_D6.bpl | 05-23-2008 | 22:14:24 | 5.0.30.691 | 76288 | 4857f0f2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D6\DataAbstract_BDEDriver_D6.bpl | 05-23-2008 | 22:14:24 | 5.0.30.691 | 78848 | db30de5f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D6\DataAbstract_SQLiteDriver_D6.bpl | 05-23-2008 | 22:14:24 | 5.0.30.691 | 138240 | e4ca7195 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D6\DataAbstract_Core_D6.dcp | 05-23-2008 | 22:14:18 | | 1886563 | 874f191a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D6\DataAbstract_Scripting_D6.dcp | 05-23-2008 | 22:14:20 | | 54398 | 4197e87c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D6\DataAbstract_IDE_D6.dcp | 05-23-2008 | 22:14:22 | | 128724 | c50617a0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D6\DataAbstract_ADODriver_D6.dcp | 05-23-2008 | 22:14:22 | | 69721 | 1854ef4d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D6\DataAbstract_IBXDriver_D6.dcp | 05-23-2008 | 22:14:22 | | 32385 | b4d1fd00 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D6\DataAbstract_DBXDriver_D6.dcp | 05-23-2008 | 22:14:24 | | 44983 | 45a99c08 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D6\DataAbstract_BDEDriver_D6.dcp | 05-23-2008 | 22:14:24 | | 45137 | 251b1b46 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D6\DataAbstract_SQLiteDriver_D6.dcp | 05-23-2008 | 22:14:24 | | 129917 | 89e2a211 +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7\DataAbstract_Core_D7.bpl | 05-23-2008 | 22:14:26 | 5.0.30.691 | 1396736 | 54e4429b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7\DataAbstract_Scripting_D7.bpl | 05-23-2008 | 22:14:28 | 5.0.30.691 | 73728 | 809b19b3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7\DataAbstract_IDE_D7.bpl | 05-23-2008 | 22:14:30 | 5.0.30.691 | 274432 | 8e7db79f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7\DataAbstract_ADODriver_D7.bpl | 05-23-2008 | 22:14:30 | 5.0.30.691 | 96768 | c75a9bb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7\DataAbstract_IBXDriver_D7.bpl | 05-23-2008 | 22:14:32 | 5.0.30.691 | 59904 | af66bac4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7\DataAbstract_DBXDriver_D7.bpl | 05-23-2008 | 22:14:32 | 5.0.30.691 | 77824 | bdd93ec +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7\DataAbstract_BDEDriver_D7.bpl | 05-23-2008 | 22:14:32 | 5.0.30.691 | 79872 | 7911b272 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7\DataAbstract_SQLiteDriver_D7.bpl | 05-23-2008 | 22:14:34 | 5.0.30.691 | 139776 | 2383661a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7\DataAbstract_Core_D7.dcp | 05-23-2008 | 22:14:26 | | 1901869 | ab50a59f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7\DataAbstract_Scripting_D7.dcp | 05-23-2008 | 22:14:28 | | 56040 | ff24341a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7\DataAbstract_IDE_D7.dcp | 05-23-2008 | 22:14:30 | | 135199 | 3ac31a3e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7\DataAbstract_ADODriver_D7.dcp | 05-23-2008 | 22:14:30 | | 71054 | bc492f4d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7\DataAbstract_IBXDriver_D7.dcp | 05-23-2008 | 22:14:32 | | 33718 | d0f373cd +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7\DataAbstract_DBXDriver_D7.dcp | 05-23-2008 | 22:14:32 | | 46423 | 1cb2e9c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7\DataAbstract_BDEDriver_D7.dcp | 05-23-2008 | 22:14:32 | | 46534 | fd793b01 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7\DataAbstract_SQLiteDriver_D7.dcp | 05-23-2008 | 22:14:34 | | 131188 | b2734653 +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D10 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D10\DataAbstract_Core_D10.bpl | 05-23-2008 | 22:14:36 | 5.0.30.691 | 1404416 | f16879c9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D10\DataAbstract_Scripting_D10.bpl | 05-23-2008 | 22:14:36 | 5.0.30.691 | 65536 | 4091105d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D10\DataAbstract_IDE_D10.bpl | 05-23-2008 | 22:14:38 | 5.0.30.691 | 264704 | 19daac4e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D10\DataAbstract_ADODriver_D10.bpl | 05-23-2008 | 22:14:40 | 5.0.30.691 | 91136 | dce93619 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D10\DataAbstract_IBXDriver_D10.bpl | 05-23-2008 | 22:14:40 | 5.0.30.691 | 53248 | f2aacb93 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D10\DataAbstract_DBXDriver_D10.bpl | 05-23-2008 | 22:14:42 | 5.0.30.691 | 74752 | b7aa159b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D10\DataAbstract_BDEDriver_D10.bpl | 05-23-2008 | 22:14:42 | 5.0.30.691 | 74240 | 251ad952 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D10\DataAbstract_SQLiteDriver_D10.bpl | 05-23-2008 | 22:14:42 | 5.0.30.691 | 137728 | 1e938efb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D10\DataAbstract_Core_D10.dcp | 05-23-2008 | 22:14:36 | | 1989943 | 2d8b5b28 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D10\DataAbstract_Scripting_D10.dcp | 05-23-2008 | 22:14:36 | | 53434 | 58038957 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D10\DataAbstract_IDE_D10.dcp | 05-23-2008 | 22:14:38 | | 130269 | 237161c3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D10\DataAbstract_ADODriver_D10.dcp | 05-23-2008 | 22:14:40 | | 69469 | 727ce55a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D10\DataAbstract_IBXDriver_D10.dcp | 05-23-2008 | 22:14:40 | | 31439 | cc54979d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D10\DataAbstract_DBXDriver_D10.dcp | 05-23-2008 | 22:14:42 | | 45009 | c1fa5a45 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D10\DataAbstract_BDEDriver_D10.dcp | 05-23-2008 | 22:14:42 | | 44532 | 3c2fe244 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D10\DataAbstract_SQLiteDriver_D10.dcp | 05-23-2008 | 22:14:42 | | 135479 | cadc5502 +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D11 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D11\DataAbstract_Core_D11.bpl | 05-23-2008 | 22:14:46 | 5.0.30.691 | 1404416 | 15a6ecbf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D11\DataAbstract_Scripting_D11.bpl | 05-23-2008 | 22:14:48 | 5.0.30.691 | 66048 | 90a2d68a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D11\DataAbstract_IDE_D11.bpl | 05-23-2008 | 22:14:50 | 5.0.30.691 | 264704 | deecbc6a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D11\DataAbstract_ADODriver_D11.bpl | 05-23-2008 | 22:14:50 | 5.0.30.691 | 91136 | 1e4fc56d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D11\DataAbstract_IBXDriver_D11.bpl | 05-23-2008 | 22:14:50 | 5.0.30.691 | 53248 | c0434367 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D11\DataAbstract_DBXDriver_D11.bpl | 05-23-2008 | 22:14:52 | 5.0.30.691 | 77824 | 396f5567 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D11\DataAbstract_BDEDriver_D11.bpl | 05-23-2008 | 22:14:52 | 5.0.30.691 | 74240 | 48a83d38 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D11\DataAbstract_SQLiteDriver_D11.bpl | 05-23-2008 | 22:14:54 | 5.0.30.691 | 137728 | 77c31b9b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D11\DataAbstract_Core_D11.dcp | 05-23-2008 | 22:14:46 | | 1989933 | b73e9a34 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D11\DataAbstract_Scripting_D11.dcp | 05-23-2008 | 22:14:48 | | 53465 | 3e704081 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D11\DataAbstract_IDE_D11.dcp | 05-23-2008 | 22:14:50 | | 130338 | 5e32fa31 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D11\DataAbstract_ADODriver_D11.dcp | 05-23-2008 | 22:14:50 | | 69501 | 60ccd154 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D11\DataAbstract_IBXDriver_D11.dcp | 05-23-2008 | 22:14:50 | | 31471 | 91e33794 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D11\DataAbstract_DBXDriver_D11.dcp | 05-23-2008 | 22:14:52 | | 45689 | 18bf9d84 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D11\DataAbstract_BDEDriver_D11.dcp | 05-23-2008 | 22:14:52 | | 44564 | 6076058b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D11\DataAbstract_SQLiteDriver_D11.dcp | 05-23-2008 | 22:14:54 | | 135516 | 19ec1178 +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\eDefines.inc | 04-28-2008 | 14:24:26 | | 16839 | 252645ba +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract.inc | 04-28-2008 | 17:09:28 | | 619 | e73cf353 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAADODataTable.pas | 10-01-2007 | 11:36:36 | | 8122 | edc19c5d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDABinAdapter.pas | 05-22-2008 | 10:33:44 | | 41621 | 66a92ae3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDABin2DataStreamer.pas | 05-22-2008 | 10:33:44 | | 70951 | fad347f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDABusinessProcessor.pas | 02-28-2008 | 16:31:44 | | 90510 | 6e33ddb7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDACDSDataTable.pas | 10-01-2007 | 11:36:36 | | 19070 | f92440b8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDACache.pas | 04-24-2007 | 16:58:58 | | 10849 | b3ba7d48 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAClasses.pas | 02-12-2008 | 21:10:02 | | 55564 | 38e5b88 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAClientDataModule.pas | 04-24-2007 | 16:58:58 | | 1109 | dcd10cf6 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDADataTable.pas | 05-22-2008 | 10:33:44 | | 163341 | 28b0174c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDADatasetProvider.pas | 04-24-2007 | 16:58:58 | | 2596 | b79e934 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDADatasetWrapper.pas | 12-31-2007 | 13:58:58 | | 20507 | b7a2b63c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDADataStreamer.pas | 01-10-2008 | 19:04:52 | | 21814 | 8f590de +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDADataTableReferenceCollection.pas | 04-24-2007 | 16:58:58 | | 5956 | cb6689b2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDADBSessionManager.pas | 04-28-2008 | 17:11:56 | | 12382 | 3f8dedac +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDADelta.pas | 02-22-2008 | 14:37:04 | | 35550 | 69f115d5 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDADesigntimeCall.pas | 04-24-2007 | 16:58:58 | | 1249 | 4a6d3fea +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDADriverInfo.pas | 03-27-2008 | 11:44:14 | | 2030 | 1b601851 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDADriverManager.pas | 03-27-2008 | 11:44:14 | | 14631 | 42b211dc +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAEngine.pas | 05-21-2008 | 16:27:20 | | 94595 | 88f2623d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAExceptions.pas | 04-24-2007 | 16:58:58 | | 1206 | f0f67b46 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAExpressionEvaluator.pas | 03-14-2008 | 19:07:22 | | 21674 | 6cb9736e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAHelpers.pas | 06-04-2007 | 13:34:40 | | 13285 | 279760bd +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAInterfaces.pas | 05-22-2008 | 10:33:44 | | 211412 | 834e2a0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAInterfacesEx.pas | 11-02-2007 | 16:58:16 | | 1599 | 58acf8d7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAMacroProcessors.pas | 04-24-2007 | 16:48:40 | | 17740 | 63291a0b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAMacros.pas | 04-07-2008 | 16:58:28 | | 26075 | a4714312 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAMemDataset.pas | 05-22-2008 | 10:33:44 | | 148017 | d91787b0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAMemDataTable.pas | 05-22-2008 | 10:33:44 | | 16445 | b04e6a83 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAPleaseWaitForm.pas | 03-27-2008 | 11:44:14 | | 3660 | 62763dd4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAReconcileDialog.pas | 03-27-2008 | 11:44:14 | | 12279 | 3da7a96f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAReconcileDialog.dfm | 02-14-2008 | 10:02:24 | | 32449 | b1c98847 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAReconcileDialogDetails.pas | 02-14-2008 | 10:02:24 | | 8500 | 420df38d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAReconcileDialogDetails.dfm | 02-14-2008 | 10:02:24 | | 2131 | 9a390261 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDARemoteDataAdapter.pas | 05-05-2008 | 11:17:44 | | 42328 | 563e38e3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDARemoteDataAdapterRequests.pas | 05-05-2008 | 11:17:44 | | 11102 | 8b089baa +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDARemoteCommand.pas | 05-05-2008 | 11:17:44 | | 6345 | caf5e384 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDARes.pas | 05-08-2007 | 18:24:38 | | 5169 | dab5016d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDARegExpr.pas | 04-07-2008 | 16:58:28 | | 159337 | d7789cd7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAServerLog.pas | 04-24-2007 | 16:58:58 | | 18367 | 23740b4c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDASupportClasses.pas | 02-26-2008 | 14:19:30 | | 11980 | a2d782b1 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAMySQLInterfaces.pas | 05-07-2008 | 14:44:04 | | 25491 | a8a6ddd1 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDASQLiteInterfaces.pas | 05-07-2008 | 14:44:04 | | 9086 | f9347471 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDASQL92Interfaces.pas | 05-07-2008 | 14:44:04 | | 10732 | aa20f045 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDASQL92QueryBuilder.pas | 10-08-2007 | 15:10:02 | | 6179 | a3149303 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAPostgresInterfaces.pas | 05-07-2008 | 14:44:04 | | 23368 | cfe5b700 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAUtils.pas | 03-27-2008 | 11:44:14 | | 7607 | a19a9963 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAWhere.pas | 05-22-2008 | 10:33:44 | | 28948 | 22b8f056 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAXmlAdapter.pas | 05-22-2008 | 10:33:44 | | 28111 | fbb71286 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAXmlUtils.pas | 05-22-2008 | 10:33:44 | | 21472 | 4ace29d3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAPoweredByDataAbstractButton.pas | 03-27-2008 | 11:44:14 | | 1926 | 1f5fe8a9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAPoweredByDataAbstractButton.res | 12-22-2005 | 16:36:52 | | 61352 | 519c6dbb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAADOInterfaces.pas | 05-07-2008 | 14:44:04 | | 46403 | 97cd50bd +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAIBInterfaces.pas | 05-07-2008 | 14:44:04 | | 26894 | 412e0d74 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAOracleInterfaces.pas | 05-07-2008 | 15:27:10 | | 22483 | cbe6b0c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAElevateDBInterfaces.pas | 05-07-2008 | 14:44:04 | | 25565 | 84c1910c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\MultiDbLoginService_Impl.pas | 05-05-2008 | 17:24:44 | | 3611 | 9ab8b48f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\MultiDbLoginService_Impl.dfm | 01-21-2006 | 01:10:22 | | 58 | 97df86d8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\SimpleLoginService_Impl.pas | 05-05-2008 | 17:24:44 | | 2086 | 980889f8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\SimpleLoginService_Impl.dfm | 01-21-2006 | 01:10:22 | | 56 | 67462fb1 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\BaseLoginService_Impl.pas | 03-15-2007 | 17:32:38 | | 1641 | 82a00e34 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\BaseLoginService_Impl.dfm | 01-21-2006 | 01:10:22 | | 105 | 26e53c6c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstractService_Impl.pas | 02-28-2008 | 16:32:08 | | 62381 | 12f75f03 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstractService_Impl.dfm | 01-21-2006 | 01:10:22 | | 111 | 23de7f5b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract4_Intf.pas | 05-08-2008 | 17:10:02 | | 78739 | 9747e381 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract4_Async.pas | 02-05-2008 | 22:28:46 | | 25811 | 8caf296e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract4_Invk.pas | 05-05-2008 | 17:24:44 | | 25469 | 2eb0a539 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DALoginService_Impl.pas | 05-22-2008 | 10:33:44 | | 6751 | e88f0871 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DARemoteService_Impl.pas | 05-22-2008 | 10:33:44 | | 42729 | 4bb27ddb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract3_Invk.pas | 05-05-2008 | 17:24:44 | | 14702 | 7fc214f4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract3_Intf.pas | 05-05-2008 | 17:24:44 | | 44818 | ac87908 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract3_Async.pas | 05-05-2008 | 17:24:44 | | 14446 | 5963fa80 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDADB2Interfaces.pas | 05-07-2008 | 14:44:04 | | 22284 | 31774935 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDASybaseInterfaces.pas | 05-07-2008 | 14:44:04 | | 33621 | 744a583 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\MultiDbLoginServiceV5_Impl.pas | 05-15-2008 | 17:02:26 | | 1265 | f9b712b0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\MultiDbLoginServiceV5_Impl.dfm | 05-15-2008 | 17:02:26 | | 62 | 18ed7369 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DBSessionManager Default Schema.daConnections | 08-11-2003 | 14:02:46 | | 707 | d560b296 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DBSessionManager Default Schema.daSchema | 02-05-2007 | 18:43:42 | | 16273 | e1c54e62 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DBSessionManager Create Session Table.sql | 08-11-2003 | 14:02:46 | | 383 | 5ab3fc4e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAScriptingProvider.pas | 04-24-2007 | 16:58:58 | | 3521 | bb426b21 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAPascalScript.pas | 04-24-2007 | 16:58:58 | | 40974 | 3e57a882 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAPSScriptingProvider.pas | 04-24-2007 | 19:51:46 | | 7539 | 8149f2af +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\uDAKDBInfo.pas | 04-24-2007 | 16:58:58 | | 9336 | 7bd7d4d5 +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\uDADBSessionManagerEditor.pas | 11-15-2006 | 03:32:14 | | 4128 | 2d5f3794 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\uDADataAbstractEditors.pas | 12-25-2007 | 15:04:36 | | 40721 | a8fead68 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\uDAIDEMenu.pas | 09-13-2007 | 18:54:08 | | 7569 | b1be5a84 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\uDAIDEData.pas | 05-15-2006 | 16:11:54 | | 1149 | 543f1e83 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\uDAIDEData.dfm | 05-19-2006 | 12:38:34 | | 10644 | f3a6d240 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\uDASchemaUnitsGenerator.pas | 06-28-2007 | 13:33:46 | | 40805 | 263165e9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\DataAbstract_IDE_AdditionalResources.res | 05-23-2008 | 22:14:10 | | 2200 | 4597e39a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\DataAbstract_IDE_AdditionalResources.rc | 07-07-2003 | 00:22:46 | | 50 | a17c7a22 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\uDAIDERes.pas | 08-28-2003 | 18:48:20 | | 328 | aba952e4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\Resources.BDS.RES | 09-12-2007 | 19:19:46 | | 8644 | 470d05df +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\uDASelectDataTablesForm.dfm | 05-16-2007 | 00:03:44 | | 10964 | 17cfbaca +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\uDASelectDataTablesForm.pas | 05-18-2006 | 01:36:10 | | 1966 | 8bfbf404 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\uDAGuideWizardForm.pas | 06-15-2007 | 18:36:48 | | 8436 | 3c3b6371 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\uDAGuideWizardForm.dfm | 06-15-2007 | 18:36:48 | | 112294 | c07740c4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\uDADataTableWizards.pas | 06-13-2007 | 17:33:36 | | 6954 | f8275dcc +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\uDAClientDataModuleWizard.pas | 05-05-2008 | 11:17:44 | | 12175 | f9222b1f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\uDAClientModuleWizard.res | 05-23-2008 | 22:14:10 | | 3392 | c53a085e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\uDADataTableEditorForm.pas | 05-05-2008 | 11:17:44 | | 15313 | fe38d34f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\uDADataTableEditorForm.dfm | 01-21-2006 | 01:14:40 | | 14241 | 96f2d075 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\uDAClientDataModuleDataTableWizardForm.pas | 05-21-2007 | 19:04:08 | | 3148 | 11710161 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\uDAClientDataModuleDataTableWizardForm.dfm | 08-28-2003 | 18:48:20 | | 8944 | d24b6b44 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\uDAClientDataModuleEditorForm.dfm | 08-28-2003 | 18:48:20 | | 13817 | b03b5a6 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\uDAClientDataModuleEditorForm.pas | 03-30-2004 | 16:48:22 | | 4296 | 18c1eb32 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\uDADataTableMasterLinkWizardForm.dfm | 02-05-2008 | 14:47:46 | | 79568 | d908a6bf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\uDADataTableMasterLinkWizardForm.pas | 06-08-2007 | 15:08:18 | | 11866 | 8326854b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\BuildPackages_D6.bpg | 11-26-2007 | 12:41:52 | | 3269 | a478f4f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\BuildPackages_D7.bpg | 11-26-2007 | 12:41:52 | | 3231 | e54c1336 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\BuildPackages_D10.bdsgroup | 11-26-2007 | 10:54:50 | | 3493 | a81c62dd +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\BuildPackages_D11.groupproj | 11-26-2007 | 12:41:52 | | 14693 | 2ea17252 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\BuildPackages_K3.bpg | 12-10-2003 | 21:30:46 | | 884 | 4d1ea896 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\BuildDrivers.bpg | 03-27-2008 | 11:40:48 | | 1999 | ec8a01b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Core_Reg.pas | 06-26-2007 | 11:58:22 | | 2537 | 715dccf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Core_Glyphs.res | 05-23-2008 | 22:14:10 | | 59848 | a63596a8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Core_D6.dof | 05-23-2008 | 22:14:06 | | 1097 | c3e0bd46 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Core_D6.dpk | 05-15-2008 | 17:02:26 | | 4157 | d010687c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Core_D6.res | 05-23-2008 | 22:14:12 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Core_D6.cfg | 07-10-2004 | 21:22:48 | | 563 | f23c0c0e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Core_D7.dof | 05-23-2008 | 22:14:06 | | 2769 | d5cf05d0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Core_D7.dpk | 05-15-2008 | 17:02:26 | | 4157 | 16b7ca93 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Core_D7.res | 05-23-2008 | 22:14:26 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Core_D7.cfg | 01-21-2006 | 01:07:06 | | 887 | 8637066f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Core_D10.bdsproj | 01-21-2006 | 01:07:06 | | 8134 | 88fe3c55 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Core_D10.cfg | 12-03-2005 | 18:13:14 | | 485 | 3412f4b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Core_D10.dpk | 05-15-2008 | 17:02:26 | | 4159 | 3d843c75 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Core_D10.res | 05-23-2008 | 22:14:34 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Core_D11.dproj | 09-13-2007 | 13:01:04 | | 9703 | f59e5b27 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Core_D11.dpk | 05-15-2008 | 17:02:26 | | 4161 | f2221d2c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Core_D11.res | 05-23-2008 | 22:14:44 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Scripting_Reg.pas | 04-24-2007 | 19:51:46 | | 1354 | 94e969d8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Scripting_Glyphs.res | 05-23-2008 | 22:14:10 | | 2764 | 1e3006d0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Scripting_D6.cfg | 07-10-2004 | 21:22:36 | | 549 | b0468548 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Scripting_D6.dof | 05-23-2008 | 22:14:06 | | 1104 | 4ada4aee +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Scripting_D6.dpk | 08-04-2004 | 15:44:52 | | 858 | e790e6e4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Scripting_D6.res | 05-23-2008 | 22:14:18 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Scripting_D7.dof | 05-23-2008 | 22:14:06 | | 1980 | b98782ab +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Scripting_D7.dpk | 08-04-2004 | 15:44:52 | | 879 | a4690651 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Scripting_D7.res | 05-23-2008 | 22:14:26 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Scripting_D7.cfg | 07-10-2004 | 21:22:36 | | 497 | 5c2ed55a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Scripting_D10.bdsproj | 12-03-2005 | 18:13:14 | | 10085 | f1772c51 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Scripting_D10.dpk | 12-03-2005 | 18:13:14 | | 862 | d9480104 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Scripting_D10.res | 05-23-2008 | 22:14:36 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Scripting_D10.cfg | 12-03-2005 | 18:13:14 | | 723 | 2836ccdf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Scripting_D11.dproj | 09-13-2007 | 13:01:04 | | 6408 | fc08f916 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Scripting_D11.dpk | 09-13-2007 | 13:01:04 | | 862 | c2fb464c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_Scripting_D11.res | 05-23-2008 | 22:14:46 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_SimpleQuery_Reg.pas | 07-11-2004 | 04:01:40 | | 776 | db1e34a9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_SimpleQuery_Glyphs.res | 05-23-2008 | 22:14:12 | | 3704 | e971ae17 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_SimpleQuery_D7.dpk | 12-22-2005 | 19:15:08 | | 822 | 84381291 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_SimpleQuery_D7.res | 07-10-2004 | 21:22:36 | | 1880 | 4ea2599b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_SimpleQuery_D7.cfg | 07-10-2004 | 21:22:36 | | 497 | 5c2ed55a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_SimpleQuery_D7.dof | 05-23-2008 | 22:14:06 | | 1988 | ea17dc8d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_SimpleQuery_D6.dpk | 07-13-2004 | 14:47:18 | | 823 | 72b63012 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_SimpleQuery_D6.res | 07-10-2004 | 21:22:36 | | 1880 | 4ea2599b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_SimpleQuery_D6.cfg | 07-10-2004 | 21:22:36 | | 509 | 4fb58f6f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_SimpleQuery_D6.dof | 05-23-2008 | 22:14:06 | | 1952 | d7f996ac +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_SimpleQuery_D10.bdsproj | 12-03-2005 | 19:09:32 | | 8301 | 58236b7c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_SimpleQuery_D10.dpk | 12-03-2005 | 19:09:32 | | 827 | de031c94 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_SimpleQuery_D10.res | 12-03-2005 | 19:09:32 | | 1536 | 452e318 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_SimpleQuery_D10.cfg | 12-03-2005 | 19:09:32 | | 605 | d7c17c03 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_SimpleQuery_D11.dproj | 10-16-2007 | 16:07:36 | | 6364 | 9cec6ca2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_SimpleQuery_D11.dpk | 09-13-2007 | 13:01:04 | | 829 | 556f491d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract_SimpleQuery_D11.res | 09-13-2007 | 13:01:04 | | 1536 | 452e318 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\DataAbstract_IDE_Reg.pas | 12-21-2006 | 22:10:20 | | 9057 | 76f016f1 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\DataAbstract_IDE_D6.dof | 05-23-2008 | 22:14:08 | | 1817 | 68d45614 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\DataAbstract_IDE_D6.dpk | 04-05-2006 | 16:33:36 | | 1390 | c8272fde +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\DataAbstract_IDE_D6.res | 05-23-2008 | 22:14:20 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\DataAbstract_IDE_D6.cfg | 04-06-2004 | 22:49:34 | | 402 | 38ad768f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\DataAbstract_IDE_D7.dof | 05-23-2008 | 22:14:08 | | 2738 | d59c730f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\DataAbstract_IDE_D7.dpk | 04-05-2006 | 16:33:36 | | 1390 | e40e9fa1 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\DataAbstract_IDE_D7.res | 05-23-2008 | 22:14:28 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\DataAbstract_IDE_D7.cfg | 07-10-2004 | 21:37:24 | | 766 | 785e6e46 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\DataAbstract_IDE_D10.bdsproj | 01-25-2006 | 16:12:54 | | 10040 | c61a9fcc +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\DataAbstract_IDE_D10.cfg | 12-03-2005 | 18:13:14 | | 648 | 39af4325 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\DataAbstract_IDE_D10.dpk | 04-05-2006 | 16:33:36 | | 1395 | 72a6272f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\DataAbstract_IDE_D10.res | 05-23-2008 | 22:14:38 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\DataAbstract_IDE_D11.dproj | 09-13-2007 | 13:01:04 | | 6178 | f83f01a6 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\DataAbstract_IDE_D11.dpk | 09-13-2007 | 13:01:04 | | 1395 | e6dc87ab +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\IDE\DataAbstract_IDE_D11.res | 05-23-2008 | 22:14:48 | | 528 | 72f60ecf +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_Drivers_D6.bpg | 07-07-2003 | 00:22:46 | | 1847 | 11a70210 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\uDAADODriver.pas | 04-18-2008 | 15:32:10 | | 60342 | dc631d5d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ADODriver_Glyphs.res | 05-23-2008 | 22:14:12 | | 4872 | d757a94f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ADODriver_D6.dpk | 07-10-2004 | 21:31:32 | | 698 | 8e88eab7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ADODriver_D6.res | 05-23-2008 | 22:14:22 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ADODriver_D6.cfg | 07-07-2003 | 00:22:46 | | 602 | e309783a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ADODriver_D6.dof | 05-23-2008 | 22:14:06 | | 1106 | 3a76705 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ADODriver_D7.dpk | 07-10-2004 | 21:31:32 | | 698 | f4df1e90 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ADODriver_D7.res | 05-23-2008 | 22:14:30 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ADODriver_D7.cfg | 11-30-2003 | 20:22:56 | | 766 | 663e6809 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ADODriver_D7.dof | 05-23-2008 | 22:14:06 | | 2738 | dcbfe9e3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ADODriver_D10.bdsproj | 12-03-2005 | 18:13:50 | | 8215 | bcc4e536 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ADODriver_D10.dpk | 12-03-2005 | 18:13:50 | | 700 | f141a483 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ADODriver_D10.res | 05-23-2008 | 22:14:40 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ADODriver_D10.cfg | 12-03-2005 | 18:13:50 | | 682 | 5332ff3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ADODriver_D11.dproj | 09-13-2007 | 13:01:04 | | 5790 | 8b856da2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ADODriver_D11.dpk | 09-13-2007 | 13:01:04 | | 700 | 4f2060da +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ADODriver_D11.res | 05-23-2008 | 22:14:50 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAADODriverHtml.res | 05-23-2008 | 22:15:26 | | 1592 | 151a895e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAADODrv.dof | 05-23-2008 | 22:14:06 | | 2613 | 3427db80 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAADODrv.dpr | 07-10-2004 | 21:30:48 | | 189 | fd7fb5b3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAADODrv.res | 05-23-2008 | 22:15:26 | | 672 | 43f8040a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAADODrv.cfg | 11-30-2003 | 20:22:28 | | 570 | 1ac34a70 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\uDAIBXDriver.pas | 12-26-2007 | 13:41:40 | | 14487 | 7764400d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBXDriver_D6.dof | 05-23-2008 | 22:14:06 | | 1108 | 1bcc12a2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBXDriver_Glyphs.res | 05-23-2008 | 22:14:12 | | 4872 | e1149f47 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBXDriver_D6.dpk | 07-10-2004 | 21:31:32 | | 702 | 338e872e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBXDriver_D6.res | 05-23-2008 | 22:14:22 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBXDriver_D6.cfg | 07-07-2003 | 00:22:46 | | 602 | e309783a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBXDriver_D7.dof | 05-23-2008 | 22:14:06 | | 2740 | 9ebd3d94 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBXDriver_D7.dpk | 07-10-2004 | 21:31:32 | | 702 | 8a6d3f0f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBXDriver_D7.res | 05-23-2008 | 22:14:30 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBXDriver_D7.cfg | 11-30-2003 | 20:22:56 | | 766 | 663e6809 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBXDriver_D10.bdsproj | 12-03-2005 | 18:13:50 | | 8217 | 4b9d404d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBXDriver_D10.cfg | 12-03-2005 | 18:13:50 | | 682 | 5332ff3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBXDriver_D10.dpk | 12-03-2005 | 18:13:50 | | 704 | 78a4c5ad +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBXDriver_D10.res | 05-23-2008 | 22:14:40 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBXDriver_D11.dproj | 09-13-2007 | 13:01:04 | | 5794 | 59a4fe5c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBXDriver_D11.dpk | 09-13-2007 | 13:01:04 | | 704 | 7bd9d86f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBXDriver_D11.res | 05-23-2008 | 22:14:50 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAIBXDriverHtml.res | 05-23-2008 | 22:15:26 | | 1028 | 494e2631 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAIBXDrv.dof | 05-23-2008 | 22:14:06 | | 2613 | 5f0ba1a8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAIBXDrv.dpr | 07-10-2004 | 21:30:48 | | 146 | 3e93234c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAIBXDrv.res | 05-23-2008 | 22:15:32 | | 672 | 43f8040a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAIBXDrv.cfg | 07-10-2004 | 21:30:48 | | 565 | 554472c9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\uDABDEDriver.pas | 05-21-2008 | 11:32:38 | | 47618 | 5f2fa0ac +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_BDEDriver_D7.cfg | 01-09-2007 | 14:54:56 | | 702 | 538151b0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_BDEDriver_D7.dpk | 01-09-2007 | 14:54:56 | | 686 | 4ecfc953 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_BDEDriver_D7.res | 05-23-2008 | 22:14:32 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_BDEDriver_D6.dpk | 01-09-2007 | 14:54:56 | | 686 | e95de8c5 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_BDEDriver_D6.cfg | 01-09-2007 | 14:54:56 | | 538 | 21fc77be +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_BDEDriver_D6.res | 05-23-2008 | 22:14:24 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_BDEDriver_D10.bdsproj | 01-09-2007 | 14:54:56 | | 8194 | 765d2fbf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_BDEDriver_D10.dpk | 01-09-2007 | 14:54:56 | | 688 | 67f196bf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_BDEDriver_D10.cfg | 01-09-2007 | 14:54:56 | | 682 | 5332ff3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_BDEDriver_D10.res | 05-23-2008 | 22:14:42 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_BDEDriver_D11.dproj | 09-13-2007 | 13:01:04 | | 5778 | 70333d2f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_BDEDriver_D11.dpk | 09-13-2007 | 13:01:04 | | 688 | a94673b9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_BDEDriver_D11.res | 05-23-2008 | 22:14:52 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_BDEDriver_Glyphs.res | 05-23-2008 | 22:14:12 | | 4872 | 1b92d3d1 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DABDEDriverHtml.res | 05-23-2008 | 22:15:26 | | 1260 | 73153790 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DABDEDrv.bdsproj | 01-09-2007 | 14:54:56 | | 7991 | 32b3ddda +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DABDEDrv.dpr | 01-09-2007 | 14:54:56 | | 144 | ebac53d2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DABDEDrv.cfg | 01-09-2007 | 14:54:56 | | 355 | 53932dcf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DABDEDrv.dof | 05-23-2008 | 22:14:06 | | 1377 | 84ba5373 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DABDEDrv.res | 05-23-2008 | 22:15:34 | | 672 | 43f8040a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\uDADBXDriver.pas | 05-18-2008 | 02:13:02 | | 31194 | 1253d3af +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBXDriver_Glyphs.res | 05-23-2008 | 22:14:12 | | 4872 | bd88b2d2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBXDriver_D6.dpk | 07-10-2004 | 21:31:32 | | 701 | 24c1fbb1 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBXDriver_D6.res | 05-23-2008 | 22:14:22 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBXDriver_D6.cfg | 07-07-2003 | 00:22:46 | | 602 | 21091978 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBXDriver_D6.dof | 05-23-2008 | 22:14:06 | | 1100 | 4947e4fd +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBXDriver_D7.dpk | 07-10-2004 | 21:31:32 | | 701 | 5a85369f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBXDriver_D7.res | 05-23-2008 | 22:14:32 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBXDriver_D7.cfg | 11-30-2003 | 20:22:56 | | 766 | 67f91117 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBXDriver_D7.dof | 05-23-2008 | 22:14:06 | | 2732 | fc96c760 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBXDriver_D10.bdsproj | 12-03-2005 | 18:13:50 | | 8209 | b56cb2c1 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBXDriver_D10.dpk | 12-03-2005 | 18:13:50 | | 680 | 67d8dcd6 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBXDriver_D10.res | 05-23-2008 | 22:14:40 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBXDriver_D10.cfg | 12-03-2005 | 18:13:50 | | 682 | 43d7fe7c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBXDriver_D11.dproj | 09-13-2007 | 13:01:04 | | 6024 | 47017bfc +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBXDriver_D11.dpk | 09-13-2007 | 13:01:04 | | 680 | c534253d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBXDriver_D11.res | 05-23-2008 | 22:14:52 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DADBXDriverHtml.res | 05-23-2008 | 22:15:26 | | 1536 | 91e65f1a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DADBXDrv.dof | 05-23-2008 | 22:14:06 | | 2613 | 5f0ba1a8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DADBXDrv.dpr | 07-10-2004 | 21:30:48 | | 146 | 71150d57 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DADBXDrv.res | 05-23-2008 | 22:15:28 | | 672 | 43f8040a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DADBXDrv.cfg | 11-30-2003 | 20:22:28 | | 565 | 554472c9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\uDASDACDriver.pas | 12-26-2007 | 13:41:40 | | 17264 | c7d9d4f2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SDACDriver_Glyphs.res | 05-23-2008 | 22:14:12 | | 4872 | 956249d6 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SDACDriver_D6.dpk | 07-10-2004 | 21:31:32 | | 726 | c2b8031 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SDACDriver_D6.res | 07-07-2003 | 00:22:46 | | 1728 | 71daad01 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SDACDriver_D6.cfg | 07-07-2003 | 00:22:46 | | 602 | 21091978 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SDACDriver_D6.dof | 05-23-2008 | 22:14:08 | | 1180 | 6a31b850 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SDACDriver_D7.dpk | 07-10-2004 | 21:31:32 | | 726 | 2c977e43 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SDACDriver_D7.res | 11-30-2003 | 20:22:56 | | 1368 | 9d3db5ae +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SDACDriver_D7.cfg | 11-30-2003 | 20:22:56 | | 766 | 67f91117 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SDACDriver_D7.dof | 05-23-2008 | 22:14:08 | | 2812 | 5b7d16d5 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SDACDriver_D10.bdsproj | 12-03-2005 | 18:13:50 | | 8258 | bfd9d50d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SDACDriver_D10.dpk | 04-06-2006 | 12:23:14 | | 731 | 30255ff9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SDACDriver_D10.res | 12-03-2005 | 18:13:50 | | 1664 | 5b6ba919 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SDACDriver_D10.cfg | 12-03-2005 | 18:13:50 | | 682 | 43d7fe7c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SDACDriver_D11.dproj | 09-13-2007 | 13:01:04 | | 6542 | c4943cf6 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SDACDriver_D11.dpk | 09-13-2007 | 13:01:04 | | 731 | 825e7bdc +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SDACDriver_D11.res | 09-13-2007 | 13:01:04 | | 1664 | 5b6ba919 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DASDACDriverHtml.res | 05-23-2008 | 22:15:26 | | 1072 | 866a09f7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DASDACDrv.dof | 05-23-2008 | 22:14:06 | | 2613 | a50a6321 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DASDACDrv.dpr | 07-10-2004 | 21:30:48 | | 143 | f3834ab +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DASDACDrv.res | 05-23-2008 | 22:15:36 | | 672 | 43f8040a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DASDACDrv.cfg | 08-28-2003 | 18:49:10 | | 449 | 1bb117f7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\uDAODACDriver.pas | 04-18-2008 | 15:32:10 | | 20334 | 84adca03 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ODACDriver_Glyphs.res | 05-23-2008 | 22:14:12 | | 4872 | f42f8c57 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ODACDriver_D6.dpk | 07-10-2004 | 21:31:32 | | 726 | a84315fa +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ODACDriver_D6.res | 07-07-2003 | 00:22:46 | | 1728 | 71daad01 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ODACDriver_D6.cfg | 07-07-2003 | 00:22:46 | | 602 | 21091978 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ODACDriver_D6.dof | 05-23-2008 | 22:14:08 | | 1180 | 16320b11 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ODACDriver_D7.dpk | 07-10-2004 | 21:31:32 | | 726 | 99f46189 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ODACDriver_D7.res | 07-07-2003 | 00:22:46 | | 1728 | 71daad01 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ODACDriver_D7.cfg | 11-30-2003 | 20:22:56 | | 766 | 67f91117 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ODACDriver_D7.dof | 05-23-2008 | 22:14:08 | | 2812 | 1e4a55a4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ODACDriver_D10.bdsproj | 12-03-2005 | 18:13:50 | | 8258 | 87d6b4dd +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ODACDriver_D10.dpk | 12-03-2005 | 18:13:50 | | 731 | 3b5ef5e5 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ODACDriver_D10.res | 12-03-2005 | 18:13:50 | | 1664 | 5b6ba919 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ODACDriver_D10.cfg | 12-03-2005 | 18:13:50 | | 682 | 43d7fe7c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ODACDriver_D11.dproj | 09-13-2007 | 13:01:04 | | 6912 | 578c0ebd +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ODACDriver_D11.dpk | 09-13-2007 | 13:01:04 | | 731 | 512e06f1 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ODACDriver_D11.res | 09-13-2007 | 13:01:04 | | 1664 | 5b6ba919 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAODACDriverHtml.res | 05-23-2008 | 22:15:26 | | 256 | 418ed98a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAODACDrv.dof | 05-23-2008 | 22:14:06 | | 2613 | 5f0ba1a8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAODACDrv.dpr | 07-10-2004 | 21:30:48 | | 199 | 3df4ee55 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAODACDrv.res | 05-23-2008 | 22:15:38 | | 672 | 43f8040a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAODACDrv.cfg | 07-07-2003 | 00:22:46 | | 449 | 1bb117f7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\uDACRLabsUtils.inc | 04-20-2007 | 14:55:46 | | 2054 | 5d74ea99 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBDACDriver_Glyphs.res | 05-23-2008 | 22:14:12 | | 4884 | 72488e5b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBDACDriver_D6.dpk | 09-10-2006 | 12:13:44 | | 700 | 73a803f5 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBDACDriver_D6.res | 09-10-2006 | 12:06:36 | | 1508 | 6f44119 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBDACDriver_D6.cfg | 09-10-2006 | 12:06:36 | | 414 | 1094c05a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBDACDriver_D6.dof | 05-23-2008 | 22:14:06 | | 1034 | f95aacde +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBDACDriver_D7.cfg | 09-10-2006 | 12:06:36 | | 578 | 62cae970 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBDACDriver_D7.dof | 05-23-2008 | 22:14:06 | | 1825 | eb6ad336 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBDACDriver_D7.dpk | 09-10-2006 | 12:06:36 | | 700 | 5fae4726 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBDACDriver_D7.res | 09-10-2006 | 12:06:36 | | 1508 | 6f44119 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBDACDriver_D10.bdsproj | 09-10-2006 | 12:06:36 | | 8251 | c6f5d44d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBDACDriver_D10.cfg | 09-10-2006 | 12:06:36 | | 682 | 43d7fe7c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBDACDriver_D10.dpk | 09-10-2006 | 12:06:36 | | 704 | 6025204c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBDACDriver_D10.res | 09-10-2006 | 12:06:36 | | 1664 | 5b6ba919 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBDACDriver_D11.dproj | 09-13-2007 | 13:01:04 | | 6141 | 9fbf2494 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBDACDriver_D11.dpk | 09-13-2007 | 13:01:04 | | 704 | 39f84d43 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBDACDriver_D11.res | 09-13-2007 | 13:01:04 | | 1664 | 5b6ba919 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAIBDACDriverHtml.res | 05-23-2008 | 22:15:26 | | 1016 | db72aff4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAIBDACDrv.dpr | 09-10-2006 | 12:06:36 | | 147 | de1534cb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAIBDACDrv.res | 05-23-2008 | 22:15:42 | | 664 | d209c9a4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\uDAIBDACDriver.pas | 12-26-2007 | 13:41:40 | | 16150 | 91a10269 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\uDAIBODriver.pas | 01-10-2008 | 13:05:02 | | 15113 | 7d6da987 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBODriver_D6.dpk | 10-12-2007 | 13:33:58 | | 723 | 30db4126 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBODriver_Glyphs.res | 05-23-2008 | 22:14:12 | | 4872 | 85f9f724 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBODriver_D6.res | 07-07-2003 | 00:22:46 | | 1728 | 71daad01 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBODriver_D6.cfg | 07-07-2003 | 00:22:46 | | 602 | e309783a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBODriver_D6.dof | 05-23-2008 | 22:14:06 | | 1184 | 23c713ba +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBODriver_D7.dpk | 10-12-2007 | 13:33:58 | | 721 | 240401ba +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBODriver_D7.res | 07-07-2003 | 00:22:46 | | 1728 | 71daad01 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBODriver_D7.cfg | 11-30-2003 | 20:22:56 | | 766 | 663e6809 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBODriver_D7.dof | 05-23-2008 | 22:14:06 | | 2827 | 337ab2ad +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBODriver_D10.bdsproj | 12-03-2005 | 18:13:50 | | 8261 | f65e0e4c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBODriver_D10.dpk | 10-12-2007 | 13:33:58 | | 727 | 34abb692 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBODriver_D10.res | 12-03-2005 | 18:13:50 | | 1664 | 5b6ba919 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBODriver_D10.cfg | 12-03-2005 | 18:13:50 | | 682 | 5332ff3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBODriver_D11.dproj | 10-12-2007 | 13:33:58 | | 5680 | bcf2c0c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBODriver_D11.dpk | 10-12-2007 | 13:33:58 | | 729 | dec87a78 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_IBODriver_D11.res | 09-13-2007 | 13:01:04 | | 1664 | 5b6ba919 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAIBODriverHtml.res | 05-23-2008 | 22:15:26 | | 1012 | 37a24168 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAIBODrv.dof | 05-23-2008 | 22:14:06 | | 2613 | 5f0ba1a8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAIBODrv.dpr | 07-10-2004 | 21:30:48 | | 146 | 8f0effc8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAIBODrv.res | 05-23-2008 | 22:15:52 | | 672 | 43f8040a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAIBODrv.cfg | 07-07-2003 | 00:22:46 | | 449 | 1bb117f7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\uDAMyDACDriver.pas | 12-26-2007 | 13:41:40 | | 16020 | 4e260c3a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MyDACDriver_Glyphs.res | 05-23-2008 | 22:14:12 | | 4884 | e4fbadb3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MyDACDriver_D7.dpk | 09-10-2006 | 12:39:30 | | 731 | c74fe3f7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MyDACDriver_D7.res | 07-21-2003 | 17:50:02 | | 1508 | 6f44119 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MyDACDriver_D7.dof | 05-23-2008 | 22:14:06 | | 1825 | d3a6d83c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MyDACDriver_D7.cfg | 10-22-2006 | 02:30:52 | | 766 | 663e6809 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MyDACDriver_D6.dpk | 09-10-2006 | 12:39:30 | | 731 | 9254802d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MyDACDriver_D6.dof | 05-23-2008 | 22:14:06 | | 1825 | 3af3fd2a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MyDACDriver_D6.res | 07-21-2003 | 17:50:02 | | 1508 | 6f44119 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MyDACDriver_D6.cfg | 07-21-2003 | 17:50:02 | | 432 | aecf6ae9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MyDACDriver_D10.bdsproj | 09-10-2006 | 12:39:30 | | 8260 | 96a97aa8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MyDACDriver_D10.dpk | 09-10-2006 | 12:39:30 | | 736 | 11aa8590 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MyDACDriver_D10.res | 12-03-2005 | 18:13:50 | | 1664 | 5b6ba919 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MyDACDriver_D10.cfg | 12-03-2005 | 18:13:50 | | 682 | 43d7fe7c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MyDACDriver_D11.dproj | 09-13-2007 | 13:01:04 | | 6465 | b35365dd +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MyDACDriver_D11.dpk | 09-13-2007 | 13:01:04 | | 736 | aee4cfe6 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MyDACDriver_D11.res | 09-13-2007 | 13:01:04 | | 1664 | 5b6ba919 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAMyDACDriverHtml.res | 05-23-2008 | 22:15:26 | | 724 | ac60826 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAMyDACDrv.dpr | 07-10-2004 | 21:30:48 | | 147 | b10d44d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAMyDACDrv.res | 05-23-2008 | 22:15:40 | | 672 | 43f8040a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAMyDACDrv.cfg | 09-19-2006 | 17:00:44 | | 449 | 1bb117f7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAMyDACDrv.dof | 05-23-2008 | 22:14:06 | | 2598 | a8b74ae7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\uDADBISAMDriver.pas | 05-07-2008 | 14:44:04 | | 36488 | 3b758b13 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBISAMDriver_Glyphs.res | 05-23-2008 | 22:14:12 | | 4884 | 875eabb1 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBISAMDriver_D7.cfg | 07-10-2004 | 21:31:32 | | 578 | 8164ffed +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBISAMDriver_D7.dof | 05-23-2008 | 22:14:06 | | 1817 | cbbbdbda +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBISAMDriver_D7.dpk | 07-15-2004 | 11:08:58 | | 718 | 7cf06ac3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBISAMDriver_D7.res | 07-21-2003 | 17:50:02 | | 1572 | c5df4b68 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBISAMDriver_D6.cfg | 07-21-2003 | 17:50:02 | | 602 | e309783a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBISAMDriver_D6.dof | 05-23-2008 | 22:14:06 | | 1430 | 39f52545 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBISAMDriver_D6.dpk | 07-15-2004 | 11:08:58 | | 718 | 1eec0c60 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBISAMDriver_D6.res | 07-21-2003 | 17:50:02 | | 1572 | c5df4b68 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBISAMDriver_D10.bdsproj | 12-03-2005 | 18:13:50 | | 8253 | 60bcd634 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBISAMDriver_D10.dpk | 12-03-2005 | 18:13:50 | | 721 | 222456c2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBISAMDriver_D10.res | 12-03-2005 | 18:13:50 | | 1664 | 5b6ba919 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBISAMDriver_D10.cfg | 12-03-2005 | 18:13:50 | | 682 | 5332ff3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBISAMDriver_D11.dproj | 09-13-2007 | 13:01:04 | | 6669 | 14ff3dca +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBISAMDriver_D11.dpk | 09-13-2007 | 13:01:04 | | 724 | e0e68570 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_DBISAMDriver_D11.res | 09-13-2007 | 13:01:04 | | 1664 | 5b6ba919 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DADBISAMDriverHtml.res | 05-23-2008 | 22:15:26 | | 240 | 6a537da3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DADBISAM3Drv.dpr | 07-10-2004 | 22:14:18 | | 268 | d16776c5 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DADBISAM3Drv.cfg | 07-10-2004 | 22:14:18 | | 491 | 97729ed7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DADBISAM3Drv.dof | 05-23-2008 | 22:14:06 | | 2864 | a75aea6 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DADBISAM3Drv.res | 05-23-2008 | 22:15:50 | | 672 | 43f8040a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DADBISAM4Drv.dpr | 07-10-2004 | 22:12:14 | | 269 | 5f37a275 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DADBISAM4Drv.cfg | 07-21-2003 | 17:50:02 | | 491 | 97729ed7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DADBISAM4Drv.dof | 05-23-2008 | 22:14:06 | | 2864 | a75aea6 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DADBISAM4Drv.res | 05-23-2008 | 22:15:50 | | 672 | 43f8040a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MySQLDACDriver_D6.res | 05-08-2006 | 18:38:36 | | 524 | 4b031689 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MySQLDACDriver_D6.dpk | 05-08-2006 | 18:38:36 | | 719 | 886411ae +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MySQLDACDriver_D6.dof | 05-23-2008 | 22:14:06 | | 1106 | 3a76705 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MySQLDACDriver_D6.cfg | 05-08-2006 | 18:38:36 | | 602 | e309783a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MySQLDACDriver_D7.res | 05-08-2006 | 18:38:36 | | 524 | 4b031689 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MySQLDACDriver_D7.dpk | 05-08-2006 | 18:38:36 | | 719 | db5ef128 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MySQLDACDriver_D7.dof | 05-23-2008 | 22:14:06 | | 2738 | dcbfe9e3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MySQLDACDriver_D7.cfg | 05-08-2006 | 18:38:36 | | 766 | 663e6809 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MySQLDACDriver_D10.bdsproj | 05-08-2006 | 18:38:36 | | 8220 | 6ec03f93 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MySQLDACDriver_D10.res | 05-08-2006 | 18:38:36 | | 5096 | ef765b40 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MySQLDACDriver_D10.dpk | 05-08-2006 | 18:38:36 | | 722 | 56a49633 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MySQLDACDriver_D11.dproj | 09-13-2007 | 13:01:04 | | 5900 | 7859a780 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MySQLDACDriver_D11.res | 09-13-2007 | 13:01:04 | | 5096 | ef765b40 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MySQLDACDriver_D11.dpk | 09-13-2007 | 13:01:04 | | 722 | a31ca6be +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_MySQLDACDriver_Glyphs.res | 05-23-2008 | 22:14:12 | | 4896 | 19613f13 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\uDAMySQLDACDriver.pas | 12-26-2007 | 13:41:40 | | 9985 | 1507a84a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAMySQLDACDriverHtml.res | 05-23-2008 | 22:15:26 | | 736 | 6cd38443 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAMySQLDACDrv.dpr | 06-22-2006 | 00:17:46 | | 159 | d6b72e17 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAMySQLDACDrv.res | 05-23-2008 | 22:15:48 | | 672 | 43f8040a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAMySQLDACDrv.cfg | 09-19-2006 | 17:00:44 | | 577 | a269b6ae +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAMySQLDACDrv.dof | 05-23-2008 | 22:14:06 | | 2598 | a8b74ae7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_PostgresDACDriver_D6.res | 05-08-2006 | 18:38:36 | | 524 | 4b031689 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_PostgresDACDriver_D6.dpk | 05-08-2006 | 18:38:36 | | 734 | e40f698d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_PostgresDACDriver_D6.dof | 05-23-2008 | 22:14:08 | | 1106 | 3a76705 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_PostgresDACDriver_D6.cfg | 05-08-2006 | 18:38:36 | | 602 | e309783a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_PostgresDACDriver_D7.res | 05-08-2006 | 18:38:36 | | 524 | 4b031689 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_PostgresDACDriver_D7.dpk | 05-08-2006 | 18:38:36 | | 734 | 12d548b8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_PostgresDACDriver_D7.dof | 05-23-2008 | 22:14:08 | | 2738 | dcbfe9e3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_PostgresDACDriver_D7.cfg | 05-08-2006 | 18:38:36 | | 766 | 663e6809 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_PostgresDACDriver_D10.bdsproj | 05-08-2006 | 18:38:36 | | 8229 | ca062619 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_PostgresDACDriver_D10.res | 05-08-2006 | 18:38:36 | | 5096 | ef765b40 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_PostgresDACDriver_D10.dpk | 05-08-2006 | 18:38:36 | | 737 | 332279bc +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_PostgresDACDriver_D10.cfg | 05-08-2006 | 18:38:36 | | 682 | 5332ff3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_PostgresDACDriver_D11.dproj | 09-13-2007 | 13:01:04 | | 5883 | 3c3c3a0f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_PostgresDACDriver_D11.res | 09-13-2007 | 13:01:04 | | 5096 | ef765b40 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_PostgresDACDriver_D11.dpk | 09-13-2007 | 13:01:04 | | 737 | e432d9ea +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_PostgresDACDriver_Glyphs.res | 05-23-2008 | 22:14:12 | | 4920 | 274f9c98 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAPostgresDACDriverHtml.res | 05-23-2008 | 22:15:26 | | 736 | 6cd38443 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\uDAPostgresDACDriver.pas | 12-26-2007 | 13:41:40 | | 10025 | 6acf0824 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAPostgresDACDrv.res | 05-23-2008 | 22:15:44 | | 672 | 43f8040a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAPostgresDACDrv.cfg | 09-19-2006 | 17:00:44 | | 577 | a269b6ae +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAPostgresDACDrv.dof | 05-23-2008 | 22:14:06 | | 2598 | a8b74ae7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAPostgresDACDrv.dpr | 06-22-2006 | 00:17:46 | | 171 | a5e72af9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_FIBDriver_D7.res | 06-21-2006 | 17:13:36 | | 524 | 4b031689 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_FIBDriver_D7.dpk | 06-21-2006 | 17:13:36 | | 692 | a968230e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_FIBDriver_D7.dof | 05-23-2008 | 22:14:06 | | 2730 | 33cb27a6 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_FIBDriver_D7.cfg | 06-21-2006 | 17:13:36 | | 766 | 663e6809 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_FIBDriver_D6.res | 06-21-2006 | 17:13:36 | | 1368 | 8faf9850 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_FIBDriver_D6.dpk | 06-21-2006 | 17:13:36 | | 692 | e92d3631 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_FIBDriver_D6.dof | 05-23-2008 | 22:14:06 | | 1109 | 4f6da5c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_FIBDriver_D6.cfg | 06-21-2006 | 17:13:36 | | 602 | e309783a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_FIBDriver_D10.bdsproj | 06-21-2006 | 17:13:36 | | 8207 | 71e15c8e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_FIBDriver_D10.res | 06-21-2006 | 17:13:36 | | 5096 | ef765b40 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_FIBDriver_D10.dpk | 06-21-2006 | 17:13:36 | | 697 | 223cc4f7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_FIBDriver_D10.cfg | 06-21-2006 | 17:13:36 | | 682 | 5332ff3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_FIBDriver_D11.dproj | 10-12-2007 | 18:50:14 | | 5787 | d8281dfc +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_FIBDriver_D11.res | 09-13-2007 | 13:01:04 | | 5096 | ef765b40 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_FIBDriver_D11.dpk | 10-12-2007 | 18:50:14 | | 697 | e167d68b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_FIBDriver_Glyphs.res | 05-23-2008 | 22:14:12 | | 4872 | 39fb8fc7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAFIBDriverHtml.res | 05-23-2008 | 22:15:26 | | 1032 | acfaa4a2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\uDAFIBDriver.pas | 03-03-2008 | 10:05:50 | | 19712 | d2c7cd4b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAFIBDrv.res | 05-23-2008 | 22:16:18 | | 672 | 43f8040a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAFIBDrv.dpr | 06-19-2006 | 17:17:02 | | 139 | 63f63be5 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAFIBDrv.dof | 05-23-2008 | 22:14:06 | | 2613 | 3427db80 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAFIBDrv.cfg | 09-19-2006 | 17:00:44 | | 582 | dc75a12c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SQLiteDriver_D7.res | 05-23-2008 | 22:14:32 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SQLiteDriver_D7.cfg | 02-15-2007 | 16:14:14 | | 702 | ef2cc5bc +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SQLiteDriver_D7.dof | 05-23-2008 | 22:14:08 | | 2729 | dba0f13c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SQLiteDriver_D7.dpk | 02-15-2007 | 16:14:14 | | 670 | 42681415 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SQLiteDriver_D6.cfg | 02-15-2007 | 16:14:14 | | 538 | 45ac3f83 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SQLiteDriver_D6.dof | 05-23-2008 | 22:14:08 | | 1108 | 9ef26646 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SQLiteDriver_D6.dpk | 02-15-2007 | 16:14:14 | | 670 | d7f90673 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SQLiteDriver_D6.res | 05-23-2008 | 22:14:24 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SQLiteDriver_D10.bdsproj | 02-15-2007 | 16:14:14 | | 8209 | 8750d664 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SQLiteDriver_D10.cfg | 02-15-2007 | 16:14:14 | | 682 | 43d7fe7c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SQLiteDriver_D10.dpk | 02-15-2007 | 16:14:14 | | 672 | 44fc6714 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SQLiteDriver_D10.res | 05-23-2008 | 22:14:42 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SQLiteDriver_D11.dproj | 09-13-2007 | 13:01:04 | | 5939 | 81a1cff4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SQLiteDriver_D11.dpk | 09-13-2007 | 13:01:04 | | 672 | 6cdb767c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SQLiteDriver_D11.res | 05-23-2008 | 22:14:52 | | 528 | 72f60ecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_SQLiteDriver_Glyphs.res | 05-23-2008 | 22:14:12 | | 4884 | 26831d13 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DASQLiteDriverHtml.res | 05-23-2008 | 22:15:26 | | 616 | 13eaaa89 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\uDASQLiteDriver.pas | 12-26-2007 | 13:41:40 | | 10561 | 890264cf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DASQLiteDrv.bdsproj | 02-15-2007 | 16:14:14 | | 10223 | 7dbfc7c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DASQLiteDrv.cfg | 02-15-2007 | 16:14:14 | | 295 | e9de943c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DASQLiteDrv.dpr | 02-15-2007 | 16:14:14 | | 158 | 2a3af1a4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DASQLiteDrv.res | 05-23-2008 | 22:15:34 | | 672 | 43f8040a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\ASGRout3.pas | 09-21-2005 | 10:29:00 | | 11531 | 7635d901 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\asgsqlite3.pas | 03-23-2006 | 10:03:00 | | 203585 | d8aae3f9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\asqlite_def.inc | 01-10-2006 | 11:23:00 | | 2413 | aeae0406 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_NexusDBDriver_D6.cfg | 05-04-2007 | 15:59:30 | | 423 | 82fbbbc0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_NexusDBDriver_D6.dof | 05-23-2008 | 22:14:06 | | 1767 | dcba9716 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_NexusDBDriver_D6.dpk | 03-31-2008 | 09:47:36 | | 843 | 56fd6dc6 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_NexusDBDriver_D6.res | 05-04-2007 | 15:59:30 | | 1536 | d862b20a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_NexusDBDriver_D7.cfg | 05-04-2007 | 15:59:30 | | 497 | 8a5b2508 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_NexusDBDriver_D7.dof | 05-23-2008 | 22:14:06 | | 1767 | 858527c3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_NexusDBDriver_D7.dpk | 03-31-2008 | 09:47:36 | | 900 | e038eab9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_NexusDBDriver_D7.res | 05-04-2007 | 15:59:30 | | 1216 | be2dbc7c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_NexusDBDriver_D10.bdsproj | 05-04-2007 | 15:59:30 | | 8554 | dc31a1aa +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_NexusDBDriver_D10.cfg | 05-04-2007 | 15:59:30 | | 470 | 1a635324 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_NexusDBDriver_D10.dpk | 03-31-2008 | 09:47:36 | | 903 | f7d73118 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_NexusDBDriver_D10.res | 05-04-2007 | 15:59:30 | | 1508 | e2970298 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_NexusDBDriver_D11.dproj | 09-13-2007 | 13:01:04 | | 7359 | 209459fb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_NexusDBDriver_D11.dpk | 09-13-2007 | 13:01:04 | | 894 | 7fb61813 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_NexusDBDriver_D11.res | 09-13-2007 | 13:01:04 | | 1508 | e2970298 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\uDANexusDBDriver.dcr | 05-04-2007 | 15:59:30 | | 1732 | fbd3a80a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\uDANexusDBDriver.pas | 05-06-2008 | 11:34:08 | | 35443 | 6706621e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DANexusDBDriverHtml.res | 05-23-2008 | 22:15:26 | | 1108 | 62b1686a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DANexusDBDrv.cfg | 05-04-2007 | 15:59:30 | | 579 | eb667121 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DANexusDBDrv.dpr | 05-04-2007 | 15:59:30 | | 155 | 940e2aea +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DANexusDBDrv.res | 05-23-2008 | 22:15:56 | | 672 | 43f8040a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ZeosDriver_D6.cfg | 05-05-2007 | 00:23:52 | | 602 | 21091978 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ZeosDriver_D6.dof | 05-23-2008 | 22:14:08 | | 1171 | 3a724d62 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ZeosDriver_D6.dpk | 05-05-2007 | 00:23:52 | | 706 | bf55b8f3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ZeosDriver_D6.res | 05-05-2007 | 00:23:52 | | 1728 | 71daad01 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ZeosDriver_D7.cfg | 05-05-2007 | 00:23:52 | | 766 | 67f91117 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ZeosDriver_D7.dof | 05-23-2008 | 22:14:08 | | 1954 | 8427f1eb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ZeosDriver_D7.dpk | 05-05-2007 | 00:23:52 | | 706 | 46f6556d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ZeosDriver_D7.res | 05-05-2007 | 00:23:52 | | 1728 | 71daad01 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ZeosDriver_D10.bdsproj | 05-05-2007 | 00:23:52 | | 8249 | ab4f426d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ZeosDriver_D10.cfg | 05-05-2007 | 00:23:52 | | 682 | 43d7fe7c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ZeosDriver_D10.dpk | 05-05-2007 | 00:23:52 | | 711 | ea667151 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ZeosDriver_D10.res | 05-05-2007 | 00:23:52 | | 1664 | 5b6ba919 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ZeosDriver_D11.dproj | 09-13-2007 | 13:01:04 | | 6182 | 4e25572f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ZeosDriver_D11.dpk | 09-13-2007 | 13:01:04 | | 711 | 3cf783fc +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ZeosDriver_D11.res | 09-13-2007 | 13:01:04 | | 1664 | 5b6ba919 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ZeosDriver_Glyphs.res | 05-23-2008 | 22:14:12 | | 4872 | ff826d2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAZeosDriverHtml.res | 05-23-2008 | 22:15:26 | | 948 | 6cc4708e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\uDAZeosDriver.pas | 05-21-2008 | 11:32:38 | | 47162 | bf7eb04 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAZeosDrv.dpr | 05-05-2007 | 00:23:52 | | 143 | c9e94b8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAZeosDrv.res | 05-23-2008 | 22:16:20 | | 672 | 43f8040a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAZeosDrv.cfg | 05-05-2007 | 00:23:52 | | 690 | 63c841c2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ElevateDBDriver_D6.cfg | 08-30-2007 | 17:29:24 | | 538 | 21fc77be +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ElevateDBDriver_D6.dof | 05-23-2008 | 22:14:06 | | 1095 | 7ef132a0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ElevateDBDriver_D6.dpk | 08-30-2007 | 17:29:24 | | 715 | 6e249d77 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ElevateDBDriver_D6.res | 08-30-2007 | 17:29:24 | | 1368 | 8faf9850 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ElevateDBDriver_D7.cfg | 08-30-2007 | 17:29:24 | | 766 | 663e6809 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ElevateDBDriver_D7.dof | 05-23-2008 | 22:14:06 | | 2743 | e56bb714 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ElevateDBDriver_D7.dpk | 08-30-2007 | 17:29:24 | | 715 | c5fc2b19 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ElevateDBDriver_D7.res | 08-30-2007 | 17:29:24 | | 1368 | bcad8688 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ElevateDBDriver_D10.bdsproj | 08-30-2007 | 17:29:24 | | 8216 | 45f7eff9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ElevateDBDriver_D10.cfg | 08-30-2007 | 17:29:24 | | 682 | 5332ff3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ElevateDBDriver_D10.dpk | 08-30-2007 | 17:29:24 | | 718 | 6c16ecee +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ElevateDBDriver_D10.res | 08-30-2007 | 17:29:24 | | 5096 | ef765b40 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ElevateDBDriver_D11.dproj | 09-13-2007 | 13:01:04 | | 6277 | 8998f96f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ElevateDBDriver_D11.dpk | 09-13-2007 | 13:01:04 | | 720 | a71297ff +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ElevateDBDriver_D11.res | 09-13-2007 | 13:01:04 | | 5096 | ef765b40 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_ElevateDBDriver_Glyphs.res | 05-23-2008 | 22:14:12 | | 4908 | af04da84 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\uDAElevateDBDriver.pas | 12-26-2007 | 13:41:40 | | 59141 | 109f865b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAElevateDBDriverHtml.res | 05-23-2008 | 22:15:26 | | 848 | c0bcac28 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAElevateDBDrv.dpr | 08-30-2007 | 17:29:24 | | 163 | 6df9b686 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAElevateDBDrv.res | 08-30-2007 | 17:29:24 | | 876 | d795f11f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAElevateDBDrv.cfg | 08-30-2007 | 17:29:24 | | 557 | 488183d0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_AnyDACDriver_D6.cfg | 11-26-2007 | 10:32:26 | | 602 | e309783a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_AnyDACDriver_D6.dof | 05-23-2008 | 22:14:06 | | 1097 | f6c43e60 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_AnyDACDriver_D6.dpk | 11-29-2007 | 15:49:34 | | 999 | 46ff3775 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_AnyDACDriver_D6.res | 11-26-2007 | 10:32:26 | | 524 | 4b031689 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_AnyDACDriver_D7.cfg | 11-26-2007 | 10:32:26 | | 746 | 6f4818e8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_AnyDACDriver_D7.dof | 05-23-2008 | 22:14:06 | | 1875 | 2a01ddb0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_AnyDACDriver_D7.dpk | 11-29-2007 | 15:49:34 | | 999 | 78780c67 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_AnyDACDriver_D7.res | 11-26-2007 | 10:32:26 | | 1576 | eef875c0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_AnyDACDriver_D10.bdsproj | 11-26-2007 | 10:32:26 | | 8209 | 50a53cdf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_AnyDACDriver_D10.cfg | 11-26-2007 | 10:32:26 | | 682 | 5332ff3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_AnyDACDriver_D10.dpk | 11-29-2007 | 15:49:34 | | 1014 | 89e8720f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_AnyDACDriver_D10.res | 11-26-2007 | 10:32:26 | | 5096 | ef765b40 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_AnyDACDriver_D11.dproj | 11-26-2007 | 10:32:26 | | 5702 | 5256d38a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_AnyDACDriver_D11.dpk | 11-29-2007 | 15:49:34 | | 1014 | d9d0f145 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_AnyDACDriver_D11.res | 11-26-2007 | 10:32:26 | | 5096 | ef765b40 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DataAbstract_AnyDACDriver_Glyphs.res | 05-23-2008 | 22:14:12 | | 4884 | bb2fd80 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\uDAAnyDACDriver.pas | 05-22-2008 | 10:07:38 | | 102092 | 952dbf77 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAAnyDACDriverHtml.res | 05-23-2008 | 22:15:26 | | 1836 | cd3981d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAAnyDACDrv.dpr | 11-16-2007 | 13:48:44 | | 151 | d75e1134 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAAnyDACDrv.res | 11-16-2007 | 13:48:44 | | 1540 | a295ef5b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAAnyDACDrv.cfg | 12-24-2007 | 17:23:02 | | 345 | 2b931204 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\DAAnyDACDrv.dof | 05-23-2008 | 22:14:06 | | 2591 | 5c2a3506 +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\Unsupported +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\Unsupported\DataAbstract_DOADriver_D7.dpk | 12-02-2003 | 15:37:52 | | 719 | 8e08b8af +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\Unsupported\DataAbstract_DOADriver_D7.res | 12-02-2003 | 15:37:52 | | 1536 | 36084df3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\Unsupported\DataAbstract_DOADriver_D7.cfg | 12-02-2003 | 15:37:52 | | 399 | 3b925e14 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\Unsupported\DataAbstract_DOADriver_D7.dof | 05-23-2008 | 22:14:08 | | 1764 | 964b967b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\Unsupported\DADOADriverHtml.res | 09-23-2004 | 18:20:40 | | 700 | 9c81d4a1 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\Unsupported\uDADOADriver.dcr | 12-02-2003 | 15:37:52 | | 1728 | cc6089fc +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\Unsupported\uDADOADriver.pas | 04-18-2008 | 15:32:10 | | 18281 | b02248f0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\Unsupported\DADOADrv.cfg | 12-02-2003 | 15:37:52 | | 494 | d8385f74 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\Unsupported\DADOADrv.dpr | 09-23-2004 | 18:20:40 | | 174 | 3603251c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\Unsupported\DADOADrv.res | 12-02-2003 | 15:37:52 | | 520 | d6e8fdf5 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Drivers\Unsupported\DOA.INC | 12-02-2003 | 15:37:52 | | 294 | 21b0e9c6 +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Unsupported +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Unsupported\uDAJvMTable.pas | 12-10-2003 | 21:31:28 | | 4314 | 5a8ee3bc +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Unsupported\uDASQLMemoryTable.pas | 12-10-2003 | 21:31:28 | | 6109 | e7811714 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\Unsupported\uDAMemTablesReg.pas | 12-10-2003 | 21:31:28 | | 288 | ed154e21 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract3.RODL | 01-21-2006 | 01:08:26 | | 5733 | 728f5508 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract4.RODL | 05-15-2008 | 16:58:24 | | 11035 | 412ff67d +RegDB Key: Software\RemObjects\RemObjects SDK +RegDB Val: +RegDB Root: 1 +RegDB Key: Software\RemObjects\RemObjects SDK\Variables +RegDB Val: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi +RegDB Name: Data Abstract for Delphi +RegDB Root: 1 +RegDB Key: Software\RemObjects\RemObjects SDK\KnownRodls +RegDB Val: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract4.RODL +RegDB Name: Data Abstract +RegDB Root: 1 +RegDB Key: Software\RemObjects\RemObjects SDK\KnownRodls +RegDB Val: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract3.RODL +RegDB Name: Data Abstract (v3.0 Legacy) +RegDB Root: 1 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\LOCAL +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\LOCAL\fMainForm.pas | 04-17-2006 | 20:38:04 | | 449 | f35c45b9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\LOCAL\fServerDataModule.dfm | 03-21-2006 | 17:47:40 | | 1210 | 2285fc42 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\LOCAL\fServerDataModule.pas | 10-09-2006 | 18:14:28 | | 733 | fb3f1acb +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\LOCAL\Icon.ico | 03-21-2006 | 17:47:40 | | 3262 | 1d8835a3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\LOCAL\Info.ini | 05-14-2007 | 16:01:38 | | 158 | 9c0257a5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\LOCAL\$SERVICENAME_Impl.dfm | 04-06-2007 | 17:57:06 | | 563 | 4124f31b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\LOCAL\$SERVICENAME_Impl.pas | 11-20-2007 | 16:58:10 | | 962 | 44d010b5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\LOCAL\$LIBRARYNAME.RODL | 03-21-2006 | 17:47:40 | | 472 | c1b37c00 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\LOCAL\$PRJNAME.dpr | 04-07-2006 | 14:54:02 | | 688 | a4d2e2df +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\LOCAL\$PRJNAME.res | 03-21-2006 | 17:47:40 | | 22748 | 557d2f64 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\LOCAL\fClientDataModule.dfm | 04-06-2007 | 17:57:06 | | 773 | 9b924874 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\LOCAL\fClientDataModule.pas | 05-24-2007 | 16:48:54 | | 730 | 3b68e80b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\LOCAL\fMainForm.dfm | 03-21-2006 | 17:47:40 | | 552 | e1d9eaed +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXEv3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXEv3\$PRJNAME.dpr | 03-21-2006 | 16:06:42 | | 730 | 4e336099 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXEv3\$SERVICENAME_Impl.pas | 11-20-2007 | 16:58:10 | | 954 | e668b28f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXEv3\fServerDataModule.pas | 10-09-2006 | 18:14:28 | | 933 | 88f03c26 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXEv3\fServerForm.pas | 03-21-2006 | 16:07:12 | | 432 | 477057d5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXEv3\Icon.ico | 01-26-2006 | 11:25:20 | | 3262 | 832926e1 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXEv3\$LIBRARYNAME.RODL | 03-21-2006 | 16:53:08 | | 468 | fb976f9b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXEv3\$PRJNAME.res | 04-09-2004 | 01:47:38 | | 22748 | 557d2f64 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXEv3\Info.ini | 06-02-2007 | 09:36:52 | | 210 | 6f3ca70b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXEv3\$SERVICENAME_Impl.dfm | 04-06-2007 | 17:57:06 | | 558 | d5892979 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXEv3\fServerDataModule.dfm | 01-26-2006 | 12:11:34 | | 1214 | 13a1abf9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXEv3\fServerForm.dfm | 01-30-2006 | 15:45:52 | | 552 | f6a3417c +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXEv3\_CLIENT +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXEv3\_CLIENT\fClientDataModule.dfm | 04-06-2007 | 17:57:06 | | 3241 | 5442878e +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXEv3\_CLIENT\fClientForm.dfm | 08-28-2003 | 22:46:56 | | 382 | 835e154b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXEv3\_CLIENT\$PRJNAMEClient.dpr | 04-07-2006 | 14:54:02 | | 402 | 4901c6f1 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXEv3\_CLIENT\fClientDataModule.pas | 04-06-2007 | 17:57:06 | | 682 | dc60bb79 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXEv3\_CLIENT\fClientForm.pas | 03-21-2006 | 16:51:04 | | 424 | c0256547 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXEv3\_CLIENT\$PRJNAMEGroup.bpg | 03-06-2004 | 14:26:16 | | 824 | 207152a6 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXEv3\_CLIENT\$PRJNAMEClient.res | 04-09-2004 | 01:48:24 | | 22748 | 5f92caef +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXE +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXE\fServerDataModule.pas | 10-09-2006 | 18:14:28 | | 933 | 88f03c26 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXE\fServerForm.pas | 03-21-2006 | 16:07:12 | | 432 | 477057d5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXE\$PRJNAME.res | 01-26-2006 | 11:19:48 | | 22748 | 557d2f64 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXE\Info.ini | 05-14-2007 | 16:01:38 | | 207 | 7cd48564 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXE\$SERVICENAME_Impl.dfm | 04-06-2007 | 17:57:06 | | 563 | 4124f31b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXE\fServerDataModule.dfm | 03-21-2006 | 17:47:56 | | 1214 | 5c5680fe +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXE\fServerForm.dfm | 01-30-2006 | 15:45:52 | | 552 | f6a3417c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXE\$PRJNAME.dpr | 03-21-2006 | 16:06:42 | | 730 | 4e336099 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXE\Icon.ico | 01-26-2006 | 11:19:48 | | 3262 | bd87e090 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXE\$LIBRARYNAME.RODL | 03-21-2006 | 16:53:08 | | 472 | c1b37c00 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXE\$SERVICENAME_Impl.pas | 11-20-2007 | 16:58:10 | | 962 | 44d010b5 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXE\_Client +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXE\_Client\fClientDataModule.pas | 05-14-2007 | 20:50:10 | | 682 | dc60bb79 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXE\_Client\fClientForm.pas | 03-21-2006 | 16:51:04 | | 424 | c0256547 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXE\_Client\$PRJNAMEClient.res | 01-26-2006 | 11:19:48 | | 22748 | 5f92caef +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXE\_Client\fClientDataModule.dfm | 04-06-2007 | 17:57:06 | | 665 | ca676979 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXE\_Client\fClientForm.dfm | 01-26-2006 | 11:19:48 | | 382 | 835e154b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXE\_Client\$PRJNAMEClient.dpr | 04-07-2006 | 14:54:02 | | 402 | 4901c6f1 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLEXE\_Client\$PRJNAMEGroup.bpg | 01-26-2006 | 11:19:48 | | 824 | 207152a6 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE\$SERVICENAME_Impl.pas | 11-20-2007 | 16:58:10 | | 962 | 44d010b5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE\fServerDataModule.dfm | 03-16-2006 | 17:32:32 | | 1214 | 13a1abf9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE\fServerDataModule.pas | 10-09-2006 | 18:14:28 | | 933 | 88f03c26 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE\fServerForm.dfm | 03-16-2006 | 17:32:32 | | 552 | f6a3417c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE\fServerForm.pas | 03-21-2006 | 16:07:12 | | 432 | 477057d5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE\Icon.ico | 03-21-2006 | 16:05:42 | | 3262 | 64a07412 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE\Info.ini | 05-14-2007 | 16:01:38 | | 232 | 6e47031b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE\LoginService_Impl.dfm | 03-21-2006 | 16:54:00 | | 240 | 50f21526 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE\LoginService_Impl.pas | 04-27-2006 | 16:53:32 | | 2765 | 5d58283 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE\$LIBRARYNAME.RODL | 03-21-2006 | 16:53:08 | | 727 | 19d72479 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE\$PRJNAME.dpr | 03-21-2006 | 16:06:42 | | 815 | 58d36299 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE\$PRJNAME.res | 03-16-2006 | 17:32:32 | | 22748 | 557d2f64 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE\$SERVICENAME_Impl.dfm | 04-06-2007 | 17:57:06 | | 589 | 20d7bc81 +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE\_CLIENT +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE\_CLIENT\$PRJNAMEGroup.bpg | 03-16-2006 | 18:32:58 | | 824 | 207152a6 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE\_CLIENT\fClientDataModule.dfm | 08-24-2007 | 01:38:04 | | 665 | ca676979 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE\_CLIENT\fClientDataModule.pas | 08-24-2007 | 01:38:04 | | 696 | d0d441d1 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE\_CLIENT\fClientForm.dfm | 03-21-2006 | 16:07:32 | | 430 | 90480bf5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE\_CLIENT\fClientForm.pas | 03-21-2006 | 16:54:20 | | 1544 | bd1989a3 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE\_CLIENT\fLoginForm.dfm | 05-23-2008 | 22:04:48 | | 1501 | 94d63255 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE\_CLIENT\fLoginForm.pas | 03-16-2006 | 18:32:58 | | 857 | c5ad0243 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE\_CLIENT\$PRJNAMEClient.dpr | 04-07-2006 | 14:54:02 | | 449 | e9022e5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLLOGINEXE\_CLIENT\$PRJNAMEClient.res | 03-16-2006 | 18:32:58 | | 22748 | 5f92caef +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE\fServerDataModule.dfm | 03-21-2006 | 16:57:38 | | 1214 | 13a1abf9 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE\fServerDataModule.pas | 10-09-2006 | 18:14:28 | | 933 | 88f03c26 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE\fServerForm.dfm | 03-21-2006 | 16:57:38 | | 552 | f6a3417c +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE\fServerForm.pas | 03-21-2006 | 16:57:38 | | 432 | 477057d5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE\Icon.ico | 03-21-2006 | 16:57:38 | | 3262 | 64a07412 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE\Info.ini | 05-14-2007 | 16:01:38 | | 234 | f028dc2b +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE\LoginService_Impl.dfm | 02-12-2008 | 21:10:02 | | 298 | ed986157 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE\LoginService_Impl.pas | 02-12-2008 | 21:10:02 | | 2926 | f12e7ced +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE\$LIBRARYNAME.RODL | 02-12-2008 | 21:10:02 | | 730 | a1a1ad32 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE\$PRJNAME.dpr | 03-21-2006 | 16:57:38 | | 815 | 58d36299 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE\$PRJNAME.res | 03-21-2006 | 16:57:38 | | 22748 | 557d2f64 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE\$SERVICENAME_Impl.dfm | 04-06-2007 | 17:57:06 | | 661 | 51761ba +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE\$SERVICENAME_Impl.pas | 02-05-2008 | 19:02:40 | | 1288 | cf7f32ef +Made Dir: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE\_CLIENT +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE\_CLIENT\fClientDataModule.dfm | 04-06-2007 | 17:57:06 | | 665 | ca676979 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE\_CLIENT\fClientDataModule.pas | 04-06-2007 | 17:57:06 | | 702 | 4391a3df +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE\_CLIENT\fClientForm.dfm | 03-21-2006 | 16:57:38 | | 430 | 90480bf5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE\_CLIENT\fClientForm.pas | 02-12-2008 | 21:10:02 | | 1984 | 85a5283f +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE\_CLIENT\fLoginForm.dfm | 05-23-2008 | 22:04:48 | | 1867 | 511aa01a +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE\_CLIENT\fLoginForm.pas | 03-21-2006 | 16:57:38 | | 910 | 38c7c2ae +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE\_CLIENT\$PRJNAMEClient.dpr | 04-07-2006 | 14:54:02 | | 449 | e9022e5 +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE\_CLIENT\$PRJNAMEClient.res | 03-21-2006 | 16:57:38 | | 22748 | 5f92caef +File Copy: C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Templates\DA\VCLMULTIDBLOGINEXE\_CLIENT\$PRJNAMEGroup.bpg | 03-21-2006 | 16:57:38 | | 824 | 207152a6 +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Samples.html | 12-05-2007 | 18:11:30 | | 27838 | 51dbcc8c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Styles.css | 06-27-2006 | 18:15:16 | | 1490 | c0549e5f +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModelClientChanges.dfm | 11-03-2006 | 18:43:06 | | 1264 | 8eec4241 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModelClientChanges.pas | 11-03-2006 | 18:43:06 | | 3222 | 99d8995a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModelServerMain.pas | 10-16-2006 | 13:29:48 | | 529 | 10edc539 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModelService_Impl.pas | 11-03-2006 | 18:43:06 | | 1547 | 338fd928 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModelClient.res | 10-16-2006 | 13:29:48 | | 22748 | f3e8a260 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModelServer.res | 10-16-2006 | 13:29:48 | | 22748 | f90747eb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\RODLFILE.res | 11-03-2006 | 18:43:06 | | 7688 | b7448ee7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModelClientData.dfm | 11-03-2006 | 18:43:06 | | 10419 | a87db52e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModelClientMain.dfm | 11-03-2006 | 18:43:06 | | 3229 | 501f0d2c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModelServerData.dfm | 05-23-2008 | 22:13:52 | | 1384 | c71fbcd3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModelServerMain.dfm | 11-03-2006 | 18:43:06 | | 624 | aff26fe +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModelService_Impl.dfm | 08-22-2007 | 04:10:36 | | 15425 | ed975fc2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModelClient.dpr | 11-03-2006 | 18:43:06 | | 697 | 3deca3b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModelClient.bdsproj | 05-25-2007 | 16:11:14 | | 8395 | ade9bed8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModelClient.dproj | 05-29-2007 | 16:40:04 | | 3737 | bcfce161 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModelServer.dpr | 10-16-2006 | 13:29:48 | | 941 | bc5bf434 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModelServer.bdsproj | 05-25-2007 | 16:11:14 | | 8395 | 68452c3b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModelServer.dproj | 05-29-2007 | 16:40:04 | | 3852 | 2c95b659 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModel.Sample.html | 10-24-2006 | 12:58:54 | | 938 | 86e07f73 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModelLibrary.rodl | 10-16-2006 | 13:29:48 | | 668 | 74fcd02a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModel.bpg | 10-16-2006 | 13:29:48 | | 881 | f1ebdc12 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModel.bdsgroup | 05-25-2007 | 16:11:14 | | 759 | b8326ff3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModel.groupproj | 05-29-2007 | 16:40:04 | | 1608 | 626ad7e3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModelClientData.pas | 10-16-2006 | 13:29:48 | | 950 | b8a15c57 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModelClientMain.pas | 11-09-2006 | 16:49:04 | | 4065 | 8130f903 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModelLibrary_Intf.pas | 11-03-2006 | 18:43:06 | | 2273 | d04fb38f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModelLibrary_Invk.pas | 10-16-2006 | 13:29:48 | | 1029 | 6029273 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Briefcase\BriefcaseModelServerData.pas | 10-16-2006 | 13:29:48 | | 980 | ed56a357 +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessorLibrary_Intf.pas | 03-02-2007 | 17:09:58 | | 2345 | b8539baf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessorLibrary_Invk.pas | 03-02-2007 | 17:09:58 | | 1050 | 8b286a5d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessorServerData.pas | 10-24-2006 | 15:12:36 | | 994 | f441d6ea +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessorServerMain.pas | 10-24-2006 | 15:12:36 | | 2784 | 18210d59 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessorService_Impl.pas | 10-24-2006 | 15:12:36 | | 1710 | b14e6733 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\SchemaClient_Intf.pas | 10-24-2006 | 15:12:36 | | 38849 | e7d4fc67 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\SchemaServer_Intf.pas | 10-24-2006 | 15:12:36 | | 48848 | f98a988a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\ServerGlobal.pas | 10-24-2006 | 15:12:36 | | 314 | 7c231e12 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessorClient.res | 10-24-2006 | 15:12:36 | | 22748 | f3e8a260 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessorServer.res | 10-24-2006 | 15:12:36 | | 22748 | f90747eb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\RODLFILE.res | 03-02-2007 | 17:09:58 | | 7995 | a926911e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessorClientData.dfm | 03-07-2007 | 13:15:46 | | 11846 | a24f155e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessorClientMain.dfm | 03-02-2007 | 17:09:58 | | 3048 | 223e067d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessorClientUnit1.dfm | 03-07-2007 | 13:54:22 | | 1853 | dd019e55 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessorServerData.dfm | 05-23-2008 | 22:13:52 | | 1391 | 1767b386 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessorServerMain.dfm | 05-23-2008 | 22:13:52 | | 2545 | fd6f8630 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessorService_Impl.dfm | 10-31-2006 | 14:49:54 | | 22056 | 7a0aba0d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessorClient.dpr | 03-07-2007 | 13:54:22 | | 726 | 491f3c9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessorClient.bdsproj | 05-25-2007 | 16:11:14 | | 8398 | dab0f144 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessorClient.dproj | 05-29-2007 | 16:40:04 | | 3811 | 3d2ea593 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessorServer.dpr | 10-24-2006 | 15:12:36 | | 1130 | 5af71c5a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessorServer.bdsproj | 05-25-2007 | 16:11:14 | | 8398 | 256bf437 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessorServer.dproj | 05-29-2007 | 16:40:04 | | 4097 | e17e24bd +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessor.Sample.html | 10-24-2006 | 17:55:46 | | 993 | 59a72f93 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessorLibrary.RODL | 10-24-2006 | 15:12:36 | | 674 | 254c1100 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessor.bpg | 10-24-2006 | 15:12:36 | | 899 | 752446e7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessor.bdsgroup | 05-25-2007 | 16:11:14 | | 777 | 6eb01f31 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessor.groupproj | 05-29-2007 | 16:40:04 | | 1662 | 14c60e69 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BizSchemaClient.pas | 10-24-2006 | 15:12:36 | | 3859 | 4f1bf657 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BizSchemaServer.pas | 06-28-2007 | 16:13:22 | | 4563 | e79ad12b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessorClientData.pas | 03-07-2007 | 13:54:22 | | 3085 | 5c3617a8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessorClientMain.pas | 10-24-2006 | 15:12:36 | | 2019 | 879d9f11 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Processor\BusinessProcessorClientUnit1.pas | 03-31-2007 | 01:10:44 | | 8818 | 111f8076 +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\BusinessRulesScripts_ClientData.dfm | 10-31-2006 | 14:49:54 | | 11055 | 31806259 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\BusinessRulesScripts_ClientMain.dfm | 05-18-2006 | 15:13:38 | | 3199 | 7d22f5b0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\BusinessRulesScripts_ServerData.dfm | 05-23-2008 | 22:13:52 | | 10474 | d8a0d185 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\BusinessRulesScripts_ServerMain.dfm | 05-18-2006 | 15:13:38 | | 1094 | 5696ed51 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\NewService_Impl.dfm | 05-09-2006 | 20:54:48 | | 362 | 14180eed +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\BusinessRulesScripts_Client.dpr | 05-09-2006 | 20:54:48 | | 663 | 9eccd8b4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\BusinessRulesScripts_Client.bdsproj | 05-25-2007 | 16:11:14 | | 8402 | 54c97976 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\BusinessRulesScripts_Client.dproj | 05-29-2007 | 16:40:04 | | 3658 | 1c1c4306 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\BusinessRulesScripts_Server.dpr | 05-09-2006 | 20:54:48 | | 996 | d6a91f54 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\BusinessRulesScripts_Server.bdsproj | 05-25-2007 | 16:11:14 | | 8402 | 3d91221a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\BusinessRulesScripts_Server.dproj | 05-29-2007 | 16:40:04 | | 3898 | a0d4c161 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\BusinessRulesScripts.Sample.html | 05-09-2006 | 20:54:48 | | 1145 | 1f18b956 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\BusinessRulesScriptsLibrary.rodl | 05-17-2006 | 12:42:22 | | 859 | e419c5f4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\BusinessRulesScripts.bpg | 05-09-2006 | 20:54:48 | | 923 | b1129b54 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\BusinessRulesScripts.bdsgroup | 05-25-2007 | 16:11:14 | | 801 | 7f856e17 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\BusinessRulesScripts.groupproj | 05-29-2007 | 16:40:04 | | 1734 | 3c7732ee +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\BusinessRulesScripts_ClientData.pas | 05-30-2006 | 16:29:36 | | 1072 | 17c0f60b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\BusinessRulesScripts_ClientMain.pas | 08-29-2006 | 17:32:12 | | 1121 | 15549909 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\BusinessRulesScripts_ServerData.pas | 05-09-2006 | 20:54:48 | | 976 | 158825ee +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\BusinessRulesScripts_ServerMain.pas | 05-09-2006 | 20:54:48 | | 1286 | c6726b8c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\BusinessRulesScriptsLibrary_Intf.pas | 05-09-2006 | 20:54:48 | | 2697 | f82480da +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\BusinessRulesScriptsLibrary_Invk.pas | 05-09-2006 | 20:54:48 | | 1952 | c9874536 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\NewService_Impl.pas | 05-17-2006 | 12:42:22 | | 1354 | 9b670f33 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\BusinessRulesScripts_Client.res | 05-09-2006 | 20:54:48 | | 22748 | f3e8a260 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\BusinessRulesScripts_Server.res | 05-09-2006 | 20:54:48 | | 22748 | f90747eb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Business Rules Scripts\RODLFILE.res | 05-17-2006 | 12:42:22 | | 790 | afd5341e +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFields_ServerMain.pas | 04-18-2006 | 21:39:56 | | 554 | b2899700 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFieldsLibrary_Intf.pas | 09-19-2007 | 13:14:10 | | 2266 | 85f9c89a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFieldsLibrary_Invk.pas | 09-19-2007 | 13:14:10 | | 1068 | cbd4f0f8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFieldsService_Impl.pas | 09-19-2007 | 13:14:10 | | 2206 | 589de662 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFields_Client.res | 09-19-2007 | 13:14:10 | | 23408 | 74be1547 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFields_Server.res | 09-19-2007 | 13:14:10 | | 23408 | d0d701db +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\RODLFILE.res | 09-19-2007 | 13:14:10 | | 10610 | 3a51a411 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFields_ClientData.dfm | 09-19-2007 | 13:14:10 | | 2609 | 11e66f1e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFields_ClientMain.dfm | 05-23-2008 | 22:13:52 | | 1453 | 8bd9c230 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFields_ServerData.dfm | 05-23-2008 | 22:13:52 | | 1157 | a4d818e1 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFields_ServerMain.dfm | 04-18-2006 | 21:39:56 | | 610 | c344df7b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFieldsService_Impl.dfm | 09-19-2007 | 13:14:10 | | 2323 | 59f0eae9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFields_Client.dpr | 04-18-2006 | 21:39:56 | | 539 | a0ce9dc8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFields_Client.bdsproj | 05-25-2007 | 16:11:14 | | 8392 | aac9248f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFields_Client.dproj | 05-29-2007 | 16:40:04 | | 3576 | c380ab9c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFields_Server.dpr | 04-18-2006 | 21:39:56 | | 843 | b94e74e0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFields_Server.bdsproj | 05-25-2007 | 16:11:14 | | 8391 | 1684d806 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFields_Server.dproj | 05-29-2007 | 16:40:04 | | 3809 | bacf05fd +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFields.Sample.html | 04-27-2006 | 17:10:16 | | 905 | 1e94e578 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFieldsLibrary.rodl | 09-19-2007 | 13:14:10 | | 982 | 8121e529 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFields.bpg | 04-18-2006 | 21:39:56 | | 863 | 143e151b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFields.bdsgroup | 05-25-2007 | 16:11:14 | | 741 | 69330715 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFields.groupproj | 05-29-2007 | 16:40:04 | | 1554 | b17689be +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFields_ClientData.pas | 09-19-2007 | 13:14:10 | | 1955 | fe492cf7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFields_ClientMain.pas | 09-19-2007 | 13:14:10 | | 1155 | ed7c6e8e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Calculated Fields\CalcFields_ServerData.pas | 06-29-2007 | 13:02:48 | | 870 | 23d3e24b +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Connection By User +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Connection By User\ConnectionByUserMain.dfm | 05-23-2008 | 22:13:52 | | 3767 | 6b8226cf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Connection By User\ConnectionByUser.dpr | 04-18-2006 | 21:39:56 | | 329 | 65ab4831 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Connection By User\ConnectionByUser.bdsproj | 05-25-2007 | 16:11:14 | | 8391 | 4cb3f376 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Connection By User\ConnectionByUser.dproj | 05-29-2007 | 16:40:04 | | 3447 | c1b5533a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Connection By User\ConnectionByUser.Sample.html | 06-28-2006 | 16:38:52 | | 1470 | f825d278 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Connection By User\ConnectionByUserMain.pas | 06-28-2006 | 15:31:02 | | 6112 | 5f33a15b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Connection By User\ConnectionByUser.res | 04-18-2006 | 21:39:56 | | 22748 | 23808d40 +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Connection Pooling +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Connection Pooling\ConnectionPoolingMain.dfm | 05-23-2008 | 22:13:52 | | 3871 | 2fad26dc +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Connection Pooling\ConnectionPooling.dpr | 04-18-2006 | 21:39:56 | | 334 | ccc0bec4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Connection Pooling\ConnectionPooling.bdsproj | 05-25-2007 | 16:11:14 | | 8392 | 574bd204 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Connection Pooling\ConnectionPooling.dproj | 05-29-2007 | 16:40:04 | | 3453 | 84446969 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Connection Pooling\ConnectionPooling.Sample.html | 04-27-2006 | 18:04:28 | | 928 | b1ebda5c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Connection Pooling\ConnectionPoolingMain.pas | 12-08-2006 | 17:40:24 | | 4553 | 99ba8166 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Connection Pooling\ConnectionPooling.res | 04-18-2006 | 21:39:56 | | 22748 | 8ffae5cf +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Custom User Logon +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Custom User Logon\CustomUserLogonMain.dfm | 04-18-2006 | 21:39:56 | | 2342 | 3904483b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Custom User Logon\CustomUserLogon.dpr | 04-18-2006 | 21:39:56 | | 320 | e5a55a8e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Custom User Logon\CustomUserLogon.bdsproj | 05-25-2007 | 16:11:14 | | 8390 | 30d29fae +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Custom User Logon\CustomUserLogon.dproj | 05-29-2007 | 16:40:04 | | 3148 | 53e5d916 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Custom User Logon\CustomUserLogon.Sample.html | 04-27-2006 | 18:12:30 | | 1339 | f891346a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Custom User Logon\CustomUserLogonMain.pas | 04-18-2006 | 21:39:56 | | 1491 | 7c7e48f1 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Custom User Logon\CustomUserLogon.res | 04-18-2006 | 21:39:56 | | 22748 | 8ffae5cf +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Data Streamers +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Data Streamers\DataStreamersTest.res | 04-26-2006 | 21:19:08 | | 22748 | 23808d40 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Data Streamers\DataStreamersMain.dfm | 10-16-2006 | 18:04:30 | | 20553 | c9c47646 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Data Streamers\fMainForm.dfm | 06-16-2006 | 18:31:42 | | 20505 | 918e9ea3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Data Streamers\DataStreamersTest.dpr | 06-21-2006 | 06:59:10 | | 310 | 9ecd4c70 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Data Streamers\DataStreamersTest.bdsproj | 05-25-2007 | 16:11:14 | | 8392 | 883931d1 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Data Streamers\DataStreamersTest.dproj | 05-29-2007 | 16:40:04 | | 3445 | f43bbcd9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Data Streamers\DataStreamersTest.Sample.html | 06-21-2006 | 12:49:16 | | 914 | 74c42ac6 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Data Streamers\DataStreamersMain.pas | 10-16-2006 | 18:04:30 | | 7026 | 392b833a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Data Streamers\fMainForm.pas | 06-16-2006 | 18:31:42 | | 6655 | e98e2107 +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic SQL +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic SQL\DynSQLServerMain.pas | 12-17-2007 | 12:24:44 | | 1684 | db2b073b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic SQL\DynSQLService_Impl.pas | 12-17-2007 | 12:24:44 | | 5549 | a03aa4b9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic SQL\DynSQLClient.res | 04-18-2006 | 21:39:56 | | 22748 | f3e8a260 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic SQL\DynSQLServer.res | 06-14-2006 | 17:17:54 | | 22748 | f90747eb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic SQL\RODLFILE.res | 12-17-2007 | 12:24:44 | | 10941 | 7ceefef +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic SQL\DynSQLMainClient.dfm | 12-17-2007 | 12:24:44 | | 6187 | 6970ec8a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic SQL\DynSQLServerMain.dfm | 05-23-2008 | 22:13:52 | | 2109 | b9851054 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic SQL\DynSQLService_Impl.dfm | 12-17-2007 | 12:24:44 | | 1404 | b84a86ee +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic SQL\DynSQLClient.dpr | 04-18-2006 | 21:39:56 | | 351 | 7b3f619f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic SQL\DynSQLClient.bdsproj | 05-25-2007 | 16:11:14 | | 8387 | ca3d414e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic SQL\DynSQLClient.dproj | 06-22-2007 | 13:36:02 | | 3185 | 59319b97 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic SQL\DynSQLServer.dpr | 04-18-2006 | 21:39:56 | | 594 | c28c21fc +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic SQL\DynSQLServer.bdsproj | 05-25-2007 | 16:11:14 | | 8387 | d8a3bf29 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic SQL\DynSQLServer.dproj | 05-29-2007 | 16:40:04 | | 3641 | fbd71cb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic SQL\DynSQL.Sample.html | 04-27-2006 | 18:20:32 | | 2671 | 83f55a8f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic SQL\DynSQLLibrary.RODL | 12-17-2007 | 12:24:44 | | 1314 | 4fe862af +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic SQL\DynSQL.bpg | 04-18-2006 | 21:39:56 | | 833 | d52b2698 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic SQL\DynSQL.bdsgroup | 05-25-2007 | 16:11:14 | | 711 | e4a0fa4d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic SQL\DynSQL.groupproj | 05-29-2007 | 16:40:04 | | 1464 | 2eb718d4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic SQL\DynSQLLibrary_Intf.pas | 12-17-2007 | 12:24:44 | | 2995 | 1df924e2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic SQL\DynSQLLibrary_Invk.pas | 12-17-2007 | 12:24:44 | | 2373 | 81e827ba +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic SQL\DynSQLMainClient.pas | 12-17-2007 | 12:24:44 | | 4361 | 4faed557 +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\DynWhere_ClientMain.pas | 10-05-2007 | 16:48:36 | | 13340 | 78613b90 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\DynWhere_Library.rodl | 10-05-2007 | 16:48:36 | | 759 | 25564ec7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\DynWhere_Library_Intf.pas | 10-05-2007 | 16:48:36 | | 2246 | 8e7c3f3d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\DynWhere_Library_Invk.pas | 10-05-2007 | 16:48:36 | | 1065 | 65ba4523 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\DynWhere_Server.dpr | 10-05-2007 | 16:48:36 | | 941 | 2cf8e451 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\DynWhere_Server.dproj | 02-13-2008 | 11:33:00 | | 9305 | a673db8a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\DynWhere_Server.res | 10-05-2007 | 16:48:36 | | 23408 | 6fd9f544 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\DynWhere_ServerData.dfm | 05-23-2008 | 22:13:52 | | 1401 | 551e7841 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\DynWhere_ServerData.pas | 10-05-2007 | 16:48:36 | | 962 | 2aac0b71 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\DynWhere_ServerMain.dfm | 10-05-2007 | 16:48:36 | | 585 | bac6a2a5 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\DynWhere_ServerMain.pas | 10-05-2007 | 16:48:36 | | 415 | 706d4d59 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\DynWhere_Service_Impl.dfm | 10-05-2007 | 16:48:36 | | 8626 | f7aace21 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\DynWhere_Service_Impl.pas | 10-05-2007 | 16:48:36 | | 1520 | f90c453b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\memoForm.dfm | 10-05-2007 | 16:48:36 | | 1299 | 88765352 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\memoForm.pas | 10-05-2007 | 16:48:36 | | 1183 | c3c20cdd +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\RODLFILE.res | 10-05-2007 | 16:48:36 | | 10424 | 2e56e264 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\WhereExpression.dfm | 10-05-2007 | 16:48:36 | | 3316 | 57405fd9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\WhereExpression.pas | 10-05-2007 | 16:48:36 | | 10189 | e9f88237 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\DynWhere.bpg | 10-05-2007 | 16:48:36 | | 851 | 1587e9cd +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\DynWhere.groupproj | 02-13-2008 | 11:33:00 | | 1758 | ed255330 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\DynWhere.Sample.html | 12-05-2007 | 18:08:00 | | 877 | 35ef094f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\DynWhere_Client.dpr | 10-05-2007 | 16:48:36 | | 629 | b8381d53 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\DynWhere_Client.dproj | 02-13-2008 | 11:33:00 | | 9247 | 33e5b4b1 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\DynWhere_Client.res | 10-05-2007 | 16:48:36 | | 23408 | c8ad192e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\DynWhere_ClientData.dfm | 10-05-2007 | 16:48:36 | | 1837 | 1372312c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\DynWhere_ClientData.pas | 10-05-2007 | 16:48:36 | | 1016 | faa6e476 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Dynamic Where\DynWhere_ClientMain.dfm | 10-05-2007 | 16:48:36 | | 34696 | c068a92e +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables\ExportedDataTablesClientData.pas | 10-11-2007 | 11:46:04 | | 958 | a79575a2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables\ExportedDataTablesClientMain.dfm | 10-11-2007 | 11:46:04 | | 1884 | 49509569 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables\ExportedDataTablesClientMain.pas | 10-11-2007 | 11:46:04 | | 1253 | 6b1e0914 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables\ExportedDataTablesGroup.bpg | 10-11-2007 | 11:46:04 | | 905 | fcb86867 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables\ExportedDataTablesGroup.groupproj | 02-13-2008 | 11:33:00 | | 1938 | 8b0fa175 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables\ExportedDataTablesGroup.Sample.html | 12-05-2007 | 18:08:00 | | 1245 | a1e0905c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables\ExportedDataTablesLibrary.rodl | 10-11-2007 | 11:46:04 | | 814 | 51bd1c7c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables\ExportedDataTablesLibrary_Intf.pas | 10-11-2007 | 11:46:04 | | 2426 | 5131b326 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables\ExportedDataTablesLibrary_Invk.pas | 10-11-2007 | 11:46:04 | | 1092 | b2c8de4a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables\ExportedDataTablesServer.dpr | 10-11-2007 | 11:46:04 | | 1184 | d9402177 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables\ExportedDataTablesServer.dproj | 02-13-2008 | 11:33:00 | | 9436 | d17ee4c1 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables\ExportedDataTablesServer.res | 10-11-2007 | 11:46:04 | | 22748 | 557d2f64 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables\ExportedDataTablesServerData.dfm | 05-23-2008 | 22:13:52 | | 2610 | 2951f8c0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables\ExportedDataTablesServerData.pas | 10-11-2007 | 11:46:04 | | 1141 | de3e0033 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables\ExportedDataTablesServerMain.dfm | 10-11-2007 | 11:46:04 | | 638 | e65a4c27 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables\ExportedDataTablesServerMain.pas | 10-11-2007 | 11:46:04 | | 545 | 96048662 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables\ExportedDataTablesService_Impl.dfm | 10-11-2007 | 11:46:04 | | 1651 | a4715571 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables\ExportedDataTablesService_Impl.pas | 10-11-2007 | 11:46:04 | | 1796 | 8b99723 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables\RODLFILE.res | 10-11-2007 | 11:46:04 | | 10442 | a4e3b82e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables\ExportedDataTablesClient.dpr | 10-11-2007 | 11:46:04 | | 588 | 18b8456 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables\ExportedDataTablesClient.dproj | 02-13-2008 | 11:33:00 | | 9123 | eb8c17c4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables\ExportedDataTablesClient.res | 10-11-2007 | 11:46:04 | | 22748 | 5f92caef +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Exported DataTables\ExportedDataTablesClientData.dfm | 10-11-2007 | 11:46:04 | | 2621 | 2b249f76 +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\FetchServerData.dfm | 05-23-2008 | 22:13:52 | | 1339 | 186564be +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\FetchServerMain.dfm | 06-22-2007 | 13:36:02 | | 596 | 9327c51f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\FetchService_Impl.dfm | 06-22-2007 | 13:36:02 | | 26862 | a7ca5287 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\FetchClient.dpr | 06-22-2007 | 13:36:02 | | 485 | 1e9c7370 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\FetchServer.dpr | 06-22-2007 | 13:36:02 | | 760 | a231df09 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\Fetch.Sample.html | 06-25-2007 | 03:26:56 | | 1893 | 8816de46 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\FetchClientData.pas | 06-22-2007 | 13:36:02 | | 659 | eaa3ba9a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\FetchClientMain.pas | 06-22-2007 | 13:36:02 | | 4345 | 2b152f05 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\FetchLibrary_Intf.pas | 06-22-2007 | 13:36:02 | | 3043 | c776ecab +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\FetchLibrary_Invk.pas | 06-22-2007 | 13:36:02 | | 2389 | 333b74cf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\FetchServerData.pas | 06-22-2007 | 13:36:02 | | 930 | 899927de +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\FetchServerMain.pas | 06-22-2007 | 13:36:02 | | 493 | 6725a7b6 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\FetchService_Impl.pas | 06-22-2007 | 13:36:02 | | 2300 | e8b60ab2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\FetchLibrary.RODL | 06-22-2007 | 13:36:02 | | 1319 | 6182a20d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\Fetch.bdsgroup | 05-25-2007 | 16:11:14 | | 705 | 716302ba +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\FetchClient.bdsproj | 05-25-2007 | 16:11:14 | | 8386 | 51f44bac +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\FetchServer.bdsproj | 05-25-2007 | 16:11:14 | | 8386 | 3b1164c8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\Fetch.groupproj | 06-22-2007 | 13:36:02 | | 1673 | 131c2c0a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\Fetch.bpg | 04-18-2006 | 21:39:56 | | 827 | 618939f4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\FetchClient.res | 04-18-2006 | 21:39:56 | | 22748 | f3e8a260 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\FetchServer.res | 04-18-2006 | 21:39:56 | | 22748 | f90747eb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\RODLFILE.res | 06-22-2007 | 13:36:02 | | 10930 | ef7a2e7c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\FetchClient.dproj | 06-22-2007 | 13:36:02 | | 3695 | 8012e0f3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\FetchServer.dproj | 06-22-2007 | 13:36:02 | | 3417 | da95149a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\FetchClientData.dfm | 06-22-2007 | 13:36:02 | | 684 | 9c3b841a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Fetch\FetchClientMain.dfm | 05-23-2008 | 22:13:52 | | 25997 | 85177039 +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSampleServerMain.pas | 05-09-2006 | 22:38:08 | | 517 | 9b99816b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSampleService_Impl.pas | 05-09-2006 | 22:38:08 | | 1005 | 20b9bbfe +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSampleClient.res | 05-09-2006 | 22:38:08 | | 22748 | f3e8a260 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSampleServer.res | 05-09-2006 | 22:38:08 | | 22748 | f90747eb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\RODLFILE.res | 05-28-2006 | 15:08:02 | | 7683 | 2b020581 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSampleClientData.dfm | 05-28-2006 | 15:08:02 | | 5176 | dfdaaa87 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSampleclientMain.dfm | 05-23-2008 | 22:13:52 | | 1407 | 599512ae +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSampleServerData.dfm | 05-23-2008 | 22:13:52 | | 1573 | 1ed8b78f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSampleServerMain.dfm | 05-09-2006 | 22:38:08 | | 614 | 9d0bcf23 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSampleService_Impl.dfm | 05-09-2006 | 22:38:08 | | 6811 | 6a100574 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSampleClient.dpr | 05-09-2006 | 22:38:08 | | 558 | 50cbe513 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSampleClient.bdsproj | 05-25-2007 | 16:11:14 | | 8392 | 81e73c78 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSampleClient.dproj | 05-29-2007 | 16:40:04 | | 3578 | caaceff4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSampleServer.dpr | 05-09-2006 | 22:38:08 | | 1066 | 316fbed3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSampleServer.bdsproj | 05-25-2007 | 16:11:14 | | 8392 | d38ed87d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSampleServer.dproj | 05-29-2007 | 16:40:04 | | 3816 | a421b2e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSample.Sample.html | 05-30-2006 | 18:11:16 | | 1335 | c66cdecf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSampleLibrary.RODL | 05-09-2006 | 22:38:08 | | 616 | 7738310d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSample.bpg | 05-09-2006 | 22:38:08 | | 863 | 46a2c77c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSample.bdsgroup | 05-25-2007 | 16:11:14 | | 741 | 7d04d0ea +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSample.groupproj | 05-29-2007 | 16:40:04 | | 1554 | 5f1fa1ce +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSampleClientData.pas | 05-28-2006 | 15:08:02 | | 861 | 3155ebfc +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSampleclientMain.pas | 05-09-2006 | 22:38:08 | | 1123 | 200d57af +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSampleLibrary_Intf.pas | 05-09-2006 | 22:38:08 | | 2188 | b022c3f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSampleLibrary_Invk.pas | 05-09-2006 | 22:38:08 | | 1020 | f9fded7d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\First Sample\FirstSampleServerData.pas | 05-09-2006 | 22:38:08 | | 1008 | 8db74204 +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Local Schema +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Local Schema\LocalSchemaMain.dfm | 06-21-2006 | 08:39:44 | | 21118 | 40a8679a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Local Schema\LocalSchema.dpr | 06-21-2006 | 08:39:44 | | 302 | 713f515e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Local Schema\LocalSchema.bdsproj | 05-25-2007 | 16:11:14 | | 8386 | 80f4142e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Local Schema\LocalSchema.dproj | 05-29-2007 | 16:40:04 | | 3417 | 7f512139 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Local Schema\LocalSchema.Sample.html | 06-26-2006 | 09:58:18 | | 2066 | 5702728f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Local Schema\LocalSchemaMain.pas | 06-21-2006 | 08:39:44 | | 1630 | 172251f0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Local Schema\LocalSchema.res | 06-21-2006 | 08:39:44 | | 22748 | 8ffae5cf +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\RODLFILE.res | 05-09-2006 | 21:36:36 | | 7216 | 21a5e9f3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSample_ClientData.dfm | 05-09-2006 | 21:36:36 | | 2744 | a2b0a41c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSample_ClientMain.dfm | 05-23-2008 | 22:13:54 | | 8203 | 24c7ebb8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSample_ServerData.dfm | 05-23-2008 | 22:13:54 | | 1442 | b622052c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSample_ServerMain.dfm | 05-09-2006 | 21:36:36 | | 614 | 15f933ee +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSampleService_Impl.dfm | 05-09-2006 | 21:36:36 | | 10135 | 3adcc24b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginService_Impl.dfm | 06-14-2006 | 12:48:06 | | 1940 | e9b7152b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSample_Client.dpr | 05-09-2006 | 21:36:36 | | 568 | 753f93b1 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSample_Client.bdsproj | 05-25-2007 | 16:11:14 | | 8393 | 9e65bba +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSample_Client.dproj | 05-29-2007 | 16:40:04 | | 3586 | 9561cfad +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSample_server.dpr | 05-09-2006 | 21:36:36 | | 953 | 28f7dd2e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSample_server.bdsproj | 05-25-2007 | 16:11:14 | | 8393 | 6cc32374 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSample_server.dproj | 05-29-2007 | 16:40:04 | | 3930 | 53c347aa +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSample.Sample.html | 05-26-2006 | 15:57:12 | | 698 | e83cc260 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSampleLibrary.RODL | 05-09-2006 | 21:36:36 | | 935 | 461ed2bc +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSample.bpg | 05-09-2006 | 21:36:36 | | 869 | 93572466 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSample.bdsgroup | 05-25-2007 | 16:11:14 | | 747 | 8fd8eaf8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSample.groupproj | 05-29-2007 | 16:40:04 | | 1572 | 3b976ff6 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSample_ClientData.pas | 05-30-2006 | 16:29:36 | | 752 | a8c530b2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSample_ClientMain.pas | 05-09-2006 | 21:36:36 | | 2442 | eae74f4e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSample_ServerData.pas | 05-09-2006 | 21:36:36 | | 970 | 70ebb947 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSample_ServerMain.pas | 05-09-2006 | 21:36:36 | | 521 | bfee5ce3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSampleLibrary_Intf.pas | 05-09-2006 | 21:36:36 | | 3202 | c580b8e9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSampleLibrary_Invk.pas | 05-09-2006 | 21:36:36 | | 1129 | ec0b3044 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSampleService_Impl.pas | 05-09-2006 | 21:36:36 | | 1006 | 8ae362aa +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginService_Impl.pas | 06-14-2006 | 12:48:06 | | 2370 | 1b1fd0b8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSample_Client.res | 05-09-2006 | 21:36:36 | | 22748 | f3e8a260 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Login Sample\LoginSample_server.res | 05-09-2006 | 21:36:36 | | 22748 | f90747eb +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\MegaDemoClient.res | 07-04-2006 | 18:02:52 | | 22748 | f3e8a260 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\MegaDemoServer.res | 07-04-2006 | 18:02:52 | | 22748 | f90747eb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\RODLFILE.res | 05-27-2007 | 14:30:10 | | 12341 | c5ee82a4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\LoginService_Impl.dfm | 05-27-2007 | 14:30:10 | | 6134 | f53090ed +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\MegaDemoClient_Data.dfm | 10-31-2006 | 14:49:54 | | 7173 | ab65ea6f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\MegaDemoClient_Main.dfm | 05-23-2008 | 22:13:54 | | 8210 | 953825ef +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\MegaDemoServer_Data.dfm | 05-27-2007 | 14:30:10 | | 1820 | 287679f0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\MegaDemoServer_Main.dfm | 05-27-2007 | 14:30:10 | | 1024 | 7465dbc0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\OrdersService_Impl.dfm | 05-27-2007 | 14:30:10 | | 10631 | 25ac23f8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\MegaDemoClient.dpr | 07-04-2006 | 18:02:52 | | 488 | ec1e04f0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\MegaDemoClient.bdsproj | 05-25-2007 | 16:11:14 | | 8389 | 26ea8fba +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\MegaDemoClient.dproj | 05-29-2007 | 16:40:04 | | 3558 | 4dd77162 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\MegaDemoServer.dpr | 07-04-2006 | 18:02:52 | | 911 | fd2db59 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\MegaDemoServer.bdsproj | 05-25-2007 | 16:11:14 | | 8389 | ad9878ed +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\MegaDemoServer.dproj | 05-29-2007 | 16:40:04 | | 3886 | eb58a713 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\MegaDemoGroup.Sample.html | 07-04-2006 | 18:02:52 | | 1677 | 6acdb099 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\MegaDemoLibrary.RODL | 05-27-2007 | 14:30:10 | | 2736 | 22537a4a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\MegaDemoGroup.bpg | 07-04-2006 | 18:02:52 | | 845 | 384ad875 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\MegaDemoGroup.bdsgroup | 05-25-2007 | 16:11:14 | | 723 | 1da53ad9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\MegaDemoGroup.groupproj | 05-29-2007 | 16:40:04 | | 1500 | f410f800 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\LoginService_Impl.pas | 05-27-2007 | 14:30:10 | | 3882 | ad340c1d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\MegaDemoClient_Data.pas | 07-17-2006 | 17:30:02 | | 1710 | e221392 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\MegaDemoClient_Main.pas | 05-27-2007 | 14:30:10 | | 5569 | dc87edcf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\MegaDemoLibrary_Intf.pas | 05-27-2007 | 14:30:10 | | 11694 | 8ff6077d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\MegaDemoLibrary_Invk.pas | 05-27-2007 | 14:30:10 | | 4426 | b7823cf0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\MegaDemoServer_Data.pas | 07-05-2006 | 13:26:06 | | 1000 | fa9f4854 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\MegaDemoServer_Main.pas | 07-04-2006 | 18:02:52 | | 1520 | 6eeeeb49 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\MegaDemo\OrdersService_Impl.pas | 02-05-2008 | 19:02:40 | | 3173 | 8d4d6464 +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\MemoryData_Server.dpr | 04-22-2006 | 13:40:36 | | 824 | fe11b666 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\MemoryData_Server.bdsproj | 05-25-2007 | 16:11:14 | | 8392 | baa786a5 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\MemoryData_Server.dproj | 05-29-2007 | 16:40:04 | | 3798 | 1b8b1193 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\MemoryData_Server.res | 04-22-2006 | 13:40:36 | | 22748 | f90747eb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\MemoryData_ServerData.dfm | 05-23-2008 | 22:13:54 | | 1431 | f29f5b6e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\MemoryData_ServerData.pas | 04-22-2006 | 13:40:36 | | 1114 | c0b26ca6 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\MemoryData_ServerMain.dfm | 04-22-2006 | 13:40:36 | | 612 | 5867721a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\MemoryData_ServerMain.pas | 04-22-2006 | 13:40:36 | | 590 | e2a3ca8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\MemoryDataLibrary.rodl | 04-22-2006 | 13:40:36 | | 847 | 39fdca01 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\MemoryDataLibrary_Intf.pas | 04-22-2006 | 13:40:36 | | 2035 | 622910ff +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\MemoryDataLibrary_Invk.pas | 04-22-2006 | 13:40:36 | | 1010 | 76ab5397 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\NewService_Impl.dfm | 12-05-2006 | 16:47:56 | | 20633 | 20767160 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\NewService_Impl.pas | 12-05-2006 | 16:47:56 | | 5763 | db560853 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\RODLFILE.res | 04-22-2006 | 13:40:36 | | 7130 | 85aba0c9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\MemoryData.bpg | 04-22-2006 | 13:40:36 | | 863 | 110a5434 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\MemoryData.bdsgroup | 05-25-2007 | 16:11:14 | | 741 | 11b96f3e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\MemoryData.groupproj | 05-29-2007 | 16:40:04 | | 1554 | 18c7b34f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\MemoryData.Sample.html | 06-21-2006 | 13:47:52 | | 918 | b2436b9b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\MemoryData_Client.dpr | 04-22-2006 | 13:40:36 | | 545 | 4dbae178 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\MemoryData_Client.bdsproj | 05-25-2007 | 16:11:14 | | 8392 | 33f3101f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\MemoryData_Client.dproj | 05-29-2007 | 16:40:04 | | 3578 | d00896aa +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\MemoryData_Client.res | 04-22-2006 | 13:40:36 | | 22748 | f3e8a260 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\MemoryData_ClientData.dfm | 04-22-2006 | 13:40:36 | | 5880 | 6505d246 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\MemoryData_ClientData.pas | 05-30-2006 | 16:29:36 | | 978 | 67bd9575 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\MemoryData_ClientMain.dfm | 05-18-2006 | 23:11:22 | | 2667 | a947f123 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Memory Data\MemoryData_ClientMain.pas | 04-22-2006 | 13:40:36 | | 1342 | 51b0d213 +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetailService_Impl.dfm | 06-23-2006 | 13:19:52 | | 12116 | 98cac14a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetailClient.dpr | 06-23-2006 | 12:40:24 | | 629 | 55b21925 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetailClient.bdsproj | 05-25-2007 | 16:11:14 | | 8397 | ba430ed0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetailClient.dproj | 05-29-2007 | 16:40:04 | | 3622 | 13ef4fbd +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetailServer.dpr | 06-23-2006 | 13:19:52 | | 1199 | 65f49506 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetailServer.bdsproj | 05-25-2007 | 16:11:14 | | 8397 | a041f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetailServer.dproj | 05-29-2007 | 16:40:04 | | 3880 | 26e56fee +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetail.Sample.html | 06-23-2006 | 12:40:24 | | 575 | ed7298f6 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetailLibrary.RODL | 06-23-2006 | 12:40:24 | | 626 | 541402b2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetail.bpg | 06-23-2006 | 12:40:24 | | 893 | 845cf42f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetail.bdsgroup | 05-25-2007 | 16:11:14 | | 771 | 7b5fdd2e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetail.groupproj | 05-29-2007 | 16:40:04 | | 1644 | e420a7aa +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetailClient_Data.pas | 06-23-2006 | 12:40:24 | | 1033 | 5134eff +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetailClient_Main.pas | 06-23-2006 | 13:19:52 | | 1162 | 91ab0a1d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetailLibrary_Intf.pas | 06-23-2006 | 12:40:24 | | 2288 | 855d5d31 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetailLibrary_Invk.pas | 06-23-2006 | 12:40:24 | | 1035 | 685f1e4d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetailServer_Data.pas | 06-23-2006 | 12:40:24 | | 1038 | a5b004eb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetailServer_Main.pas | 06-23-2006 | 12:40:24 | | 541 | c9a90de4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetailService_Impl.pas | 06-23-2006 | 13:19:52 | | 1071 | 7eddfd33 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetailClient.res | 06-23-2006 | 12:40:24 | | 22748 | f3e8a260 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetailServer.res | 06-23-2006 | 12:40:24 | | 22748 | f90747eb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\RODLFILE.res | 06-23-2006 | 12:40:24 | | 7693 | aec6c697 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetailClient_Data.dfm | 06-23-2006 | 12:40:24 | | 9633 | ea5b79ba +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetailClient_Main.dfm | 06-23-2006 | 12:40:24 | | 2457 | ea3f0ec3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetailServer_Data.dfm | 05-23-2008 | 22:13:54 | | 1461 | c2b9e7d8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Multi Level Detail\MultiLevelDetailServer_Main.dfm | 06-23-2006 | 12:40:24 | | 634 | 3bb0b231 +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\NewService_Impl.dfm | 04-18-2006 | 21:39:56 | | 22101 | 92d79cda +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\QuantumGrid4_ClientData.dfm | 08-28-2007 | 11:25:12 | | 8113 | decf16a0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\QuantumGrid4_ClientMain.dfm | 05-19-2006 | 04:45:34 | | 6213 | a93f9887 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\QuantumGrid4_ServerData.dfm | 05-23-2008 | 22:13:54 | | 1258 | 1b36acf7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\QuantumGrid4_ServerMain.dfm | 04-18-2006 | 21:39:56 | | 614 | feef7147 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\QuantumGrid4_Client.dpr | 04-18-2006 | 21:39:56 | | 567 | 4e4addb0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\QuantumGrid4_Client.bdsproj | 05-25-2007 | 16:11:14 | | 8394 | 17bc2e65 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\QuantumGrid4_Client.dproj | 05-29-2007 | 16:40:04 | | 3594 | f31674cf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\QuantumGrid4_server.dpr | 04-18-2006 | 21:39:56 | | 856 | 56e99448 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\QuantumGrid4_server.bdsproj | 05-25-2007 | 16:11:14 | | 8394 | 6f38f4a4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\QuantumGrid4_server.dproj | 05-29-2007 | 16:40:04 | | 3818 | c6c6d743 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\QuantumGrid4.Sample.html | 04-18-2006 | 21:39:56 | | 1478 | 52176045 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\QuantumGrid4Library.rodl | 04-18-2006 | 21:39:56 | | 1449 | 3c77e5f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\QuantumGrid4.bpg | 04-18-2006 | 21:39:56 | | 875 | 24385237 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\QuantumGrid4.bdsgroup | 05-25-2007 | 16:11:14 | | 753 | 13fa43a3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\QuantumGrid4.groupproj | 05-29-2007 | 16:40:04 | | 1590 | 822788e4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\NewService_Impl.pas | 04-18-2006 | 21:39:56 | | 2549 | ad7252b4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\QuantumGrid4_ClientData.pas | 08-28-2007 | 11:25:12 | | 2235 | 4db3754c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\QuantumGrid4_ClientMain.pas | 04-18-2006 | 21:39:56 | | 2633 | f102598a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\QuantumGrid4_ServerData.pas | 04-18-2006 | 21:39:56 | | 903 | 818f20e6 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\QuantumGrid4_ServerMain.pas | 04-18-2006 | 21:39:56 | | 563 | 54b10a5b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\QuantumGrid4Library_Intf.pas | 04-18-2006 | 21:39:56 | | 3751 | 23f1d9d9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\QuantumGrid4Library_Invk.pas | 04-18-2006 | 21:39:56 | | 4227 | 4411e7fa +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\QuantumGrid4_Client.res | 04-18-2006 | 21:39:56 | | 22748 | f3e8a260 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\QuantumGrid4_server.res | 04-18-2006 | 21:39:56 | | 22748 | f90747eb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\QuantumGrid 4\RODLFILE.res | 04-18-2006 | 21:39:56 | | 7864 | b71f43db +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Quick Open +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Quick Open\QuickOpen.res | 04-21-2006 | 16:56:18 | | 22748 | 8ffae5cf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Quick Open\QuickOpenMain.dfm | 05-23-2008 | 22:13:54 | | 8568 | 33bca660 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Quick Open\QuickOpen.dpr | 04-21-2006 | 16:56:18 | | 278 | f23a2e6c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Quick Open\QuickOpen.bdsproj | 05-25-2007 | 16:11:14 | | 8384 | 69371e72 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Quick Open\QuickOpen.dproj | 05-29-2007 | 16:40:04 | | 3405 | 96f01caa +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Quick Open\QuickOpen.Sample.html | 06-28-2006 | 18:18:02 | | 512 | bdf47c17 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Quick Open\QuickOpenMain.pas | 06-28-2006 | 18:18:02 | | 982 | 927cf99f +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Regular Expressions +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Regular Expressions\RegularExpressionsMain.dfm | 07-20-2006 | 18:33:06 | | 6447 | 133d7ed2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Regular Expressions\RegularExpressions.dpr | 04-18-2006 | 21:39:56 | | 342 | bdfbfeab +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Regular Expressions\RegularExpressions.bdsproj | 05-25-2007 | 16:11:14 | | 8393 | ff0de059 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Regular Expressions\RegularExpressions.dproj | 05-29-2007 | 16:40:04 | | 3459 | 5bd0247b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Regular Expressions\RegularExpressions.Sample.html | 06-29-2006 | 00:02:36 | | 554 | 49fe1f16 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Regular Expressions\RegularExpressionsMain.pas | 07-20-2006 | 18:33:06 | | 4782 | f34b0f0d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Regular Expressions\RegularExpressions.res | 04-18-2006 | 21:39:56 | | 22748 | 8ffae5cf +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\ReportBuilder_ClientMain.dfm | 06-28-2006 | 18:26:04 | | 14250 | 38287906 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\ReportBuilder_ServerMain.dfm | 05-23-2008 | 22:13:54 | | 1701 | 9625bb63 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\ReportBuilderClient.dpr | 04-18-2006 | 21:39:56 | | 351 | 3f34b16e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\ReportBuilderClient.bdsproj | 05-25-2007 | 16:11:14 | | 8394 | c53360eb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\ReportBuilderClient.dproj | 05-29-2007 | 16:40:04 | | 3466 | 2bb5d29d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\ReportBuilderServer.dpr | 04-18-2006 | 21:39:56 | | 678 | 998fd363 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\ReportBuilderServer.bdsproj | 05-25-2007 | 16:11:14 | | 8394 | 47ab0bce +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\ReportBuilderServer.dproj | 05-29-2007 | 16:40:04 | | 3695 | e4829c3a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\ReportBuilder.Sample.html | 06-20-2006 | 13:00:50 | | 886 | 8b86cc2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\ClientArchive.raf | 04-18-2006 | 21:39:56 | | 94185 | f4fe7383 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\ServerArchive.raf | 04-18-2006 | 21:39:56 | | 94185 | f4fe7383 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\ReportBuilderLibrary.rodl | 04-18-2006 | 21:39:56 | | 1181 | 3e1fbc71 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\Report1.rtm | 04-18-2006 | 21:39:56 | | 4451 | 53546618 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\ReportBuilder.bpg | 04-18-2006 | 21:39:56 | | 875 | 291bd647 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\ReportBuilder.bdsgroup | 05-25-2007 | 16:11:14 | | 753 | 527e7c64 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\ReportBuilder.groupproj | 05-29-2007 | 16:40:04 | | 1590 | ca22b7bb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\DARBService_Impl.pas | 04-18-2006 | 21:39:56 | | 3382 | 79d5f8e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\ReportBuilder_ClientMain.pas | 06-28-2006 | 18:26:04 | | 2617 | 6aedd9ce +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\ReportBuilder_ServerMain.pas | 04-18-2006 | 21:39:56 | | 1068 | af0776c0 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\ReportBuilderLibrary_Intf.pas | 04-18-2006 | 21:39:56 | | 2847 | 33555db7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\ReportBuilderLibrary_Invk.pas | 04-18-2006 | 21:39:56 | | 2264 | bcdf172b +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\ReportBuilderClient.res | 04-18-2006 | 21:39:56 | | 22748 | f3e8a260 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\ReportBuilderServer.res | 04-18-2006 | 21:39:56 | | 22748 | f90747eb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\RODLFILE.res | 04-18-2006 | 21:39:56 | | 7469 | e6ff9c1e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Report Builder\DARBService_Impl.dfm | 04-18-2006 | 21:39:56 | | 13988 | f9ef50db +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Service Methods +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Service Methods\ServiceMethods_ClientMain.dfm | 05-23-2008 | 22:13:54 | | 19188 | 9bbd7912 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Service Methods\ServiceMethods_ServerMain.dfm | 05-23-2008 | 22:13:54 | | 11029 | 1288472a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Service Methods\ServiceMethods_Service_Impl.dfm | 08-29-2007 | 18:28:16 | | 11003 | 309aeb06 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Service Methods\ServiceMethods_Client.dpr | 06-06-2006 | 12:11:56 | | 313 | a4e58b62 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Service Methods\ServiceMethods_Client.bdsproj | 05-25-2007 | 16:11:14 | | 8396 | 6f9982ca +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Service Methods\ServiceMethods_Client.dproj | 05-29-2007 | 16:40:04 | | 3477 | cc17d5c6 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Service Methods\ServiceMethods_Server.dpr | 06-06-2006 | 12:11:56 | | 674 | 56436116 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Service Methods\ServiceMethods_Server.bdsproj | 05-25-2007 | 16:11:14 | | 8395 | 9f742b85 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Service Methods\ServiceMethods_Server.dproj | 05-29-2007 | 16:40:04 | | 3728 | 38df963e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Service Methods\ServiceMethods.Sample.html | 06-08-2006 | 15:21:04 | | 939 | 9da2756c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Service Methods\ServiceMethodsLibrary.rodl | 06-06-2006 | 12:11:56 | | 670 | f602916f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Service Methods\ServiceMethods.bpg | 06-06-2006 | 12:11:56 | | 887 | 62dcc103 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Service Methods\ServiceMethods.bdsgroup | 05-25-2007 | 16:11:14 | | 765 | a8908c0a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Service Methods\ServiceMethods.groupproj | 05-29-2007 | 16:40:04 | | 1626 | 469679c2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Service Methods\ServiceMethods_ClientMain.pas | 11-26-2007 | 02:24:50 | | 21874 | 39ababe9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Service Methods\ServiceMethods_ServerMain.pas | 08-29-2007 | 18:28:16 | | 5960 | 8dd03226 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Service Methods\ServiceMethods_Service_Impl.pas | 08-29-2007 | 18:28:16 | | 19105 | 8cf95529 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Service Methods\ServiceMethodsLibrary_Intf.pas | 08-29-2007 | 18:28:16 | | 2338 | 1802e01d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Service Methods\ServiceMethodsLibrary_Invk.pas | 08-29-2007 | 18:28:16 | | 1083 | 6a5bc781 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Service Methods\RODLFILE.res | 08-29-2007 | 18:28:16 | | 610 | cd4e499c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Service Methods\ServiceMethods_Client.res | 06-06-2006 | 12:11:56 | | 22748 | 8ffae5cf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Service Methods\ServiceMethods_Server.res | 06-06-2006 | 12:11:56 | | 23380 | 66a71fb0 +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\SQL Access +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\SQL Access\SQLAccessMain.dfm | 06-28-2006 | 19:16:18 | | 15935 | 61f97b79 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\SQL Access\SQLAccess.dpr | 04-18-2006 | 21:39:56 | | 279 | caafb988 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\SQL Access\SQLAccess.bdsproj | 05-25-2007 | 16:11:14 | | 8384 | a4e55cc8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\SQL Access\SQLAccess.dproj | 05-29-2007 | 16:40:04 | | 3405 | 8325ce0d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\SQL Access\SQLAccess.Sample.html | 06-28-2006 | 14:59:04 | | 1260 | 3d2274b9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\SQL Access\SQLAccessMain.pas | 06-28-2006 | 14:59:04 | | 5500 | 3da6f9e6 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\SQL Access\SQLAccess.res | 04-18-2006 | 21:39:56 | | 22748 | 8ffae5cf +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Stored Procedures +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Stored Procedures\StoredProceduresMain.dfm | 10-25-2006 | 14:16:24 | | 4684 | 25d2a0a5 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Stored Procedures\StoredProcedures.dpr | 04-18-2006 | 21:39:56 | | 283 | b5c6a7ed +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Stored Procedures\StoredProcedures.bdsproj | 05-25-2007 | 16:11:14 | | 8391 | 82a9db5 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Stored Procedures\StoredProcedures.dproj | 05-29-2007 | 16:40:04 | | 3447 | ec40d3d3 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Stored Procedures\StoredProcedures.Sample.html | 06-29-2006 | 12:39:40 | | 878 | 22e46581 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Stored Procedures\StoredProceduresMain.pas | 10-25-2006 | 14:16:24 | | 3799 | 3419c1d5 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Stored Procedures\StoredProcedures.res | 04-18-2006 | 21:39:56 | | 22748 | 8ffae5cf +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\StronglyTypedServer.res | 09-05-2006 | 22:30:38 | | 22748 | f90747eb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\StronglyTypedClientData.dfm | 05-22-2007 | 16:39:46 | | 12945 | ab4d13c7 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\StronglyTypedClientMain.dfm | 05-22-2007 | 16:39:46 | | 3321 | 98ad9672 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\StronglyTypedServerMain.dfm | 05-23-2008 | 22:13:54 | | 1684 | fa52a4b2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\StronglyTypedService_Impl.dfm | 05-23-2007 | 12:22:18 | | 33755 | de155b53 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\StronglyTypedClient.dpr | 05-22-2007 | 16:39:46 | | 743 | 148c38c1 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\StronglyTypedClient.bdsproj | 05-25-2007 | 16:11:14 | | 8394 | dccdf7a2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\StronglyTypedClient.dproj | 05-29-2007 | 16:40:04 | | 3770 | 3436d18 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\StronglyTypedServer.dpr | 04-18-2006 | 21:39:56 | | 827 | bce9b6df +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\StronglyTypedServer.bdsproj | 05-25-2007 | 16:11:14 | | 8394 | 8212a9ac +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\StronglyTypedServer.dproj | 05-29-2007 | 16:40:04 | | 3887 | 2653e0ff +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\StronglyTyped.Sample.html | 06-20-2006 | 12:41:54 | | 2776 | 58569e33 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\StronglyTypedLibrary.RODL | 04-18-2006 | 21:39:56 | | 1396 | b7311c89 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\StronglyTyped.bpg | 04-18-2006 | 21:39:56 | | 875 | c7273cc8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\StronglyTyped.bdsgroup | 05-25-2007 | 16:11:14 | | 753 | d3d0d927 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\StronglyTyped.groupproj | 05-29-2007 | 16:40:04 | | 1590 | 52f38ceb +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\SampleSchemaClient_Intf.pas | 05-22-2007 | 16:39:46 | | 38135 | 2cff822f +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\SampleSchemaServer_Intf.pas | 05-22-2007 | 16:39:46 | | 48140 | cf855f37 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\StronglyTypedClientData.pas | 05-22-2007 | 16:39:46 | | 943 | 720a121e +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\StronglyTypedClientMain.pas | 05-22-2007 | 16:39:46 | | 4209 | d3e50e8a +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\StronglyTypedLibrary_Intf.pas | 05-22-2007 | 16:39:46 | | 3681 | 1316c686 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\StronglyTypedLibrary_Invk.pas | 05-22-2007 | 16:39:46 | | 3191 | 37093e99 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\StronglyTypedServerMain.pas | 04-18-2006 | 21:39:56 | | 986 | c024288c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\StronglyTypedService_Impl.pas | 05-22-2007 | 16:39:46 | | 2718 | 31dc10d2 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\uBizCustomersClient.pas | 04-18-2006 | 21:39:56 | | 6816 | a89f194c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\uBizCustomersServer.pas | 07-26-2006 | 15:35:42 | | 2205 | c7ac42a5 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\RODLFILE.res | 05-22-2007 | 16:39:46 | | 11123 | 4f38b0c8 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\Strongly Typed\StronglyTypedClient.res | 04-18-2006 | 21:39:56 | | 22748 | f3e8a260 +Made Dir: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\XSLT +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\XSLT\CustomersToHTML.xsl | 04-24-2006 | 16:37:54 | | 1352 | 5a1bff3d +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\XSLT\CustomersToSimpleXML.xsl | 04-24-2006 | 16:37:54 | | 999 | 43daa672 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\XSLT\XSLTMain.pas | 05-28-2007 | 19:46:18 | | 6837 | c59af7f1 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\XSLT\XSLT.res | 04-24-2006 | 16:31:04 | | 22748 | 8ffae5cf +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\XSLT\XSLTMain.dfm | 05-28-2007 | 19:46:18 | | 32515 | d5a6b725 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\XSLT\XSLT.dpr | 04-24-2006 | 16:31:04 | | 250 | df4e9e08 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\XSLT\XSLT.bdsproj | 05-25-2007 | 16:11:14 | | 8379 | b94fcdd9 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\XSLT\XSLT.dproj | 05-29-2007 | 16:40:04 | | 3375 | 2808a503 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\XSLT\CustomersHTML.html | 04-24-2006 | 16:37:54 | | 17160 | 6d71d395 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\XSLT\XSLT.Sample.html | 07-03-2006 | 12:43:24 | | 612 | a14f753c +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples\XSLT\DALogo.png | 09-13-2004 | 19:38:48 | | 3360 | 6eb28ef4 +File Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Help\RegisterDelphiHelp.exe | 12-03-2003 | 20:26:00 | | 97280 | bd823b42 +RegDB Key: Software\RemObjects\Data Abstract for Delphi +RegDB Val: 1 +RegDB Name: Installed +RegDB Root: 1 +RegDB Key: Software\RemObjects\Data Abstract for Delphi +RegDB Val: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi +RegDB Name: InstallDir +RegDB Root: 1 +RegDB Key: Software\RemObjects\Data Abstract for Delphi +RegDB Val: 5.0.30.691 +RegDB Name: Version +RegDB Root: 1 +Shell Link: C:\Documents and Settings\Usuario\Menú Inicio\Programas\RemObjects Data Abstract\Schema Modeler.lnk +Link Info: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DASchemaModeler.exe | | | 0 | 1 | 0 | +Shell Link: C:\Documents and Settings\Usuario\Menú Inicio\Programas\RemObjects Data Abstract\DAServer.lnk +Link Info: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DAServer.exe | | | 0 | 1 | 0 | +Made Dir: C:\Archivos de programa\RemObjects Software\Everwood\Welcome\Data Abstract +File Copy: C:\Archivos de programa\RemObjects Software\Everwood\Welcome\Data Abstract\Welcome.png | 05-17-2007 | 15:24:54 | | 32526 | 474c45f1 +RegDB Key: Software\RemObjects\Everwood\Welcome +RegDB Val: +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood\Welcome\Products +RegDB Val: +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood\Welcome\Products\Data Abstract +RegDB Val: 5.0.30.691 +RegDB Name: Installed Version +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood\Welcome\Products\Data Abstract +RegDB Val: 2 +RegDB Name: Order +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood\Welcome\Products\Data Abstract +RegDB Val: C:\Archivos de programa\RemObjects Software\Everwood\Welcome\Data Abstract\Welcome.png +RegDB Name: Image +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood\Welcome\Products\Data Abstract\Samples for Delphi +RegDB Val: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples +RegDB Name: Folder +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood\Welcome\Products\Data Abstract\Samples for Delphi +RegDB Val: Flat +RegDB Name: Structure +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood\Welcome\Products\Data Abstract for Delphi +RegDB Val: 5.0.30.691 +RegDB Name: Installed Version +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood\Welcome\Products\Data Abstract for Delphi +RegDB Val: 2 +RegDB Name: Order +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood\Welcome\Products\Data Abstract for Delphi +RegDB Val: C:\Archivos de programa\RemObjects Software\Everwood\Welcome\Data Abstract\Welcome.png +RegDB Name: Image +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood\Welcome\Products\Data Abstract for Delphi\Samples for Delphi +RegDB Val: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Samples +RegDB Name: Folder +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood\Welcome\Products\Data Abstract for Delphi\Samples for Delphi +RegDB Val: Flat +RegDB Name: Structure +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood\Welcome\Products\Data Abstract +RegDB Val: http://devcenter.remobjects.com/da +RegDB Name: DevCenter URL +RegDB Root: 1 +RegDB Key: Software\RemObjects\Everwood\Welcome\Products\Data Abstract for Delphi +RegDB Val: http://devcenter.remobjects.com/da +RegDB Name: DevCenter URL +RegDB Root: 1 +Made Dir: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\License.txt | 03-13-2008 | 17:47:10 | | 9459 | 9ae670d8 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\README.html | 04-25-2004 | 18:21:08 | | 1747 | 19f2794a +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\ps.png | 04-25-2004 | 18:16:12 | | 16701 | a7a101 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Launch.exe | 12-03-2003 | 20:26:00 | | 14848 | 81197b84 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Changes.txt | 12-19-2005 | 23:41:40 | | 4447 | 7bb0bcbe +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Pascal Script.ico | 05-01-2004 | 22:03:18 | | 22486 | d564aa43 +Made Dir: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Bin +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Bin\PSUnitImporter.exe | 05-23-2008 | 22:13:40 | 3.0.30.691 | 1352632 | 309a8dac +Made Dir: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu +Made Dir: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D6 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D6\PascalScript_Core_D6.bpl | 05-23-2008 | 22:13:18 | 3.0.30.691 | 633856 | 5721b5fd +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D6\PascalScript_Core_D6.dcp | 05-23-2008 | 22:13:18 | | 771489 | 61e0e56d +Made Dir: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D7 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D7\PascalScript_Core_D7.bpl | 05-23-2008 | 22:13:18 | 3.0.30.691 | 641024 | 89a6a13e +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D7\PascalScript_Core_D7.dcp | 05-23-2008 | 22:13:18 | | 772893 | ac1f7e4c +Made Dir: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D10 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D10\PascalScript_Core_D10.bpl | 05-23-2008 | 22:13:22 | 3.0.30.691 | 638464 | 60daf352 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D10\PascalScript_Core_D10.dcp | 05-23-2008 | 22:13:22 | | 787642 | e9de024e +Made Dir: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D11 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D11\PascalScript_Core_D11.bpl | 05-23-2008 | 22:13:26 | 3.0.30.691 | 638464 | f130ecdd +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D11\PascalScript_Core_D11.dcp | 05-23-2008 | 22:13:26 | | 787661 | 2912dfcd +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D7\PascalScript_RO_D7.bpl | 05-23-2008 | 22:13:20 | 3.0.30.691 | 55808 | 478a161b +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D7\PascalScript_RO_D7.dcp | 05-23-2008 | 22:13:20 | | 43797 | a4d11e27 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D10\PascalScript_RO_D10.bpl | 05-23-2008 | 22:13:22 | 3.0.30.691 | 50176 | 6d1538b1 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D10\PascalScript_RO_D10.dcp | 05-23-2008 | 22:13:22 | | 41698 | c89d8dc +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D11\PascalScript_RO_D11.bpl | 05-23-2008 | 22:13:28 | 3.0.30.691 | 50176 | b5825654 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Dcu\D11\PascalScript_RO_D11.dcp | 05-23-2008 | 22:13:28 | | 41705 | e81bfd80 +Made Dir: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_Core_D10.bdsproj | 05-23-2008 | 22:13:22 | | 8295 | 5357f307 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_Core_D10.dpk | 10-26-2007 | 15:20:00 | | 2210 | c7553ea5 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_Core_D10.res | 05-23-2008 | 22:13:20 | | 616 | e59ca005 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_Core_D10.cfg | 12-19-2005 | 18:57:54 | | 535 | 129a73f7 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_Core_D11.dproj | 05-23-2008 | 22:13:26 | | 7393 | fd81855d +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_Core_D11.dpk | 10-26-2007 | 15:20:00 | | 2210 | 21339bd2 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_Core_D11.res | 05-23-2008 | 22:13:24 | | 616 | e59ca005 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_Core_D7.dpk | 10-26-2007 | 15:20:00 | | 2209 | 70232fa6 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_Core_D7.dof | 05-23-2008 | 22:13:20 | | 1919 | aed8828b +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_Core_D7.res | 05-23-2008 | 22:13:18 | | 616 | e59ca005 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_Core_D6.dof | 05-23-2008 | 22:13:18 | | 1851 | 12daa727 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_Core_D6.dpk | 10-26-2007 | 15:20:00 | | 2209 | 96458ad1 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_Core_D6.res | 05-23-2008 | 22:13:14 | | 616 | e59ca005 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_Core_D5.dof | 05-23-2008 | 22:13:14 | | 1786 | 21061a8c +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_Core_D5.dpk | 10-16-2006 | 19:24:32 | | 2209 | 679f6309 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_Core_D4.dpk | 10-16-2006 | 19:24:32 | | 2208 | ac617051 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_Core_D4.dof | 05-23-2008 | 22:13:14 | | 1786 | c918aa04 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_Core_D3.dof | 05-23-2008 | 22:13:14 | | 1804 | 5288eae4 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_Core_D3.dpk | 10-16-2006 | 19:24:32 | | 2209 | 5f5bb6f8 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_Core_K3.kof | 04-20-2004 | 21:57:42 | | 1786 | 2be344e0 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_Core_K3.dpk | 04-20-2004 | 21:57:42 | | 2209 | 69dc73d4 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_Core_Glyphs.RES | 05-23-2008 | 22:13:14 | | 18328 | e7641689 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_Core_Reg.pas | 12-10-2007 | 16:32:28 | | 1611 | d98b8369 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_RO_D10.bdsproj | 05-23-2008 | 22:13:24 | | 8256 | a9d4ddc3 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_RO_D10.cfg | 04-26-2006 | 13:16:06 | | 846 | 995e9ae1 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_RO_D10.dpk | 02-23-2006 | 16:15:02 | | 930 | ab48f3b5 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_RO_D7.dpk | 02-23-2006 | 16:15:02 | | 834 | 42a10e79 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_RO_D11.dproj | 05-23-2008 | 22:13:30 | | 6566 | 85d4a5b8 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_RO_D11.dpk | 09-13-2007 | 16:22:22 | | 930 | b7bbca3 +File Overwrite: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_RO_D7.dpk | 02-23-2006 | 16:15:02 | | 834 | 42a10e79 +Backup Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\BACKUP\PascalScript_RO_D7.dpk +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_RO_D7.dof | 05-23-2008 | 22:13:20 | | 1940 | 99ace95f +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_RO_D7.res | 05-23-2008 | 22:13:20 | | 616 | e59ca005 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_RO_D6.dpk | 02-23-2006 | 16:15:02 | | 834 | 21e8b115 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_RO_D6.dof | 05-23-2008 | 22:13:14 | | 1804 | 252473d1 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_RO_D6.res | 04-25-2004 | 18:02:16 | | 616 | 9bbf6df1 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_RO_Glyphs.RES | 05-23-2008 | 22:13:14 | | 1876 | 88704ce0 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript_RO_Reg.pas | 02-11-2008 | 12:38:48 | | 745 | 7e39e914 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\x86.inc | 12-05-2007 | 14:55:56 | | 23750 | 4039742d +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\powerpc.inc | 12-05-2007 | 14:55:56 | | 10572 | 39cf152e +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\PascalScript.inc | 01-05-2006 | 20:34:10 | | 1732 | 155d434c +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\eDefines.inc | 03-15-2007 | 17:32:38 | | 14033 | 45fcae7 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\BuildPackages_D6.bpg | 04-25-2004 | 18:02:16 | | 875 | 17e01450 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\BuildPackages_D7.bpg | 04-25-2004 | 18:02:16 | | 875 | dc57cb7 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\BuildPackages_D10.bdsgroup | 12-19-2005 | 19:12:14 | | 856 | 1e8535b2 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\BuildPackages_D11.groupproj | 09-13-2007 | 16:22:22 | | 1853 | 214bf1b2 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSDebugger.pas | 07-27-2005 | 17:41:56 | | 15796 | 4da4b45f +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSDisassembly.pas | 02-11-2008 | 12:36:58 | | 16034 | 69070560 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSPreProcessor.pas | 02-11-2008 | 12:36:58 | | 21845 | a8aaf49a +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSR_buttons.pas | 10-01-2004 | 20:23:56 | | 789 | 45ccccdd +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSR_classes.pas | 07-27-2005 | 17:41:56 | | 14735 | 7bec20bc +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSR_comobj.pas | 07-27-2005 | 17:41:56 | | 2154 | 6098c2a9 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSR_controls.pas | 02-11-2008 | 12:36:58 | | 10953 | bee36feb +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSR_dateutils.pas | 03-15-2007 | 17:32:38 | | 1863 | 57f190dd +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSR_DB.pas | 01-05-2006 | 20:08:30 | | 75792 | feebf90d +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSR_dll.pas | 01-05-2006 | 20:08:30 | | 7115 | a938d03 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSR_extctrls.pas | 01-05-2006 | 20:08:30 | | 3674 | fab516f0 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSR_forms.pas | 02-11-2008 | 12:36:58 | | 13909 | f2ca791b +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSR_graphics.pas | 10-04-2006 | 13:08:40 | | 8488 | 8c2b726e +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSR_menus.pas | 01-05-2006 | 20:08:30 | | 17296 | a63d3bb4 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSR_std.pas | 10-01-2004 | 20:23:56 | | 2710 | 17cc7c4a +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSR_stdctrls.pas | 01-05-2006 | 20:08:30 | | 11025 | 43456fc +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSRuntime.pas | 02-11-2008 | 12:36:58 | | 384536 | 85249be7 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSUtils.pas | 02-11-2008 | 12:36:58 | | 35511 | 6e9cbe6b +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSC_buttons.pas | 11-15-2004 | 15:39:22 | | 2806 | 35ea551 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSC_classes.pas | 02-11-2008 | 12:36:58 | | 12370 | 24627254 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSC_comobj.pas | 11-15-2004 | 15:39:22 | | 612 | 38614afb +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSC_controls.pas | 02-11-2008 | 12:36:58 | | 9796 | 5cf856bb +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSC_dateutils.pas | 11-15-2004 | 15:39:22 | | 1553 | 6121bee5 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSC_DB.pas | 10-04-2006 | 13:08:40 | | 36742 | 851fdf6d +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSC_dll.pas | 02-11-2008 | 12:36:58 | | 3719 | 96eb67f8 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSC_extctrls.pas | 07-27-2005 | 17:41:56 | | 12642 | b80a3fbd +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSC_forms.pas | 07-27-2005 | 17:41:56 | | 11886 | cf0f9153 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSC_graphics.pas | 10-04-2006 | 13:08:40 | | 13222 | eed66126 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSC_menus.pas | 01-05-2006 | 20:08:30 | | 9930 | 4517c1d1 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSC_std.pas | 11-15-2004 | 15:39:22 | | 2707 | b9b9ec2d +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSC_stdctrls.pas | 07-27-2005 | 17:41:56 | | 25016 | cc69c9de +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSCompiler.pas | 02-11-2008 | 12:36:58 | | 448211 | 4af5c98c +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSComponent.pas | 02-11-2008 | 12:36:58 | | 41889 | 71cd8a70 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSComponent_COM.pas | 10-01-2004 | 20:23:56 | | 755 | 7d8d0635 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSComponent_Controls.pas | 01-05-2006 | 20:08:30 | | 1636 | c15c38a7 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSComponent_DB.pas | 03-15-2007 | 17:32:38 | | 715 | 3a93c74c +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSComponent_Default.pas | 10-04-2006 | 13:08:40 | | 1945 | 64df0be9 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSComponent_Forms.pas | 01-05-2006 | 20:08:30 | | 1438 | d778cbb8 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uPSComponent_StdCtrls.pas | 01-05-2006 | 20:08:30 | | 1558 | d2e2afb9 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uROPSServerLink.pas | 05-05-2008 | 12:10:50 | | 34753 | 40c7d51d +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Source\uROPSImports.pas | 07-27-2005 | 23:23:26 | | 10899 | 67ed1671 +Made Dir: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples +Made Dir: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Console +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Console\sample4.dpr | 07-12-2005 | 17:29:16 | | 3652 | c62d935 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Console\sample5.dpr | 07-12-2005 | 17:29:16 | | 3946 | e7c2eb31 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Console\sample6.dpr | 07-12-2005 | 17:29:16 | | 4597 | 473765e +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Console\sample7.dpr | 07-12-2005 | 17:29:16 | | 4854 | fc4ed706 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Console\sample8.dpr | 07-12-2005 | 17:29:16 | | 4045 | bd5cb91b +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Console\sample1.dpr | 07-12-2005 | 17:29:16 | | 2051 | f2022a40 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Console\sample2.dpr | 07-12-2005 | 17:29:16 | | 2745 | e0bc2dda +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Console\sample3.dpr | 07-12-2005 | 17:29:16 | | 2797 | f1bb348c +Made Dir: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Debug +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Debug\ide_debugoutput.pas | 05-04-2004 | 15:08:08 | | 580 | 6d77c2b7 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Debug\ide_editor.dfm | 05-04-2004 | 15:08:08 | | 5732 | 212433b7 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Debug\ide_editor.pas | 05-04-2004 | 15:08:08 | | 10086 | deb814f6 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Debug\readme.txt | 05-04-2004 | 15:08:08 | | 62 | c9df037d +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Debug\ide.dpr | 05-04-2004 | 15:08:08 | | 309 | 3133d127 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Debug\ide.res | 05-04-2004 | 15:08:08 | | 876 | 1671909e +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Debug\ide_debugoutput.dfm | 05-04-2004 | 15:08:08 | | 521 | 69396746 +Made Dir: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\fDwin.pas | 04-20-2004 | 21:57:42 | | 380 | 2aca94c7 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\fMain.pas | 08-02-2005 | 15:23:30 | | 12131 | cb87ae26 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\Import.res | 04-20-2004 | 21:57:42 | | 22748 | 7b82a90a +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\fDwin.dfm | 04-20-2004 | 21:57:42 | | 608 | b0dc1522 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\fMain.dfm | 04-25-2004 | 18:02:16 | | 1997 | 2b89a703 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\Import.dpr | 04-20-2004 | 21:57:42 | | 310 | fbd0d2b2 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\importtest.rops | 04-20-2004 | 21:57:42 | | 188 | 8ad17bd8 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\longfortest.rops | 04-20-2004 | 21:57:42 | | 132 | f2f55245 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\rectest.rops | 04-20-2004 | 21:57:42 | | 168 | 95f5d1ea +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\stringtest.rops | 04-20-2004 | 21:57:42 | | 81 | e855a712 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\t1.rops | 04-25-2004 | 18:02:16 | | 82 | fdd4ff5e +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\t2.rops | 04-20-2004 | 21:57:42 | | 71 | ac71c911 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\t3.rops | 04-20-2004 | 21:57:42 | | 44 | fae7f743 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\t4.rops | 04-20-2004 | 21:57:42 | | 92 | a4ea2881 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\t5.rops | 04-20-2004 | 21:57:42 | | 120 | 9555109e +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\t6.rops | 04-20-2004 | 21:57:42 | | 314 | 146387e4 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\t7.rops | 04-20-2004 | 21:57:42 | | 76 | 1fdd5565 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\t8.rops | 04-20-2004 | 21:57:42 | | 748 | ec525a55 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\t9.rops | 04-25-2004 | 18:02:16 | | 236 | 8ce601a5 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\t10.rops | 04-20-2004 | 21:57:42 | | 187 | 79538f8a +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\t11.rops | 04-25-2004 | 18:02:16 | | 1353 | fda91ca6 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\testdefine.rops | 04-25-2004 | 18:02:16 | | 172 | db084c84 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\testinclude.rops | 04-25-2004 | 18:02:16 | | 214 | b8fe8ebb +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\vartype.rops | 04-25-2004 | 18:02:16 | | 286 | d18add38 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\wordole.rops | 04-20-2004 | 21:57:42 | | 126 | cfeabde8 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\arraytest.rops | 04-20-2004 | 21:57:42 | | 313 | 308fcb11 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\booleantest.rops | 04-20-2004 | 21:57:42 | | 303 | 1c2a740e +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\bytearray.rops | 04-25-2004 | 18:02:16 | | 319 | 1a6d5b0f +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\casetest.rops | 04-20-2004 | 21:57:42 | | 162 | f882dc71 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\dlltest.rops | 04-20-2004 | 21:57:42 | | 876 | 7464642d +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\exittest.rops | 04-20-2004 | 21:57:42 | | 145 | 877c07ad +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\fortest.rops | 04-20-2004 | 21:57:42 | | 117 | 786be752 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\if.rops | 04-20-2004 | 21:57:42 | | 131 | 3bac7a0e +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Import\iformtest.rops | 04-20-2004 | 21:57:42 | | 2337 | 8e8ce14d +Made Dir: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Kylix +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Kylix\Import.dpr | 04-20-2004 | 23:44:16 | | 270 | 4fa91fdc +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Kylix\fDwin.pas | 04-20-2004 | 23:44:16 | | 367 | 679c1d4e +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Kylix\fMain.pas | 08-02-2005 | 15:23:30 | | 8060 | 78685d4b +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Kylix\fDwin.dfm | 04-20-2004 | 23:44:16 | | 666 | 7202d3fa +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Kylix\fMain.dfm | 04-20-2004 | 23:44:16 | | 1775 | 22ef8cf0 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Kylix\bytearray.rops | 04-20-2004 | 21:57:42 | | 157 | bc32e18 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Kylix\casetest.rops | 04-20-2004 | 21:57:42 | | 162 | f882dc71 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Kylix\exittest.rops | 04-20-2004 | 21:57:42 | | 145 | 877c07ad +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Kylix\fortest.rops | 04-20-2004 | 21:57:42 | | 117 | 786be752 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Kylix\if.rops | 04-20-2004 | 21:57:42 | | 131 | 3bac7a0e +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Kylix\importtest.rops | 04-20-2004 | 21:57:42 | | 188 | 8ad17bd8 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Kylix\longfortest.rops | 04-20-2004 | 21:57:42 | | 132 | f2f55245 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Kylix\rectest.rops | 04-20-2004 | 21:57:42 | | 168 | 95f5d1ea +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Kylix\vartype.rops | 04-20-2004 | 23:44:16 | | 273 | 8fa661e1 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Kylix\arraytest.rops | 04-20-2004 | 21:57:42 | | 313 | 6db1db30 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\Kylix\booleantest.rops | 04-20-2004 | 21:57:42 | | 303 | 1c2a740e +Made Dir: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\TestApp +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\TestApp\fMain.dfm | 04-20-2004 | 21:57:42 | | 1232 | 72734836 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\TestApp\fMain.pas | 04-20-2004 | 21:57:42 | | 4048 | d11eb69e +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\TestApp\TestApplication.dpr | 04-20-2004 | 21:57:42 | | 239 | 2688dabc +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\TestApp\TestApplication.res | 04-20-2004 | 21:57:42 | | 22748 | 7b82a90a +Made Dir: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\RemObjects SDK Client +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\RemObjects SDK Client\MegaDemo.RODL | 04-25-2004 | 18:02:16 | | 5125 | 48070b2a +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\RemObjects SDK Client\MegaDemo.rops | 04-25-2004 | 18:02:16 | | 2369 | fce045d7 +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\RemObjects SDK Client\TestApplication.dpr | 04-25-2004 | 18:02:16 | | 239 | 2688dabc +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\RemObjects SDK Client\TestApplication.res | 04-25-2004 | 18:02:16 | | 22748 | 7b82a90a +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\RemObjects SDK Client\fMain.dfm | 04-25-2004 | 18:41:38 | | 1923 | 2def403d +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Samples\RemObjects SDK Client\fMain.pas | 04-25-2004 | 18:41:38 | | 4816 | e4ab80f4 +Made Dir: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Help +File Copy: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Help\RegisterDelphiHelp.exe | 12-03-2003 | 20:26:00 | | 97280 | bd823b42 +RegDB Key: Software\RemObjects\Pascal Script +RegDB Val: 1 +RegDB Name: Installed +RegDB Root: 1 +RegDB Key: Software\RemObjects\Pascal Script +RegDB Val: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi +RegDB Name: InstallDir +RegDB Root: 1 +RegDB Key: Software\RemObjects\Pascal Script +RegDB Val: 5.0.30.691 +RegDB Name: Version +RegDB Root: 1 +Shell Link: C:\Documents and Settings\Usuario\Menú Inicio\Programas\RemObjects Pascal Script\Unit Importer.lnk +Link Info: C:\Archivos de programa\RemObjects Software\Pascal Script for Delphi\Bin\PSUnitImporter.exe | | | 0 | 1 | 0 | +File Delete: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Launch.exe +Backup Copy: C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\BACKUP\Launch.exe +RegDB Key: Software\Microsoft\Windows\CurrentVersion\Uninstall\Data Abstract 'Vinci' for Delphi +RegDB Val: 5.0.30.691 +RegDB Name: DisplayVersion +RegDB Root: 2 +RegDB Key: Software\Microsoft\Windows\CurrentVersion\Uninstall\Data Abstract 'Vinci' for Delphi +RegDB Val: http://www.remobjects.com?da +RegDB Name: HelpLink +RegDB Root: 2 +RegDB Key: Software\Microsoft\Windows\CurrentVersion\Uninstall\Data Abstract 'Vinci' for Delphi +RegDB Val: RemObjects Software +RegDB Name: Publisher +RegDB Root: 2 +RegDB Key: Software\Microsoft\Windows\CurrentVersion\Uninstall\Data Abstract 'Vinci' for Delphi +RegDB Val: C:\Archivos de programa\RemObjects Software\Data Abstract (Common)\Bin\DASchemaModeler.exe,0 +RegDB Name: DisplayIcon +RegDB Root: 2 +RegDB Key: Software\Microsoft\Windows\CurrentVersion\Uninstall\Data Abstract 'Vinci' for Delphi +RegDB Val: RemObjects Data Abstract for Delphi +RegDB Name: DisplayName +RegDB Root: 2 +RegDB Old: Data Abstract 'Vinci' for Delphi +User Rights: Admin diff --git a/official/5.0.30.691/Data Abstract for Delphi/README.html b/official/5.0.30.691/Data Abstract for Delphi/README.html new file mode 100644 index 0000000..ed4c57b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/README.html @@ -0,0 +1,271 @@ + + + +

Welcome to RemObjects Data Abstract™ 'Vinci' for Delphi (5.0.29).

+ +

+ Thank you for your interest in our products and for choosing Data Abstract for Delphi. +

+ +

+ Our goal with Data Abstract is to provide you with the best, easiest and most + flexible database and multi-tier framework available for Delphi and other platforms. +

+ +

+ We will continue to improve Data Abstract (DA for short) over time and these improvements will be available to you as part of your subscription. Please make sure that your subscription + stays active to ensure continued access to the latest release to be sure you have + the most recent fixes and new features. +

+ +

+ Please check our website + regularly to keep your product up to date with the latest additions. In particular, see the change log for details of recent changes to the product.

+ +

+ The following README contains a few guidelines that you should follow in order to install and get started with Data Abstract. +

+ +
+

TRIAL Version & RemObjects SDK

+

+ Data Abstract relies on RemObjects SDK. To use the trial version of Data Abstract, you must have the exact matching version of + RemObjects SDK (either the trial or full version) installed, and not have made any manual modifications to the RemObjects SDK library code. +

+ +

TRIAL Version & Third Party Data Access

+

+ The trial version currently does not include support for static linking of the third party database + drivers (such as SDAC, ODAC and IBO) provided with Data Abstract. Dynamic driver libraries (.dad files) are provided. +

+ +

TRIAL Version Requirements

+

+ The following requirements must be met for the trial version: +

+

+ Delphi 2007 for Win32

+ +

+ Note: the DBX driver is not available for the trial version. 

+

Delphi 2006

+ +

Delphi 7

+ +

Delphi 6

+ +

+ Please note that these requirements are for the TRIAL version only. Since the retail version comes with full source, + you can easily rebuild it to match whatever exact version of Delphi you have installed, by opening the + BuildPackages_Dx.bpg project group and doing a Build All Projects. +

+
+ +

Package Installation

+ +

The current Data Abstract comes separated into several individual packages; these packages are provided +in versions for Delphi 6, 7, 2006 and 2007 for Win32.

+ +

These packages are:

+ +

+ As well as several Data Abstract driver packages for ADO, dbExpress, InterBase Express. +

+

+ Installation in Delphi 6, Delphi 7, Delphi 2006 and Delphi 2007 for Win32

+

+ The RO setup will install prebuilt versions of the packages in the Delphi 6, 7, + 2006 and 2007 IDEs.  +

+

+ If you have a custom version of IBX (such as the version 6.5/7.5 that comes with InterBase 7) downloaded and installed to + replace the default IBX, loading of this package will most likely fail when you launch Delphi for the first time after installing RO. + If this is happens, you will need to manually rebuild the IBX driver package to match your specific IBX version, by opening + the DataAbstract_IBXDriver_D6.dpk, DataAbstract_IBXDriver_D7.dpk or DataAbstract_IBXDriver_D9.bdsproj in the IDE and then building and installing it. +

+ +

Free Pascal (FPC)

+

+ The current release of Data Abstract 'Vinci' for Delphi provides library support for Free Pascal 2.1.4 and above, allowing you to rebuild your + projects for the Win32 (x86), Win64 (x64), Linux (x86 and x64) platforms. Compilation against other platforms provided by FPC might be possible, + but is not currently supported; however, we are interested in your feedback if you do try to build against other platforms. +

+

+ Official support for other platforms, as well as support for the Lazarus IDE, is under review for future releases. +

+

+ The minimum version of FPC required is Free Pascal 2.1.4 or newer (which can be downloaded here). Please note that we explicitly do not support the 2.0.x release, as it is missing crucial functionality. +

+

+ More information about Free Pascal can be found on the FPC homepage at http://www.freepascal.org; + please also read http://www.remobjects.com?fpc for more details. +

+

Limitations of Free Pascal Support

+

+ At the time of this release, only the new ZEOS database driver is supported for Free Pascal, as the underlying components for all the other drivers + are not supported for Free Pascal by Borland/CodeGear or the third party vendors. Please contact the third party component vendors directly to + inquire about support for FPC in future versions of their components. +

+ +
+

License File

+

+ To avoid piracy and abuse, the Data Abstract Install contains a time-limited license for Schema Modeler and Service Builder, which will + expire after 30 days of use. +

+

+ You will be prompted to download your personal license file when you start Schema Modeler or Service Builder for the first time; you can choose to either download your own license file right away, + or keep working with the trial license until such a time when the download is more convenient for you. + Alternatively, it's possible to download it directly from + http://www.remobjects.com/myro. +

+
+ +

+ Note for users migrating from version 3 or below

+

+ Later versions of Data Abstract for Delphi provide two modes for server applications. For backward compatibility, it provides the server interface you already know from version 3.0, thus allowing you to rebuild your existing server applications with only minimal changes. In addition though, a new service interface is provided matching the .NET edition that streamlines data access further, thus simplifying development of cross platform client/server solutions. + See the DA26 article for full details, including the steps needed to upgrade version 3 applications directly to 'Vinci' (version 5). +

+

+ To aid your conversion, we ship a tool to create Remote Data Adapters from your + existing code (also described by DA26). You can find the DAConverter + tool at: C:\Program Files\RemObjects Software\Data Abstract (Common)\Bin.

+

+ Note for users migrating from version 4

+

+ Data Abstract 'Vinci' employs the version 4 architecture, so there are no actual + upgrade requirements. However, you may well wish to upgrade your applications to + use the new TDAMemDataTable and TDABin2DataStreamer + components. The DAConverter tool described above (see DA26 also) + has been extended to do this as well (and will accept version 3 and version 4 project + files).

+ +

Sample Projects

+

+ A number of sample projects are included in the \Samples folder of your Data Abstract install. These sample projects + will show you how to get started and how to use the various functions of Data Abstract. +
+ A detailed overview of the available samples can be found in the + Samples.html file provided.  +

+

+ For BDS2006 and later, after the first start of the Visual Studio IDE, the Welcome + Page for Data Abstract will be presented, giving you the option to directly open + any of the samples provided. +

+ +

Support

+

+ Support for Data Abstract is available via our newsgroups at + remobjects.public.dataabstract.delphi.

+

+ You can use these newsgroups to report any problems or suggestions you might have in regards to Data Abstract, you can communicate with fellow Data Abstract users and exchange ideas and solutions. +

+

+ Please also make sure to check out our extensive Online Help to get started with Data Abstract; the online help is available integrated into the Delphi Help and also as a standalone .HLP help file. +

+

+ More information about our support offerings, including the Premium Support subscription, + can be found at http://www.remobjects.com/support.

+
+

+ Known Issues in this Release +

+

+ While we try our best to get all known issues fixed and addressed for each build, + sometimes less + important issues need to be deferred for later releases in favor + for getting a version released. Please check our list of known issues for + any known problems with the current release 

+
+ + + +

Where to go from here

+

+ To get started using Data Abstract, please visit our new Developer Center available + at + http://www.remobjects.com/devcenter/da. +

+

+DevCenter provides hands-on developer resources such as articles (see article roadmap: + DA00), + videos and FAQs + about all our products, including Data Abstract, and is the central + hub for all developer-oriented information about our products. +

+ +

Thank You

+

+ Let us thank you again for choosing Data Abstract. We are confident that you + will find it to be a worthwhile addition to your development toolset. +

+

+ Should you, at any time, encounter a problem or need assistance using Data Abstract, please feel free to ask on the newsgroups + or contact us directly via email at support@remobjects.com. +

+ +
+ +

Best Regards, +
+The RemObjects Team +
+http://www.remobjects.com

\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModel.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModel.Sample.html new file mode 100644 index 0000000..3698485 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModel.Sample.html @@ -0,0 +1,31 @@ + + + + + + + + + +

+ Briefcase model sample +

+ + +

Purpose

+

+ This example shows how to create a briefcase model using a Data Abstract Client. +

+

Getting Started

+ + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModel.bdsgroup b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModel.bdsgroup new file mode 100644 index 0000000..1bf8297 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModel.bdsgroup @@ -0,0 +1,20 @@ + + + + + + + + + + + + + BriefcaseModelServer.bdsproj + BriefcaseModelClient.bdsproj + BriefcaseModelServer.exe BriefcaseModelClient.exe + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModel.bpg b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModel.bpg new file mode 100644 index 0000000..ef89764 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModel.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = BriefcaseModelServer.exe BriefcaseModelClient.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +BriefcaseModelServer.exe: BriefcaseModelServer.dpr + $(DCC) + +BriefcaseModelClient.exe: BriefcaseModelClient.dpr + $(DCC) + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModel.groupproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModel.groupproj new file mode 100644 index 0000000..25568d5 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModel.groupproj @@ -0,0 +1,40 @@ + + + {8aedcb5a-78e5-4e85-8261-093aa6a47a12} + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClient.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClient.bdsproj new file mode 100644 index 0000000..e3d7939 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClient.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + BriefcaseModelClient.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClient.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClient.dpr new file mode 100644 index 0000000..71bcbd6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClient.dpr @@ -0,0 +1,19 @@ +program BriefcaseModelClient; + +uses + uROComInit, + Forms, + MidasLib, + BriefcaseModelClientMain in 'BriefcaseModelClientMain.pas' {BriefcaseModelClientMainForm}, + BriefcaseModelClientData in 'BriefcaseModelClientData.pas' {BriefcaseModelClientDataModule: TDAClientDataModule}, + BriefcaseModelClientChanges in 'BriefcaseModelClientChanges.pas' {BriefcaseModelClientChangesForm}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'Briefcase Model Client'; + Application.CreateForm(TBriefcaseModelClientDataModule, BriefcaseModelClientDataModule); + Application.CreateForm(TBriefcaseModelClientMainForm, BriefcaseModelClientMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClient.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClient.dproj new file mode 100644 index 0000000..0d29ec6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClient.dproj @@ -0,0 +1,78 @@ + + + {bbc1c7e0-ae64-480d-a016-c817f7590577} + BriefcaseModelClient.dpr + Debug + AnyCPU + DCC32 + BriefcaseModelClient.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + BriefcaseModelClient.dpr + + + + + + + MainSource + + +
BriefcaseModelClientChangesForm
+
+ +
BriefcaseModelClientDataModule
+
+ +
BriefcaseModelClientMainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClient.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClient.res new file mode 100644 index 0000000..da01de5 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClient.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClientChanges.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClientChanges.dfm new file mode 100644 index 0000000..33a5545 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClientChanges.dfm @@ -0,0 +1,62 @@ +object BriefcaseModelClientChangesForm: TBriefcaseModelClientChangesForm + Left = 108 + Top = 133 + AutoScroll = False + Caption = 'Changes' + ClientHeight = 352 + ClientWidth = 405 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + PixelsPerInch = 96 + TextHeight = 13 + object Splitter1: TSplitter + Left = 0 + Top = 123 + Width = 405 + Height = 8 + Cursor = crVSplit + Align = alBottom + Beveled = True + end + object ListView: TListView + Left = 0 + Top = 131 + Width = 405 + Height = 221 + Align = alBottom + Columns = < + item + Caption = 'Name' + Width = 200 + end + item + Caption = 'Old value' + Width = 100 + end + item + Caption = 'New value' + Width = 100 + end> + OwnerData = True + ReadOnly = True + RowSelect = True + TabOrder = 0 + ViewStyle = vsReport + OnData = ListViewData + end + object ListBox: TListBox + Left = 0 + Top = 0 + Width = 405 + Height = 123 + Align = alClient + ItemHeight = 13 + TabOrder = 1 + OnClick = ListBoxClick + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClientChanges.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClientChanges.pas new file mode 100644 index 0000000..5218501 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClientChanges.pas @@ -0,0 +1,115 @@ +unit BriefcaseModelClientChanges; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ExtCtrls, ComCtrls; + +type + TBriefcaseModelClientChangesForm = class(TForm) + ListView: TListView; + Splitter1: TSplitter; + ListBox: TListBox; + procedure ListBoxClick(Sender: TObject); + procedure ListViewData(Sender: TObject; Item: TListItem); + private + { Private declarations } + procedure SetupListview; + procedure Setup; + public + { Public declarations } + + end; + +var + BriefcaseModelClientChangesForm: TBriefcaseModelClientChangesForm; + +procedure ShowChanges; +implementation +uses + uDADelta, BriefcaseModelClientData, uDAInterfaces; + +{$R *.dfm} + +procedure ShowChanges; +begin + with TBriefcaseModelClientChangesForm.Create(Application) do try + Setup; + if ListBox.Count = 0 then Exit; + ShowModal; + finally + Release; + end; +end; + +procedure TBriefcaseModelClientChangesForm.ListBoxClick(Sender: TObject); +begin + SetupListView; +end; + +procedure TBriefcaseModelClientChangesForm.SetupListview; +begin + ListView.Items.Count := 0; + if ListBox.ItemIndex = -1 then Exit; + ListView.Items.Count := TDADeltaChange(Listbox.Items.Objects[ListBox.ItemIndex]).Delta.LoggedFieldCount; +end; + +procedure TBriefcaseModelClientChangesForm.ListViewData(Sender: TObject; + Item: TListItem); +var + DeltaChange: TDADeltaChange; +begin + if (Item = nil) or (Item.Index >= ListView.Items.Count) then Exit; + DeltaChange := TDADeltaChange(Listbox.Items.Objects[ListBox.ItemIndex]); + Item.Caption := DeltaChange.Delta.LoggedFieldNames[Item.Index]; + if DeltaChange.ChangeType <> ctInsert then + Item.SubItems.Add(VarToStr(DeltaChange.OldValueByName[Item.Caption])) + else + Item.SubItems.Add(''); + if DeltaChange.ChangeType <> ctDelete then + Item.SubItems.Add(VarToStr(DeltaChange.NewValueByName[Item.Caption])) + else + Item.SubItems.Add(''); +end; + +procedure TBriefcaseModelClientChangesForm.Setup; + + procedure AddDelta(Delta: IDADelta); + var + str: string; + i, j: integer; + begin + for i := 0 to Delta.Count - 1 do + with Delta.Changes[i] do begin + case ChangeType of + ctInsert: str := '[New]'; + ctUpdate: str := '[Update]'; + ctDelete: str := '[Delete]'; + end; + str := str + ' ' + Delta.LogicalName + ': '; + for j := 0 to delta.KeyFieldCount - 1 do begin + if ChangeType = ctDelete then + str := str + VarToStr(OldValueByName[delta.KeyFieldNames[j]]) + ',' + else + str := str + VarToStr(NewValueByName[delta.KeyFieldNames[j]]) + ',' + end; + if delta.KeyFieldCount > 0 then SetLength(Str, Length(str) - 1); + ListBox.Items.AddObject(str, Delta.Changes[i]); + end; + end; + +begin + ListBox.Items.Clear; + with BriefcaseModelClientDataModule do begin + if tbl_Customers.DeltaInitialized then AddDelta(tbl_Customers.Delta); + if tbl_Orders.DeltaInitialized then AddDelta(tbl_Orders.Delta); + end; + if ListBox.Count > 0 then begin + ListBox.ItemIndex := 0; + ListBoxClick(ListBox); + end; +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClientData.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClientData.dfm new file mode 100644 index 0000000..fee315d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClientData.dfm @@ -0,0 +1,383 @@ +object BriefcaseModelClientDataModule: TBriefcaseModelClientDataModule + OldCreateOrder = True + Left = 126 + Top = 134 + Height = 300 + Width = 300 + object Channel: TROWinInetHTTPChannel + ServerLocators = <> + DispatchOptions = [] + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/BIN' + Left = 40 + Top = 8 + end + object Message: TROBinMessage + Left = 40 + Top = 52 + end + object RemoteService: TRORemoteService + Message = Message + Channel = Channel + ServiceName = 'BriefcaseModelService' + Left = 40 + Top = 96 + end + object DataStreamer: TDABinDataStreamer + Left = 40 + Top = 140 + end + object RemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RemoteService + GetDataCall.RemoteService = RemoteService + UpdateDataCall.RemoteService = RemoteService + GetScriptsCall.RemoteService = RemoteService + RemoteService = RemoteService + DataStreamer = DataStreamer + Left = 40 + Top = 184 + end + object tbl_Customers: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CompanyName' + DataType = datWideString + Size = 40 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactName' + DataType = datWideString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactTitle' + DataType = datWideString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Address' + DataType = datWideString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Region' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PostalCode' + DataType = datWideString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Country' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Phone' + DataType = datWideString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Fax' + DataType = datWideString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = RemoteDataAdapter + ReadOnly = False + LocalDataStreamer = DataStreamer + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Customers' + IndexDefs = <> + Left = 184 + Top = 144 + end + object ds_Customers: TDADataSource + DataSet = tbl_Customers.Dataset + DataTable = tbl_Customers + Left = 136 + Top = 144 + end + object tbl_Orders: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'OrderID' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EmployeeID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OrderDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RequiredDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShippedDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipVia' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Freight' + DataType = datFloat + BlobType = dabtUnknown + DefaultValue = '0' + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipName' + DataType = datWideString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipAddress' + DataType = datWideString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCity' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipRegion' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipPostalCode' + DataType = datWideString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCountry' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = RemoteDataAdapter + ReadOnly = False + LocalDataStreamer = DataStreamer + MasterSource = ds_Customers + MasterFields = 'CustomerID' + DetailFields = 'CustomerID' + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Orders' + IndexDefs = <> + Left = 184 + Top = 192 + end + object ds_Orders: TDADataSource + DataSet = tbl_Orders.Dataset + DataTable = tbl_Orders + Left = 136 + Top = 192 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClientData.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClientData.pas new file mode 100644 index 0000000..e206cde --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClientData.pas @@ -0,0 +1,36 @@ +unit BriefcaseModelClientData; + +interface + +uses + {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROWinInetHTTPChannel, + {Data Abstract:} uDADataTable, uDABINAdapter, uDAInterfaces, + uDADataStreamer, uDARemoteDataAdapter, uDAScriptingProvider, + uDACDSDataTable, uDAClasses; + +type + TBriefcaseModelClientDataModule = class(TDataModule) + Message: TROBinMessage; + Channel: TROWinInetHTTPChannel; + RemoteService: TRORemoteService; + DataStreamer: TDABinDataStreamer; + RemoteDataAdapter: TDARemoteDataAdapter; + tbl_Customers: TDACDSDataTable; + ds_Customers: TDADataSource; + tbl_Orders: TDACDSDataTable; + ds_Orders: TDADataSource; + private + { Private declarations } + public + { Public declarations } + end; + +var + BriefcaseModelClientDataModule: TBriefcaseModelClientDataModule; + +implementation + +{$R *.dfm} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClientMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClientMain.dfm new file mode 100644 index 0000000..98a5a1d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClientMain.dfm @@ -0,0 +1,135 @@ +object BriefcaseModelClientMainForm: TBriefcaseModelClientMainForm + Left = 85 + Top = 124 + AutoScroll = False + Caption = 'Briefcase Model Client' + ClientHeight = 398 + ClientWidth = 567 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnClose = FormClose + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object Splitter1: TSplitter + Left = 0 + Top = 215 + Width = 567 + Height = 5 + Cursor = crVSplit + Align = alBottom + Beveled = True + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 567 + Height = 34 + Align = alTop + TabOrder = 0 + object OpenButton: TButton + Left = 10 + Top = 7 + Width = 90 + Height = 22 + Caption = 'Fetch Data' + TabOrder = 0 + OnClick = OpenButtonClick + end + object ApplyUpdateButton: TButton + Left = 101 + Top = 7 + Width = 90 + Height = 22 + Action = ApplyUpdateAction + TabOrder = 1 + end + object DiscardChangesButton: TButton + Left = 192 + Top = 7 + Width = 90 + Height = 22 + Action = DiscardChangesAction + TabOrder = 2 + end + object ShowChangesButton: TButton + Left = 283 + Top = 7 + Width = 90 + Height = 22 + Action = ShowChangesAction + TabOrder = 3 + end + end + object gCustomers: TDBGrid + Left = 0 + Top = 59 + Width = 567 + Height = 156 + Align = alClient + DataSource = BriefcaseModelClientDataModule.ds_Customers + TabOrder = 1 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object gOrders: TDBGrid + Left = 0 + Top = 220 + Width = 567 + Height = 153 + Align = alBottom + DataSource = BriefcaseModelClientDataModule.ds_Orders + TabOrder = 2 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object dbnCustomers: TDBNavigator + Left = 0 + Top = 34 + Width = 567 + Height = 25 + DataSource = BriefcaseModelClientDataModule.ds_Customers + Align = alTop + TabOrder = 3 + end + object dbnOrders: TDBNavigator + Left = 0 + Top = 373 + Width = 567 + Height = 25 + DataSource = BriefcaseModelClientDataModule.ds_Orders + Align = alBottom + TabOrder = 4 + end + object ActionList1: TActionList + Left = 337 + Top = 87 + object ApplyUpdateAction: TAction + Caption = 'Apply update' + OnExecute = ApplyUpdateButtonClick + OnUpdate = ApplyUpdateActionUpdate + end + object DiscardChangesAction: TAction + Caption = 'Discard changes' + OnExecute = DiscardChangesButtonClick + OnUpdate = ApplyUpdateActionUpdate + end + object ShowChangesAction: TAction + Caption = 'Show changes' + OnExecute = ShowChangesButtonClick + OnUpdate = ApplyUpdateActionUpdate + end + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClientMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClientMain.pas new file mode 100644 index 0000000..6b421d5 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelClientMain.pas @@ -0,0 +1,140 @@ +unit BriefcaseModelClientMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROClientIntf, uRORemoteService, uROBinMessage, ExtCtrls, + DBCtrls, Grids, DBGrids, ActnList; + +type + TBriefcaseModelClientMainForm = class(TForm) + Panel1: TPanel; + gCustomers: TDBGrid; + gOrders: TDBGrid; + dbnCustomers: TDBNavigator; + dbnOrders: TDBNavigator; + Splitter1: TSplitter; + OpenButton: TButton; + ApplyUpdateButton: TButton; + DiscardChangesButton: TButton; + ShowChangesButton: TButton; + ActionList1: TActionList; + ApplyUpdateAction: TAction; + DiscardChangesAction: TAction; + ShowChangesAction: TAction; + procedure ApplyUpdateButtonClick(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure FormCreate(Sender: TObject); + procedure OpenButtonClick(Sender: TObject); + procedure DiscardChangesButtonClick(Sender: TObject); + procedure ShowChangesButtonClick(Sender: TObject); + procedure ApplyUpdateActionUpdate(Sender: TObject); + private + { Private declarations } + procedure Load; + procedure Save; + procedure FetchData; + public + { Public declarations } + end; + +var + BriefcaseModelClientMainForm: TBriefcaseModelClientMainForm; + +implementation + +uses + BriefcaseModelClientData, uDADataTable, BriefcaseModelClientChanges; + +{$R *.dfm} + +procedure TBriefcaseModelClientMainForm.ApplyUpdateButtonClick(Sender: TObject); +begin + BriefcaseModelClientDataModule.RemoteDataAdapter.ApplyUpdates([BriefcaseModelClientDataModule.tbl_Customers]); +end; + +procedure TBriefcaseModelClientMainForm.Load; + + function loadTable(ATable: TDADataTable): Boolean; + var + aFileName: string; + begin + aFileName := ExtractFilePath(Application.ExeName) + ATable.LogicalName + '.table'; + if FileExists(aFileName) then begin + aTable.LoadFromFile(aFileName); + Result := True; + end else + Result := False; + end; + +begin + if not loadTable(BriefcaseModelClientDataModule.tbl_Customers) or not loadTable(BriefcaseModelClientDataModule.tbl_Orders) then begin + if MessageDlg('No data table files could be found, do you want to fetch the data from the server?', mtConfirmation, [mbYes, mbNo], 0) = idYes then begin + FetchData; + end; + end; +end; + +procedure TBriefcaseModelClientMainForm.Save; + + procedure SaveTable(ATable: TDADataTable); + begin + with ATable do + if active then + SaveToFile(ExtractFilePath(Application.ExeName) + LogicalName + '.table'); + end; + +begin + with BriefcaseModelClientDataModule do begin + SaveTable(tbl_Customers); + SaveTable(tbl_Orders); + end; +end; + +procedure TBriefcaseModelClientMainForm.FormClose(Sender: TObject; var Action: TCloseAction); +begin + Save; +end; + +procedure TBriefcaseModelClientMainForm.FormCreate(Sender: TObject); +begin + Load; +end; + +procedure TBriefcaseModelClientMainForm.OpenButtonClick(Sender: TObject); +begin + FetchData; +end; + +procedure TBriefcaseModelClientMainForm.FetchData; +begin + BriefcaseModelClientDataModule.tbl_Orders.close; + BriefcaseModelClientDataModule.tbl_Customers.close; + BriefcaseModelClientDataModule.RemoteDataAdapter.Fill([BriefcaseModelClientDataModule.tbl_Customers, + BriefcaseModelClientDataModule.tbl_Orders], true, false); +end; + +procedure TBriefcaseModelClientMainForm.DiscardChangesButtonClick(Sender: TObject); +begin + with BriefcaseModelClientDataModule do begin + tbl_Customers.CancelUpdates; + end; +end; + +procedure TBriefcaseModelClientMainForm.ShowChangesButtonClick(Sender: TObject); +begin + ShowChanges; +end; + +procedure TBriefcaseModelClientMainForm.ApplyUpdateActionUpdate( + Sender: TObject); +begin + with BriefcaseModelClientDataModule do + TAction(Sender).Enabled := + (tbl_Customers.DeltaInitialized) and ((tbl_Customers.Delta.Count > 0)) or + (tbl_Orders.DeltaInitialized) and ((tbl_Orders.Delta.Count > 0)) +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelLibrary.rodl b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelLibrary.rodl new file mode 100644 index 0000000..4c957b1 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelLibrary.rodl @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelLibrary_Intf.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelLibrary_Intf.pas new file mode 100644 index 0000000..48b30f5 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelLibrary_Intf.pas @@ -0,0 +1,77 @@ +unit BriefcaseModelLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROClasses, uROClient, uROTypes, uROClientIntf, + {Used RODLs:} DataAbstract4_Intf; + +const + { Library ID } + LibraryUID = '{0C6D69E2-2FEC-49FE-B07B-EE237D69F422}'; + TargetNamespace = ''; + + { Service Interface ID's } + IBriefcaseModelService_IID : TGUID = '{DF3E1E54-2924-4DE3-9834-4B225408D09F}'; + + { Event ID's } + +type + { Forward declarations } + IBriefcaseModelService = interface; + + + + + { IBriefcaseModelService } + IBriefcaseModelService = interface(IDataAbstractService) + ['{DF3E1E54-2924-4DE3-9834-4B225408D09F}'] + end; + + { CoBriefcaseModelService } + CoBriefcaseModelService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IBriefcaseModelService; + end; + + { TBriefcaseModelService_Proxy } + TBriefcaseModelService_Proxy = class(TDataAbstractService_Proxy, IBriefcaseModelService) + protected + function __GetInterfaceName:string; override; + + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uRORes; + +{ CoBriefcaseModelService } + +class function CoBriefcaseModelService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IBriefcaseModelService; +begin + result := TBriefcaseModelService_Proxy.Create(aMessage, aTransportChannel); +end; + +function TBriefcaseModelService_Proxy.__GetInterfaceName:string; +begin + result := 'BriefcaseModelService'; +end; + +initialization + RegisterProxyClass(IBriefcaseModelService_IID, TBriefcaseModelService_Proxy); + + +finalization + UnregisterProxyClass(IBriefcaseModelService_IID); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelLibrary_Invk.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelLibrary_Invk.pas new file mode 100644 index 0000000..34ea4df --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelLibrary_Invk.pas @@ -0,0 +1,32 @@ +unit BriefcaseModelLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Used RODL Intf's:} DataAbstract4_Intf, + {Used RODL Invk's:} DataAbstract4_Invk, + {Generated:} BriefcaseModelLibrary_Intf; + +type + TBriefcaseModelService_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServer.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServer.bdsproj new file mode 100644 index 0000000..bf8e10d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServer.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + BriefcaseModelServer.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServer.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServer.dpr new file mode 100644 index 0000000..715dd7e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServer.dpr @@ -0,0 +1,24 @@ +program BriefcaseModelServer; + +{#ROGEN:BriefcaseModelLibrary.RODL} // RemObjects SDK: Careful, do not remove! + +uses + uROComInit, + uROComboService, + Forms, + BriefcaseModelServerMain in 'BriefcaseModelServerMain.pas' {BriefcaseModelServerMainForm}, + BriefcaseModelServerData in 'BriefcaseModelServerData.pas' {BriefcaseModelServerDataModule: TDataModule}, + BriefcaseModelLibrary_Intf in 'BriefcaseModelLibrary_Intf.pas', + BriefcaseModelLibrary_Invk in 'BriefcaseModelLibrary_Invk.pas', + BriefcaseModelService_Impl in 'BriefcaseModelService_Impl.pas' {BriefcaseModelService: TDataAbstractService}; + +{$R *.res} +{$R RODLFile.res} + +begin + Application.Initialize; + Application.Title := 'Briefcase Model Server'; + Application.CreateForm(TBriefcaseModelServerDataModule, BriefcaseModelServerDataModule); + Application.CreateForm(TBriefcaseModelServerMainForm, BriefcaseModelServerMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServer.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServer.dproj new file mode 100644 index 0000000..7a42c8d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServer.dproj @@ -0,0 +1,80 @@ + + + {55d87c1e-5021-4276-a4c8-aef5b2fb31d9} + BriefcaseModelServer.dpr + Debug + AnyCPU + DCC32 + BriefcaseModelServer.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + BriefcaseModelServer.dpr + + + + + + + MainSource + + + + +
BriefcaseModelServerDataModule
+
+ +
BriefcaseModelServerMainForm
+
+ +
BriefcaseModelService
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServer.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServer.res new file mode 100644 index 0000000..7455d6e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServer.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServerData.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServerData.dfm new file mode 100644 index 0000000..e6fc791 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServerData.dfm @@ -0,0 +1,60 @@ +object BriefcaseModelServerDataModule: TBriefcaseModelServerDataModule + OldCreateOrder = False + OnCreate = DataModuleCreate + Left = 226 + Top = 160 + Height = 207 + Width = 352 + object Server: TROIndyHTTPServer + Dispatchers = < + item + Name = 'Message' + Message = Message + Enabled = True + PathInfo = 'Bin' + end> + Port = 8099 + Left = 32 + Top = 8 + end + object Message: TROBinMessage + Left = 32 + Top = 56 + end + object ConnectionManager: TDAConnectionManager + Connections = < + item + Name = 'Northwind' + ConnectionString = + 'ADO?AuxDriver=SQLOLEDB.1;Server=localhost;Database=Northwind;Int' + + 'egrated Security=SSPI' + Description = 'Microsoft SQL Server 2000, localhost' + Default = True + Tag = 0 + end> + DriverManager = DriverManager + PoolingEnabled = True + Left = 136 + Top = 56 + end + object DriverManager: TDADriverManager + DriverDirectory = '%SYSTEM%\' + TraceActive = False + TraceFlags = [] + Left = 136 + Top = 10 + end + object ADODriver: TDAADODriver + Left = 256 + Top = 8 + end + object DataDictionary: TDADataDictionary + Fields = <> + Left = 32 + Top = 104 + end + object SessionManager: TROInMemorySessionManager + Left = 136 + Top = 104 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServerData.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServerData.pas new file mode 100644 index 0000000..dcd422e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServerData.pas @@ -0,0 +1,41 @@ +unit BriefcaseModelServerData; + +interface + +uses + SysUtils, Classes, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, + uROBinMessage, uROIndyHTTPServer, + uDAEngine, uDADriverManager, uDAClasses, uROSessions, + uDAADODriver, uROIndyTCPServer; + +type + TBriefcaseModelServerDataModule = class(TDataModule) + Server: TROIndyHTTPServer; + Message: TROBinMessage; + ConnectionManager: TDAConnectionManager; + DriverManager: TDADriverManager; + ADODriver: TDAADODriver; + SessionManager: TROInMemorySessionManager; + DataDictionary: TDADataDictionary; + + procedure DataModuleCreate(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + BriefcaseModelServerDataModule: TBriefcaseModelServerDataModule; + +implementation + +{$R *.dfm} + +procedure TBriefcaseModelServerDataModule.DataModuleCreate(Sender: TObject); +begin + Server.Active := true; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServerMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServerMain.dfm new file mode 100644 index 0000000..93afb00 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServerMain.dfm @@ -0,0 +1,25 @@ +object BriefcaseModelServerMainForm: TBriefcaseModelServerMainForm + Left = 185 + Top = 138 + BorderStyle = bsDialog + Caption = 'Briefcase Model Server' + ClientHeight = 64 + ClientWidth = 228 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton + Left = 8 + Top = 8 + Width = 212 + Height = 48 + Cursor = crHandPoint + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServerMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServerMain.pas new file mode 100644 index 0000000..269ea1a --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelServerMain.pas @@ -0,0 +1,25 @@ +unit BriefcaseModelServerMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uDAPoweredByDataAbstractButton, uROPoweredByRemObjectsButton; + +type + TBriefcaseModelServerMainForm = class(TForm) + DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton; + private + { Private declarations } + public + { Public declarations } + end; + +var + BriefcaseModelServerMainForm: TBriefcaseModelServerMainForm; + +implementation + +{$R *.dfm} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelService_Impl.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelService_Impl.dfm new file mode 100644 index 0000000..786a369 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelService_Impl.dfm @@ -0,0 +1,500 @@ +object BriefcaseModelService: TBriefcaseModelService + OldCreateOrder = True + SessionManager = BriefcaseModelServerDataModule.SessionManager + ServiceSchema = Schema + ServiceDataStreamer = DataStreamer + ExportedDataTables = <> + Left = 196 + Top = 147 + Height = 164 + Width = 174 + object Schema: TDASchema + ConnectionManager = BriefcaseModelServerDataModule.ConnectionManager + DataDictionary = BriefcaseModelServerDataModule.DataDictionary + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'Northwind' + Default = True + TargetTable = 'Customers' + SQL = + 'SELECT '#10' CustomerID, CompanyName, ContactName, ContactTitle, ' + + #10' Address, City, Region, PostalCode, Country, Phone, '#10' Fax' + + #10' FROM'#10' Customers' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'CompanyName' + TableField = 'CompanyName' + end + item + DatasetField = 'ContactName' + TableField = 'ContactName' + end + item + DatasetField = 'ContactTitle' + TableField = 'ContactTitle' + end + item + DatasetField = 'Address' + TableField = 'Address' + end + item + DatasetField = 'City' + TableField = 'City' + end + item + DatasetField = 'Region' + TableField = 'Region' + end + item + DatasetField = 'PostalCode' + TableField = 'PostalCode' + end + item + DatasetField = 'Country' + TableField = 'Country' + end + item + DatasetField = 'Phone' + TableField = 'Phone' + end + item + DatasetField = 'Fax' + TableField = 'Fax' + end> + end> + Name = 'Customers' + Fields = < + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CompanyName' + DataType = datWideString + Size = 40 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactName' + DataType = datWideString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactTitle' + DataType = datWideString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Address' + DataType = datWideString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Region' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PostalCode' + DataType = datWideString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Country' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Phone' + DataType = datWideString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Fax' + DataType = datWideString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'Northwind' + Default = True + TargetTable = 'Orders' + SQL = + 'SELECT '#10' OrderID, CustomerID, EmployeeID, OrderDate, Required' + + 'Date, '#10' ShippedDate, ShipVia, Freight, ShipName, ShipAddress,' + + ' '#10' ShipCity, ShipRegion, ShipPostalCode, ShipCountry'#10' FROM'#10' ' + + ' Orders'#10#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'OrderID' + TableField = 'OrderID' + end + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'EmployeeID' + TableField = 'EmployeeID' + end + item + DatasetField = 'OrderDate' + TableField = 'OrderDate' + end + item + DatasetField = 'RequiredDate' + TableField = 'RequiredDate' + end + item + DatasetField = 'ShippedDate' + TableField = 'ShippedDate' + end + item + DatasetField = 'ShipVia' + TableField = 'ShipVia' + end + item + DatasetField = 'Freight' + TableField = 'Freight' + end + item + DatasetField = 'ShipName' + TableField = 'ShipName' + end + item + DatasetField = 'ShipAddress' + TableField = 'ShipAddress' + end + item + DatasetField = 'ShipCity' + TableField = 'ShipCity' + end + item + DatasetField = 'ShipRegion' + TableField = 'ShipRegion' + end + item + DatasetField = 'ShipPostalCode' + TableField = 'ShipPostalCode' + end + item + DatasetField = 'ShipCountry' + TableField = 'ShipCountry' + end> + end> + Name = 'Orders' + Fields = < + item + Name = 'OrderID' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EmployeeID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OrderDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RequiredDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShippedDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipVia' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Freight' + DataType = datFloat + BlobType = dabtUnknown + DefaultValue = '0' + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipName' + DataType = datWideString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipAddress' + DataType = datWideString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCity' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipRegion' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipPostalCode' + DataType = datWideString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCountry' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = <> + RelationShips = < + item + Name = 'FK_Orders_Customers' + MasterDatasetName = 'Customers' + MasterFields = 'CustomerID' + DetailDatasetName = 'Orders' + DetailFields = 'CustomerID' + RelationshipType = rtForeignKey + end> + UpdateRules = <> + Version = 0 + Left = 32 + Top = 56 + end + object DataStreamer: TDABinDataStreamer + BufferSize = 262144 + IsCompatibleV4 = True + Left = 32 + Top = 8 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelService_Impl.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelService_Impl.pas new file mode 100644 index 0000000..5600ede --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/BriefcaseModelService_Impl.pas @@ -0,0 +1,48 @@ +unit BriefcaseModelService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} BriefcaseModelLibrary_Intf, uDADataStreamer, uDABinAdapter, + uDAClasses; + +type + { TBriefcaseModelService } + TBriefcaseModelService = class(TDataAbstractService, IBriefcaseModelService) + DataStreamer: TDABinDataStreamer; + Schema: TDASchema; + private + protected + { IBriefcaseModelService methods } + end; + +implementation + +{$R *.dfm} +uses + {Generated:} BriefcaseModelLibrary_Invk,BriefcaseModelServerData; + +procedure Create_BriefcaseModelService(out anInstance : IUnknown); +begin + anInstance := TBriefcaseModelService.Create(nil); +end; + +{ BriefcaseModelService } +initialization + TROClassFactory.Create('BriefcaseModelService', Create_BriefcaseModelService, TBriefcaseModelService_Invoker); + +finalization + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/RODLFILE.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/RODLFILE.res new file mode 100644 index 0000000..8e8bd7e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Briefcase/RODLFILE.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BizSchemaClient.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BizSchemaClient.pas new file mode 100644 index 0000000..369bec6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BizSchemaClient.pas @@ -0,0 +1,165 @@ +unit BizSchemaClient; + +interface +uses + Classes, + SchemaClient_Intf; + +type + IBizCustomers = interface(ICustomers) + ['{63BAECDD-6091-4A86-BA58-E6FFD5330240}'] + end; + + TBizCustomersDataTableRules = class(TCustomersDataTableRules, IBizCustomers) + end; + + IBizOrders = interface(IOrders) + ['{E43D1B71-EEF0-4805-9F1E-EE032353BD0F}'] + end; + + TBizOrdersDataTableRules = class(TOrdersDataTableRules, IBizOrders) + end; + + TBizErrorMessageItem = class + public + Field: string; + ErrorMessage: string; + end; + + TBizErrorMessage = class + private + FMessage: string; + FList: TList; + function GetItems(Index: integer): TBizErrorMessageItem; + function GetCount: integer; + function GetAsString: string; + procedure SetAsString(const Value: string); + public + constructor Create; + destructor Destroy; override; + function Add(AField: string; AErrorMessage: string): integer; + procedure Clear; + property ItemCount: integer read GetCount; + property Message: string read FMessage write FMessage; + property Items[Index: integer]: TBizErrorMessageItem read GetItems; + property AsString: string read GetAsString write SetAsString; + end; + +implementation + +uses uDADataTable, Variants; + +{ TBizErrorMessage } + +function TBizErrorMessage.Add(AField: string; AErrorMessage: string): integer; +var + Aitem: TBizErrorMessageItem; +begin + Aitem := TBizErrorMessageItem.Create; + Aitem.Field := AField; + Aitem.ErrorMessage := AErrorMessage; + Result := FList.Add(AItem); +end; + +procedure TBizErrorMessage.Clear; +var + i: integer; +begin + for i := 0 to Flist.Count - 1 do + TBizErrorMessageItem(FList[i]).Free; + FList.Clear; +end; + +constructor TBizErrorMessage.Create; +begin + inherited; + FList := TList.Create; +end; + +destructor TBizErrorMessage.Destroy; +begin + Clear; + Flist.Free; + inherited; +end; + +function TBizErrorMessage.GetAsString: string; + + procedure WriteStringToStream(Str: string; Stream: TStringStream); + var + size: integer; + begin + size := Length(Str); + stream.Write(size, Sizeof(integer)); + stream.WriteString(Str); + end; + +var + Stream: TStringStream; + cnt: integer; + i: integer; +begin + Stream := TStringStream.Create(''); + try + Stream.WriteString(Message); + i := 0; + stream.Write(Byte(i), 1); + cnt := GetCount; + stream.Write(cnt, SizeOf(cnt)); + for i := 0 to cnt - 1 do + with Items[i] do begin + WriteStringToStream(Field, Stream); + WriteStringToStream(ErrorMessage, Stream); + end; + Result := Stream.DataString; + finally + Stream.Free; + end; +end; + +function TBizErrorMessage.GetCount: integer; +begin + Result := FList.Count; +end; + +function TBizErrorMessage.GetItems(Index: integer): TBizErrorMessageItem; +begin + Result := TBizErrorMessageItem(FList[Index]); +end; + +procedure TBizErrorMessage.SetAsString(const Value: string); + + function ReadStringToStream(Stream: TStringStream): string; + var + Size: integer; + begin + stream.Read(size, Sizeof(integer)); + Result := stream.ReadString(size); + end; + +var + Stream: TStringStream; + i, cnt: integer; +begin + Clear; + Stream := TStringStream.Create(Value); + try + Message := Pchar(Value); + if Stream.Size < Length(Message) + 1 then exit; + Stream.Seek(Length(Message) + 1, soFromBeginning); + stream.Read(cnt, SizeOf(cnt)); + for i := 0 to cnt - 1 do + with Items[Add('', '')] do begin + Field := ReadStringToStream(Stream); + ErrorMessage := ReadStringToStream(Stream); + end; + finally + Stream.Free; + end; +end; + +initialization + RegisterDataTableRules('Customers.ClientRules', TBizCustomersDataTableRules); + RegisterDataTableRules('Orders.ClientRules', TBizOrdersDataTableRules); +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BizSchemaServer.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BizSchemaServer.pas new file mode 100644 index 0000000..708c409 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BizSchemaServer.pas @@ -0,0 +1,128 @@ +unit BizSchemaServer; + +interface + +uses Classes, SysUtils, uDADataTable, uDABusinessProcessor, + SchemaServer_Intf, BizSchemaClient, uDADelta, uDAInterfaces; + +type + TBizCustomersServerRules = class(TCustomersBusinessProcessorRules) + protected + // Business events + procedure BeforeProcessChange(Sender: TDABusinessProcessor; aChangeType: TDAChangeType; aChange: TDADeltaChange; var ProcessChange: boolean); override; + procedure ProcessError(Sender: TDABusinessProcessor; aChangeType: TDAChangeType; aChange: TDADeltaChange; + const aCommand: IDASQLCommand; var CanRemoveFromDelta: boolean; Error: Exception); override; + end; + + TBizOrdersServerRules = class(TOrdersBusinessProcessorRules) + protected + // Business events + procedure BeforeProcessChange(Sender: TDABusinessProcessor; aChangeType: TDAChangeType; aChange: TDADeltaChange; var ProcessChange: boolean); override; + procedure ProcessError(Sender: TDABusinessProcessor; aChangeType: TDAChangeType; aChange: TDADeltaChange; + const aCommand: IDASQLCommand; var CanRemoveFromDelta: boolean; Error: Exception); override; + + end; + +implementation +uses + ServerGlobal, dialogs; +{ TBizCustomersServerRules } + +function CheckCustomer(CustID: string): boolean; +var + i: integer; +begin + Result := False; + if Length(CustID) <> 5 then Exit; + for i := 1 to Length(CustID) do + if not (CustID[i] in ['A'..'Z', 'a'..'z']) then Exit; + Result := True; +end; + +procedure TBizCustomersServerRules.BeforeProcessChange(Sender: TDABusinessProcessor; + aChangeType: TDAChangeType; aChange: TDADeltaChange; var ProcessChange: boolean); +begin + inherited; + aChange.Message := ''; + if (aChangeType = ctInsert) then begin + with TBizErrorMessage.Create do try + if gCheckCustomerID and not checkCustomer(CustomerID) then + Add('CustomerID', 'CustomerID needs at least 5 characters'); + if gCompanyCheck and not SameText(CompanyName, gCompany) then + Add('CompanyName', 'Company name should be ' + gCompany); + finally + if ItemCount > 0 then begin + Message := 'Cannot process an insert ' + sLineBreak + + '(Customer = ''' + CustomerID + ''')'; + aChange.Message := asString; + end; + Free; + end; + end; + + if (aChangeType = ctDelete) and gDeclineDeleteCustomers then begin + with TBizErrorMessage.Create do try + Message := 'Deleting of customers is not allowed ' + sLineBreak + + '(Customer = ''' + OldCustomerID + ''')'; + aChange.Message := asString; + finally + Free; + end; + end; + ProcessChange := aChange.Message = ''; + if not ProcessChange then aChange.Status := csFailed; +end; + +procedure TBizCustomersServerRules.ProcessError( + Sender: TDABusinessProcessor; aChangeType: TDAChangeType; + aChange: TDADeltaChange; const aCommand: IDASQLCommand; + var CanRemoveFromDelta: boolean; Error: Exception); +begin + aChange.Message := Error.Message; +end; + +{ TBizOrdersServerRules } + +procedure TBizOrdersServerRules.BeforeProcessChange( + Sender: TDABusinessProcessor; aChangeType: TDAChangeType; + aChange: TDADeltaChange; var ProcessChange: boolean); +begin + inherited; + aChange.Message := ''; + if aChangeType <> ctDelete then + if gFreightCheck and (Freight < gFreight) then begin + with TBizErrorMessage.Create do try + Message := 'Cannot process operation ' + sLineBreak + '(OrderID = ' + intToStr(OrderID) + ')'; + Add('Freight', 'Freight should be greater than ' + IntToStr(gFreight)); + aChange.Message := asString; + finally + Free; + end; + end; + if (aChangeType = ctDelete) and gDeclineDeleteOrders then begin + with TBizErrorMessage.Create do try + Message := 'Deleting of orders is not allowed ' + sLineBreak + + '(OrderID = ''' + IntToStr(OldOrderID) + ''')'; + aChange.Message := asString; + finally + Free; + end; + end; + ProcessChange := aChange.Message = ''; + if not ProcessChange then aChange.Status := csFailed; +end; + +procedure TBizOrdersServerRules.ProcessError(Sender: TDABusinessProcessor; + aChangeType: TDAChangeType; aChange: TDADeltaChange; + const aCommand: IDASQLCommand; var CanRemoveFromDelta: boolean; + Error: Exception); +begin + aChange.Message := Error.Message; + aChange.Status := csFailed; +end; + +initialization + RegisterBusinessProcessorRules('Customers.ServerRules', TBizCustomersServerRules); + RegisterBusinessProcessorRules('Orders.ServerRules', TBizOrdersServerRules); +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessor.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessor.Sample.html new file mode 100644 index 0000000..3a99fee --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessor.Sample.html @@ -0,0 +1,35 @@ + + + + + + + + + +

+ Business Processor sample +

+ +

Purpose

+ +

+ This is a good example to show the advantages of a multi-tier architecture: systems can be updated via a server re-deploy without the need to update any client. Also, + the sample shows advanced handling on the client of any errors returned from the + server. +

+ +

Examine the Code

+ + + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessor.bdsgroup b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessor.bdsgroup new file mode 100644 index 0000000..f4f1dd2 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessor.bdsgroup @@ -0,0 +1,20 @@ + + + + + + + + + + + + + BusinessProcessorServer.bdsproj + BusinessProcessorClient.bdsproj + BusinessProcessorServer.exe BusinessProcessorClient.exe + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessor.bpg b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessor.bpg new file mode 100644 index 0000000..ed4c7cc --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessor.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = BusinessProcessorServer.exe BusinessProcessorClient.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +BusinessProcessorServer.exe: BusinessProcessorServer.dpr + $(DCC) + +BusinessProcessorClient.exe: BusinessProcessorClient.dpr + $(DCC) + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessor.groupproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessor.groupproj new file mode 100644 index 0000000..2cdc078 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessor.groupproj @@ -0,0 +1,40 @@ + + + {e64b5502-8847-4dd5-8e67-4e6d0176cf50} + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClient.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClient.bdsproj new file mode 100644 index 0000000..22248ef --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClient.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + BusinessProcessorClient.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClient.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClient.dpr new file mode 100644 index 0000000..67f0b32 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClient.dpr @@ -0,0 +1,20 @@ +program BusinessProcessorClient; + +uses + uROComInit, + Forms, + MidasLib, + BusinessProcessorClientMain in 'BusinessProcessorClientMain.pas' {BusinessProcessorClientMainForm}, + BusinessProcessorClientData in 'BusinessProcessorClientData.pas' {BusinessProcessorClientDataModule: TDAClientDataModule}, + BizSchemaClient in 'BizSchemaClient.pas', + BusinessProcessorClientUnit1 in 'BusinessProcessorClientUnit1.pas' {BusinessProcessorClientForm2}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TBusinessProcessorClientDataModule, BusinessProcessorClientDataModule); + Application.CreateForm(TBusinessProcessorClientMainForm, BusinessProcessorClientMainForm); + Application.Run; +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClient.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClient.dproj new file mode 100644 index 0000000..e6a4576 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClient.dproj @@ -0,0 +1,79 @@ + + + {701a77fa-871d-41bc-ab21-ba2b8d978e5b} + BusinessProcessorClient.dpr + Debug + AnyCPU + DCC32 + BusinessProcessorClient.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + BusinessProcessorClient.dpr + + + + + + + MainSource + + + +
BusinessProcessorClientDataModule
+
+ +
BusinessProcessorClientMainForm
+
+ +
BusinessProcessorClientForm2
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClient.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClient.res new file mode 100644 index 0000000..da01de5 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClient.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClientData.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClientData.dfm new file mode 100644 index 0000000..a7e6ea9 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClientData.dfm @@ -0,0 +1,422 @@ +object BusinessProcessorClientDataModule: TBusinessProcessorClientDataModule + OldCreateOrder = True + Left = 345 + Top = 206 + Height = 266 + Width = 184 + object Channel: TROWinInetHTTPChannel + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/BIN' + ServerLocators = <> + DispatchOptions = [] + Left = 40 + Top = 8 + end + object Message: TROBinMessage + Left = 40 + Top = 52 + end + object RemoteService: TRORemoteService + Message = Message + Channel = Channel + ServiceName = 'BusinessProcessorService' + Left = 40 + Top = 96 + end + object DataStreamer: TDABinDataStreamer + BufferSize = 262144 + Left = 40 + Top = 140 + end + object RemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RemoteService + GetDataCall.RemoteService = RemoteService + UpdateDataCall.RemoteService = RemoteService + GetScriptsCall.RemoteService = RemoteService + RemoteService = RemoteService + DataStreamer = DataStreamer + FailureBehavior = fbShowReconcile + OnGenerateRecordMessage = RemoteDataAdapterGenerateRecordMessage + OnShowReconcileRecordInAppUI = RemoteDataAdapterShowReconcileRecordInAppUI + Left = 40 + Top = 184 + end + object tbl_Customers: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CompanyName' + DataType = datWideString + Size = 40 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactName' + DataType = datWideString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactTitle' + DataType = datWideString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Address' + DataType = datWideString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Region' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PostalCode' + DataType = datWideString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Country' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Phone' + DataType = datWideString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Fax' + DataType = datWideString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + Params = <> + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = RemoteDataAdapter + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Customers' + BusinessRulesID = 'Customers.ClientRules' + IndexDefs = <> + Left = 89 + Top = 100 + end + object ds_Customers: TDADataSource + DataSet = tbl_Customers.Dataset + DataTable = tbl_Customers + Left = 118 + Top = 99 + end + object tbl_Orders: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'OrderID' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EmployeeID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OrderDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RequiredDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShippedDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipVia' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Freight' + DataType = datFloat + BlobType = dabtUnknown + DefaultValue = '0' + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipName' + DataType = datWideString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipAddress' + DataType = datWideString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCity' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipRegion' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipPostalCode' + DataType = datWideString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCountry' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + Params = < + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + BlobType = dabtUnknown + Value = 'ALFKI' + ParamType = daptUnknown + end> + MasterParamsMappings.Strings = ( + 'CustomerID=CustomerID') + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = RemoteDataAdapter + ReadOnly = False + MasterSource = ds_Customers + MasterFields = 'CustomerID' + DetailFields = 'CustomerID' + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Orders' + BusinessRulesID = 'Orders.ClientRules' + IndexDefs = <> + Left = 99 + Top = 151 + end + object ds_Orders: TDADataSource + DataSet = tbl_Orders.Dataset + DataTable = tbl_Orders + Left = 128 + Top = 149 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClientData.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClientData.pas new file mode 100644 index 0000000..9f96a19 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClientData.pas @@ -0,0 +1,86 @@ +unit BusinessProcessorClientData; + +interface + +uses + {vcl:} SysUtils, Classes, DB, DBClient, Variants, + {RemObjects:} uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROWinInetHTTPChannel, + {Data Abstract:} uDADataTable, uDABINAdapter, uDAInterfaces, + uDADataStreamer, uDARemoteDataAdapter, uDAScriptingProvider, + uDACDSDataTable, uDADelta; + +type + TBusinessProcessorClientDataModule = class(TDataModule) + Message: TROBinMessage; + Channel: TROWinInetHTTPChannel; + RemoteService: TRORemoteService; + DataStreamer: TDABinDataStreamer; + RemoteDataAdapter: TDARemoteDataAdapter; + tbl_Customers: TDACDSDataTable; + ds_Customers: TDADataSource; + tbl_Orders: TDACDSDataTable; + ds_Orders: TDADataSource; + procedure RemoteDataAdapterGenerateRecordMessage(Sender: TObject; + aChange: TDADeltaChange; ADatatable: TDADataTable; + var aMessage: string); + procedure RemoteDataAdapterShowReconcileRecordInAppUI(Sender: TObject; + aChange: TDADeltaChange; aDatatable: TDADataTable; + var aHandled: Boolean; var aAction: TDAReconcileDialogAction); + private + { Private declarations } + public + { Public declarations } + end; + +var + BusinessProcessorClientDataModule: TBusinessProcessorClientDataModule; + +implementation +uses BusinessProcessorClientUnit1; +{$R *.dfm} + +procedure TBusinessProcessorClientDataModule.RemoteDataAdapterGenerateRecordMessage( + Sender: TObject; aChange: TDADeltaChange; ADatatable: TDADataTable; + var aMessage: string); +var + i: integer; +begin + aMessage := 'A problem occured while '; + case achange.ChangeType of + ctInsert: aMessage := aMessage + 'inserting'; + ctUpdate: aMessage := aMessage + 'updating'; + ctDelete: aMessage := aMessage + 'deleting'; + end; + aMessage := aMessage + ' a record in table "' + ADatatable.LogicalName + '"'; + if ADatatable = tbl_Customers then begin + aMessage := aMessage + ' , CustomerID = '''; + if aChange.ChangeType = ctInsert then + aMessage := aMessage + VarToStr(aChange.NewValueByName['CustomerID']) + '''' + else + aMessage := aMessage + VarToStr(aChange.OldValueByName['CustomerID']) + ''''; + end + else begin + aMessage := aMessage + ' , OrderID = '''; + if aChange.ChangeType = ctInsert then + aMessage := aMessage + VarToStr(aChange.NewValueByName['OrderID']) + '''' + else + aMessage := aMessage + VarToStr(aChange.OldValueByName['OrderID']) + ''''; + end; + + i := pos(sLineBreak, aChange.Message); + if i = 0 then + aMessage := aMessage + sLineBreak + sLineBreak + aChange.Message + else + aMessage := aMessage + sLineBreak + sLineBreak + copy(aChange.Message, 1, i - 1); +end; + +procedure TBusinessProcessorClientDataModule.RemoteDataAdapterShowReconcileRecordInAppUI( + Sender: TObject; aChange: TDADeltaChange; aDatatable: TDADataTable; + var aHandled: Boolean; var aAction: TDAReconcileDialogAction); +begin + BusinessProcessorClientUnit1.ReconcileDialogShowDetails(aChange, ADatatable, AAction); + AHandled := True; +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClientMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClientMain.dfm new file mode 100644 index 0000000..717efe7 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClientMain.dfm @@ -0,0 +1,134 @@ +object BusinessProcessorClientMainForm: TBusinessProcessorClientMainForm + Left = 320 + Top = 215 + AutoScroll = False + Caption = 'BusinessProcessor Client' + ClientHeight = 414 + ClientWidth = 624 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object Splitter1: TSplitter + Left = 0 + Top = 266 + Width = 624 + Height = 3 + Cursor = crVSplit + Align = alBottom + end + object gCustomers: TDBGrid + Left = 0 + Top = 58 + Width = 624 + Height = 208 + Align = alClient + DataSource = BusinessProcessorClientDataModule.ds_Customers + TabOrder = 0 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object dbnCustomers: TDBNavigator + Left = 0 + Top = 33 + Width = 624 + Height = 25 + DataSource = BusinessProcessorClientDataModule.ds_Customers + Align = alTop + TabOrder = 1 + end + object Button1: TButton + Left = 13 + Top = 8 + Width = 75 + Height = 25 + Caption = 'Open' + TabOrder = 2 + OnClick = Button1Click + end + object Button2: TButton + Left = 91 + Top = 7 + Width = 75 + Height = 25 + Caption = 'Button2' + TabOrder = 3 + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 624 + Height = 33 + Align = alTop + BevelOuter = bvNone + TabOrder = 4 + object ApplyUpdateButton: TButton + Left = 92 + Top = 6 + Width = 74 + Height = 25 + Caption = 'Apply Update' + TabOrder = 0 + OnClick = ApplyUpdateButtonClick + end + object OpenButton: TButton + Left = 13 + Top = 6 + Width = 75 + Height = 25 + Caption = 'Open/Close' + TabOrder = 1 + OnClick = Button1Click + end + object CreateCustomerButton: TButton + Left = 222 + Top = 6 + Width = 95 + Height = 25 + Caption = 'Create customer' + TabOrder = 2 + OnClick = CreateCustomerButtonClick + end + object CreateOrderButton: TButton + Left = 322 + Top = 6 + Width = 75 + Height = 25 + Caption = 'Create order' + TabOrder = 3 + OnClick = CreateOrderButtonClick + end + end + object gOrders: TDBGrid + Left = 0 + Top = 269 + Width = 624 + Height = 120 + Align = alBottom + DataSource = BusinessProcessorClientDataModule.ds_Orders + TabOrder = 5 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object dbnOrders: TDBNavigator + Left = 0 + Top = 389 + Width = 624 + Height = 25 + DataSource = BusinessProcessorClientDataModule.ds_Orders + Align = alBottom + TabOrder = 6 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClientMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClientMain.pas new file mode 100644 index 0000000..7da77cd --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClientMain.pas @@ -0,0 +1,77 @@ +unit BusinessProcessorClientMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROClientIntf, uRORemoteService, uROBinMessage, ExtCtrls, + DBCtrls, Grids, DBGrids; + +type + TBusinessProcessorClientMainForm = class(TForm) + gCustomers: TDBGrid; + dbnCustomers: TDBNavigator; + Button1: TButton; + Button2: TButton; + Panel1: TPanel; + ApplyUpdateButton: TButton; + OpenButton: TButton; + gOrders: TDBGrid; + dbnOrders: TDBNavigator; + Splitter1: TSplitter; + CreateCustomerButton: TButton; + CreateOrderButton: TButton; + procedure Button1Click(Sender: TObject); + procedure ApplyUpdateButtonClick(Sender: TObject); + procedure CreateCustomerButtonClick(Sender: TObject); + procedure CreateOrderButtonClick(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + BusinessProcessorClientMainForm: TBusinessProcessorClientMainForm; + +implementation + +uses + BusinessProcessorClientData, BizSchemaClient, SchemaClient_Intf; + +{$R *.dfm} + +procedure TBusinessProcessorClientMainForm.Button1Click(Sender: TObject); +begin + with BusinessProcessorClientDataModule.tbl_Customers do + Active := not Active; +end; + +procedure TBusinessProcessorClientMainForm.ApplyUpdateButtonClick(Sender: TObject); +begin + with BusinessProcessorClientDataModule.tbl_Customers do + ApplyUpdates(); +end; + +procedure TBusinessProcessorClientMainForm.CreateCustomerButtonClick(Sender: TObject); +begin + with BusinessProcessorClientDataModule.tbl_Customers as IBizCustomers do begin + Insert; + CustomerID := 'test'; + CompanyName := 'test company'; + Post; + end; +end; + +procedure TBusinessProcessorClientMainForm.CreateOrderButtonClick(Sender: TObject); +begin + with BusinessProcessorClientDataModule.tbl_Orders as IBizOrders do begin + Insert; + OrderID := 1; + Freight := 10; + Post; + end; +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClientUnit1.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClientUnit1.dfm new file mode 100644 index 0000000..db0f536 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClientUnit1.dfm @@ -0,0 +1,86 @@ +object BusinessProcessorClientForm2: TBusinessProcessorClientForm2 + Left = 358 + Top = 217 + Width = 490 + Height = 298 + BorderIcons = [biSystemMenu] + Caption = 'Show Details' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poOwnerFormCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object ScrollBox: TScrollBox + Left = 0 + Top = 148 + Width = 482 + Height = 85 + Align = alClient + BevelInner = bvNone + BevelOuter = bvNone + BorderStyle = bsNone + TabOrder = 0 + end + object BottomPanel: TPanel + Left = 0 + Top = 233 + Width = 482 + Height = 32 + Align = alBottom + BevelOuter = bvNone + TabOrder = 1 + DesignSize = ( + 482 + 32) + object OkButton: TButton + Left = 225 + Top = 4 + Width = 75 + Height = 25 + Anchors = [akRight, akBottom] + Caption = '&Ok' + Default = True + ModalResult = 1 + TabOrder = 0 + OnClick = OkButtonClick + end + object CancelButton: TButton + Left = 304 + Top = 4 + Width = 95 + Height = 25 + Anchors = [akRight, akBottom] + Caption = '&Cancel Change' + ModalResult = 2 + TabOrder = 1 + OnClick = CancelButtonClick + end + object CloseButton: TButton + Left = 404 + Top = 4 + Width = 75 + Height = 25 + Anchors = [akRight, akBottom] + Cancel = True + Caption = 'Close' + ModalResult = 7 + TabOrder = 2 + OnClick = CancelButtonClick + end + end + object TopPanel: TPanel + Left = 0 + Top = 0 + Width = 482 + Height = 148 + Align = alTop + BevelOuter = bvNone + TabOrder = 2 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClientUnit1.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClientUnit1.pas new file mode 100644 index 0000000..40a8e92 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorClientUnit1.pas @@ -0,0 +1,298 @@ +unit BusinessProcessorClientUnit1; + +interface +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ExtCtrls, uDADelta, uDADataTable, DB, BizSchemaClient, uDARemoteDataAdapter; + +type + TBusinessProcessorClientForm2 = class(TForm) + ScrollBox: TScrollBox; + BottomPanel: TPanel; + TopPanel: TPanel; + OkButton: TButton; + CancelButton: TButton; + CloseButton: TButton; + procedure FormCreate(Sender: TObject); + procedure OkButtonClick(Sender: TObject); + procedure CancelButtonClick(Sender: TObject); + private + { Private declarations } + dbeditHeight, labelheight: integer; + FChange: TDADeltaChange; + Datasource: TDADataSource; + procedure Setup; + procedure GenerateControls; + procedure ApplyErrorMessage(BizErrorMessage: TBizErrorMessage); + procedure OnFieldValueChanged(Sender: TObject); + public + { Public declarations } + + end; + +procedure ReconcileDialogShowDetails(AChange: TDADeltaChange; aTable: TDADataTable;var AAction: TDAReconcileDialogAction); +implementation +uses + uDAInterfaces, uROClasses, dbCtrls; +{$R *.dfm} + +const + labelWidth = 100; + editWidth = 200; + c_Color: TColor = clMoneyGreen; + +procedure ReconcileDialogShowDetails(AChange: TDADeltaChange; aTable: TDADataTable;var AAction: TDAReconcileDialogAction); +var + FFiltered: Boolean; + FMasterDS: TDADataSource; + FRemoteFetchEnabled: Boolean; + FMasterFields: string; +begin + with TBusinessProcessorClientForm2.Create(Application) do try + FChange := AChange; + FFiltered := ATable.Filtered; + FMasterDS := aTable.MasterSource; + FMasterFields := aTable.MasterFields; + FRemoteFetchEnabled := aTable.RemoteFetchEnabled; + try + ATable.Filtered := False; + aTable.MasterSource := nil; + aTable.MasterFields := ''; + aTable.RemoteFetchEnabled := False; + DataSource.DataTable := aTable; + Setup; + case ShowModal() of + mrOk: AAction := rdlgSkip; + mrCancel: AAction := rdlgCancel; + else AAction := rdlgNone; + end; + finally + aTable.RemoteFetchEnabled := FRemoteFetchEnabled; + aTable.Filtered := FFiltered; + aTable.MasterSource := FMasterDS; + aTable.MasterFields := FMasterFields + end; + finally + Release; + end; +end; + +{ TShowDetailsForm } + +procedure TBusinessProcessorClientForm2.Setup; +var + BizErrorMessage: TBizErrorMessage; +begin + if FChange.ChangeType <> ctDelete then + with DataSource.DataTable do + if not Locate(RecIDFieldName, FChange.RecID, []) then RaiseError('Couldn''t find record #' + FormatRecIDString(FChange.RecID)); + GenerateControls; + BizErrorMessage := TBizErrorMessage.Create; + try + BizErrorMessage.AsString := FChange.Message; + ApplyErrorMessage(BizErrorMessage); + finally + BizErrorMessage.Free; + end; + + if Screen.Height > Self.Height + (ScrollBox.VertScrollBar.Range - ScrollBox.Height) then + Self.Height := Self.Height + (ScrollBox.VertScrollBar.Range - ScrollBox.Height) + else + Self.Height := Screen.Height; + case FChange.ChangeType of + ctInsert: OkButton.Caption := 'Skip'; + ctUpdate: OkButton.Caption := 'Skip'; + ctDelete: OkButton.Caption := 'Skip'; + end; +end; + +procedure TBusinessProcessorClientForm2.GenerateControls; +var + i: integer; + aField: string; + aTop, aleft: integer; + FLabel: TLabel; + FdbEdit: TDBEdit; + FEdit: TEdit; +begin + aleft := 7; + aTop := 7; + for i := 0 to FChange.Delta.LoggedFieldCount - 1 do begin + aField := FChange.Delta.LoggedFieldNames[i]; + aTop := 7 + (3 + dbeditHeight) * i; + aleft := 7; + + FLabel := TLabel.Create(Self); + with FLabel do begin + Parent := ScrollBox; + Name := 'l_' + aField; + Caption := aField; + Left := aleft; + Top := (dbeditHeight - Height) div 2 + aTop + 1; + Width := labelWidth; + aleft := aleft + 7 + labelWidth; + end; + + if FChange.ChangeType in [ctInsert, ctUpdate] then begin + if Self.DataSource.DataTable.FieldByName(aField).DataType = datBlob then begin + FEdit := TEdit.Create(Self); + with FEdit do begin + Name := 'dbe_' + aField; + Parent := ScrollBox; + Left := aleft; + aleft := aleft + 7 + editWidth; + Top := aTop; + Width := editWidth; + ReadOnly := True; + Text := '[blob]'; + end; + end + else begin + FdbEdit := TDBEdit.Create(Self); + with FdbEdit do begin + Name := 'dbe_' + aField; + DataSource := Self.DataSource; + Parent := ScrollBox; + DataField := aField; + Left := aleft; + Top := aTop; + Width := editWidth; + OnChange := OnFieldValueChanged; + aleft := aleft + 7 + editWidth; + if (FChange.ChangeType = ctUpdate) and + not ROVariantsEqual(FChange.OldValues[i], FChange.NewValues[i]) then + Color := c_Color; + end; + end; + end; + + if FChange.ChangeType in [ctUpdate, ctDelete] then begin + FEdit := TEdit.Create(Self); + with FEdit do begin + Name := 'e_' + aField; + Parent := ScrollBox; + Left := aleft; + aleft := aleft + 7 + editWidth; + Top := aTop; + Width := editWidth; + ReadOnly := True; + Color := clBtnFace; + if Self.DataSource.DataTable.FieldByName(aField).DataType = datBlob then begin + Text := '[blob]' + end + else begin + case FChange.ChangeType of + ctDelete: text := VarToStr(FChange.OldValues[i]); + ctUpdate: begin + if not Self.DataSource.DataTable.HasReducedDelta then + text := VarToStr(FChange.OldValues[i]) + else + if not VarIsEmpty(FChange.OldValues[i]) then + text := VarToStr(FChange.OldValues[i]) + else text := Self.DataSource.DataTable.FieldByName(aField).AsString; + end; + end; + end; + end; + end; + end; + inc(aTop, 20); + inc(aLeft, 7); + //ScrollBox.HorzScrollBar.Range := aleft; + Self.ClientWidth := aleft + ScrollBox.VertScrollBar.Size + 2; + Self.Constraints.MinWidth := Self.Width; + Self.Constraints.MaxWidth := Self.Width; + + ScrollBox.VertScrollBar.Range := aTop; +end; + +procedure TBusinessProcessorClientForm2.FormCreate(Sender: TObject); +begin + inherited; + with TDBEdit.Create(Self) do try + dbeditHeight := Height; + finally + free; + end; + with TLabel.Create(Self) do try + labelheight := Height; + finally + free; + end; + Datasource := TDADataSource.Create(Self); +end; + +procedure TBusinessProcessorClientForm2.OkButtonClick(Sender: TObject); +begin + if DataSource.DataTable.State in [dsEdit, dsInsert] then DataSource.DataTable.Post; +end; + +procedure TBusinessProcessorClientForm2.CancelButtonClick(Sender: TObject); +begin + if DataSource.DataTable.State in [dsEdit, dsInsert] then DataSource.DataTable.Cancel; +end; + +procedure TBusinessProcessorClientForm2.ApplyErrorMessage( + BizErrorMessage: TBizErrorMessage); +var + i: integer; + FLabel: TLabel; + Fcomp: TComponent; + aTop: integer; +begin + ShowHint := True; + Caption := Datasource.DataTable.LogicalName; + FLabel := TLabel.Create(Self); + with FLabel do begin + Parent := TopPanel; + i := pos(sLineBreak, BizErrorMessage.Message); + if i = 0 then + Caption := BizErrorMessage.Message + else + Caption := copy(BizErrorMessage.Message, 1, i-1); + Hint := Caption; + Left := 7; + Top := 7; + AutoSize := true; + WordWrap := True; + AutoSize := False; + Height:= labelheight * (Width div (Parent.ClientWidth - Left * 2)+1); + Width := Parent.ClientWidth - Left * 2; +{ if BizErrorMessage.ItemCount = 0 then + Height := labelheight * 4 + else + Height := labelheight; } + aTop := Height + Top + 3; + Anchors := Anchors + [akRight]; + end; + + for i := 0 to BizErrorMessage.ItemCount - 1 do begin + with BizErrorMessage.Items[i] do begin + Fcomp := Self.FindComponent('l_' + Field); + if Fcomp <> nil then TLabel(Fcomp).Font.Color := clRed; + + FLabel := TLabel.Create(Self); + with FLabel do begin + Parent := TopPanel; + Name := 'error_' + Field; + Caption := ErrorMessage; + Left := 7; + Top := aTop; + AutoSize := True; + Font.Color := clRed; + aTop := Height + Top + 3; + end; + end; + end; + + TopPanel.ClientHeight := aTop; +end; + +procedure TBusinessProcessorClientForm2.OnFieldValueChanged( + Sender: TObject); +begin + OkButton.Caption := 'Update'; +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorLibrary.RODL b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorLibrary.RODL new file mode 100644 index 0000000..60a510d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorLibrary.RODL @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorLibrary_Intf.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorLibrary_Intf.pas new file mode 100644 index 0000000..2ff6be0 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorLibrary_Intf.pas @@ -0,0 +1,77 @@ +unit BusinessProcessorLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf, + {Used RODLs:} DataAbstract4_Intf; + +const + { Library ID } + LibraryUID = '{EBAEAB9A-1E78-4BB3-8417-2E226959496F}'; + TargetNamespace = ''; + + { Service Interface ID's } + IBusinessProcessorService_IID : TGUID = '{4404161B-2A9E-4711-AADF-4493AC19BB34}'; + + { Event ID's } + +type + { Forward declarations } + IBusinessProcessorService = interface; + + + + + { IBusinessProcessorService } + IBusinessProcessorService = interface(IDataAbstractService) + ['{4404161B-2A9E-4711-AADF-4493AC19BB34}'] + end; + + { CoBusinessProcessorService } + CoBusinessProcessorService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IBusinessProcessorService; + end; + + { TBusinessProcessorService_Proxy } + TBusinessProcessorService_Proxy = class(TDataAbstractService_Proxy, IBusinessProcessorService) + protected + function __GetInterfaceName:string; override; + + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uRORes; + +{ CoBusinessProcessorService } + +class function CoBusinessProcessorService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IBusinessProcessorService; +begin + result := TBusinessProcessorService_Proxy.Create(aMessage, aTransportChannel); +end; + +function TBusinessProcessorService_Proxy.__GetInterfaceName:string; +begin + result := 'BusinessProcessorService'; +end; + +initialization + RegisterProxyClass(IBusinessProcessorService_IID, TBusinessProcessorService_Proxy); + + +finalization + UnregisterProxyClass(IBusinessProcessorService_IID); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorLibrary_Invk.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorLibrary_Invk.pas new file mode 100644 index 0000000..a265b95 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorLibrary_Invk.pas @@ -0,0 +1,32 @@ +unit BusinessProcessorLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Used RODL Intf's:} DataAbstract4_Intf, + {Used RODL Invk's:} DataAbstract4_Invk, + {Generated:} BusinessProcessorLibrary_Intf; + +type + TBusinessProcessorService_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServer.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServer.bdsproj new file mode 100644 index 0000000..4053265 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServer.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + BusinessProcessorServer.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServer.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServer.dpr new file mode 100644 index 0000000..b304ddc --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServer.dpr @@ -0,0 +1,27 @@ +program BusinessProcessorServer; + +{#ROGEN:BusinessProcessorLibrary.RODL} // RemObjects SDK: Careful, do not remove! + +uses + uROComInit, + uROComboService, + Forms, + BusinessProcessorServerMain in 'BusinessProcessorServerMain.pas' {BusinessProcessorServerMainForm}, + BusinessProcessorServerData in 'BusinessProcessorServerData.pas' {BusinessProcessorServerDataModule: TDataModule}, + SchemaClient_Intf in 'SchemaClient_Intf.pas', + SchemaServer_Intf in 'SchemaServer_Intf.pas', + BizSchemaServer in 'BizSchemaServer.pas', + ServerGlobal in 'ServerGlobal.pas', + BusinessProcessorLibrary_Intf in 'BusinessProcessorLibrary_Intf.pas', + BusinessProcessorLibrary_Invk in 'BusinessProcessorLibrary_Invk.pas', + BusinessProcessorService_Impl in 'BusinessProcessorService_Impl.pas' {BusinessProcessorService: TDataAbstractService}; + +{$R *.res} +{$R RODLFile.res} + +begin + Application.Initialize; + Application.CreateForm(TBusinessProcessorServerDataModule, BusinessProcessorServerDataModule); + Application.CreateForm(TBusinessProcessorServerMainForm, BusinessProcessorServerMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServer.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServer.dproj new file mode 100644 index 0000000..fc2e95e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServer.dproj @@ -0,0 +1,84 @@ + + + {dac310a9-44d2-4920-b4d5-46703300c98d} + BusinessProcessorServer.dpr + Debug + AnyCPU + DCC32 + BusinessProcessorServer.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + BusinessProcessorServer.dpr + + + + + + + MainSource + + + + + +
BusinessProcessorServerDataModule
+
+ +
BusinessProcessorServerMainForm
+
+ +
BusinessProcessorService
+
+ + + +
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServer.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServer.res new file mode 100644 index 0000000..7455d6e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServer.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServerData.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServerData.dfm new file mode 100644 index 0000000..5268506 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServerData.dfm @@ -0,0 +1,60 @@ +object BusinessProcessorServerDataModule: TBusinessProcessorServerDataModule + OldCreateOrder = False + OnCreate = DataModuleCreate + Left = 186 + Top = 136 + Height = 207 + Width = 352 + object Server: TROIndyHTTPServer + Dispatchers = < + item + Name = 'Message' + Message = Message + Enabled = True + PathInfo = 'Bin' + end> + Port = 8099 + Left = 32 + Top = 8 + end + object Message: TROBinMessage + Left = 32 + Top = 56 + end + object ConnectionManager: TDAConnectionManager + Connections = < + item + Name = 'Northwind' + ConnectionString = + 'ADO?AuxDriver=SQLOLEDB.1;Server=localhost;Database=Northwind;Int' + + 'egrated Security=SSPI;' + Description = 'Microsoft SQL Server 2000, localhost' + Default = True + Tag = 0 + end> + DriverManager = DriverManager + PoolingEnabled = True + Left = 136 + Top = 56 + end + object DriverManager: TDADriverManager + DriverDirectory = '%SYSTEM%\' + TraceActive = False + TraceFlags = [] + Left = 136 + Top = 10 + end + object ADODriver: TDAADODriver + Left = 256 + Top = 8 + end + object DataDictionary: TDADataDictionary + Fields = <> + Left = 32 + Top = 104 + end + object SessionManager: TROInMemorySessionManager + Left = 136 + Top = 104 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServerData.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServerData.pas new file mode 100644 index 0000000..871cd5e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServerData.pas @@ -0,0 +1,42 @@ +unit BusinessProcessorServerData; + +interface + +uses + SysUtils, Classes, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, + uROBinMessage, uROIndyHTTPServer, + uDAEngine, uDADriverManager, uDAClasses, uROSessions, + uDAADODriver, uROIndyTCPServer; + +type + TBusinessProcessorServerDataModule = class(TDataModule) + Server: TROIndyHTTPServer; + Message: TROBinMessage; + ConnectionManager: TDAConnectionManager; + DriverManager: TDADriverManager; + ADODriver: TDAADODriver; + SessionManager: TROInMemorySessionManager; + DataDictionary: TDADataDictionary; + + procedure DataModuleCreate(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + BusinessProcessorServerDataModule: TBusinessProcessorServerDataModule; + +implementation + +{$R *.dfm} + +procedure TBusinessProcessorServerDataModule.DataModuleCreate(Sender: TObject); +begin + Server.Active := true; +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServerMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServerMain.dfm new file mode 100644 index 0000000..7d1094d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServerMain.dfm @@ -0,0 +1,109 @@ +object BusinessProcessorServerMainForm: TBusinessProcessorServerMainForm + Left = 100 + Top = 111 + BorderStyle = bsDialog + Caption = 'Business Processor Server' + ClientHeight = 170 + ClientWidth = 380 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 7 + Top = 7 + Width = 39 + Height = 13 + Caption = 'Checks:' + end + object GroupBox1: TGroupBox + Left = 7 + Top = 24 + Width = 365 + Height = 73 + Anchors = [akLeft, akTop, akRight] + Caption = 'Customers' + TabOrder = 0 + object cbCheckCustomerID: TCheckBox + Left = 8 + Top = 15 + Width = 321 + Height = 17 + Caption = 'New records: CustomerID needs at least 5 characters' + TabOrder = 0 + OnClick = cbCheckCustomerIDClick + end + object cbDeclineDeleteCustomers: TCheckBox + Left = 8 + Top = 49 + Width = 216 + Height = 17 + Caption = 'Restrict deleting records' + TabOrder = 1 + OnClick = cbDeclineDeleteCustomersClick + end + object cbCompany: TCheckBox + Left = 8 + Top = 32 + Width = 228 + Height = 17 + Caption = 'New records: Company name for should be ' + TabOrder = 2 + OnClick = cbCompanyClick + end + object eCompany: TEdit + Left = 245 + Top = 30 + Width = 110 + Height = 21 + TabOrder = 3 + Text = 'Company' + OnChange = eCompanyChange + end + end + object GroupBox2: TGroupBox + Left = 7 + Top = 100 + Width = 365 + Height = 60 + Anchors = [akLeft, akTop, akRight] + Caption = 'Orders' + TabOrder = 1 + object cbFreight: TCheckBox + Left = 8 + Top = 15 + Width = 218 + Height = 17 + Caption = 'Freight should be greater than' + TabOrder = 0 + OnClick = cbFreightClick + end + object cbDeclineDeleteOrders: TCheckBox + Left = 8 + Top = 33 + Width = 216 + Height = 17 + Caption = 'Restrict deleting of orders' + TabOrder = 1 + OnClick = cbDeclineDeleteOrdersClick + end + object eFreight: TSpinEdit + Left = 245 + Top = 12 + Width = 110 + Height = 22 + MaxValue = 0 + MinValue = 0 + TabOrder = 2 + Value = 0 + OnChange = eFreightChange + end + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServerMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServerMain.pas new file mode 100644 index 0000000..7d70ed7 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorServerMain.pas @@ -0,0 +1,96 @@ +unit BusinessProcessorServerMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uDAPoweredByDataAbstractButton, Spin; + +type + TBusinessProcessorServerMainForm = class(TForm) + Label1: TLabel; + GroupBox1: TGroupBox; + cbCheckCustomerID: TCheckBox; + cbDeclineDeleteCustomers: TCheckBox; + cbCompany: TCheckBox; + eCompany: TEdit; + GroupBox2: TGroupBox; + cbFreight: TCheckBox; + cbDeclineDeleteOrders: TCheckBox; + eFreight: TSpinEdit; + procedure cbCompanyClick(Sender: TObject); + procedure eCompanyChange(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure cbFreightClick(Sender: TObject); + procedure eFreightChange(Sender: TObject); + procedure cbDeclineDeleteCustomersClick(Sender: TObject); + procedure cbDeclineDeleteOrdersClick(Sender: TObject); + procedure cbCheckCustomerIDClick(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + BusinessProcessorServerMainForm : TBusinessProcessorServerMainForm; + +implementation +uses + ServerGlobal; +{$R *.dfm} + +procedure TBusinessProcessorServerMainForm.cbCompanyClick(Sender: TObject); +begin + eCompany.Enabled := cbCompany.Checked; + gCompanyCheck := cbCompany.Checked; + eCompanyChange(eCompany); +end; + +procedure TBusinessProcessorServerMainForm.eCompanyChange(Sender: TObject); +begin + gCompany := eCompany.Text; +end; + +procedure TBusinessProcessorServerMainForm.FormShow(Sender: TObject); +begin + eCompany.Text := gCompany; + eFreight.Value := gFreight; + cbCompany.Checked := gCompanyCheck; + cbFreight.Checked := gFreightCheck; + cbCompanyClick(cbCompany); + cbFreightClick(cbFreight); + cbDeclineDeleteCustomers.Checked := gDeclineDeleteCustomers; + cbDeclineDeleteOrders.Checked := gDeclineDeleteOrders; + cbCheckCustomerID.Checked := gCheckCustomerID; +end; + +procedure TBusinessProcessorServerMainForm.cbFreightClick(Sender: TObject); +begin + eFreight.Enabled := cbFreight.Checked; + gFreightCheck := cbFreight.Checked; + eFreightChange(eFreight); +end; + +procedure TBusinessProcessorServerMainForm.eFreightChange(Sender: TObject); +begin + gFreight := eFreight.Value; +end; + +procedure TBusinessProcessorServerMainForm.cbDeclineDeleteCustomersClick(Sender: TObject); +begin + gDeclineDeleteCustomers := cbDeclineDeleteCustomers.Checked; +end; + +procedure TBusinessProcessorServerMainForm.cbDeclineDeleteOrdersClick(Sender: TObject); +begin + gDeclineDeleteOrders := cbDeclineDeleteOrders.Checked; +end; + +procedure TBusinessProcessorServerMainForm.cbCheckCustomerIDClick(Sender: TObject); +begin + gCheckCustomerID := cbCheckCustomerID.Checked; +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorService_Impl.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorService_Impl.dfm new file mode 100644 index 0000000..227e306 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorService_Impl.dfm @@ -0,0 +1,712 @@ +object BusinessProcessorService: TBusinessProcessorService + OldCreateOrder = True + SessionManager = BusinessProcessorServerDataModule.SessionManager + ServiceSchema = Schema + ServiceDataStreamer = DataStreamer + ExportedDataTables = <> + Left = 200 + Top = 200 + Height = 300 + Width = 300 + object DataStreamer: TDABinDataStreamer + Left = 32 + Top = 8 + end + object Schema: TDASchema + ConnectionManager = BusinessProcessorServerDataModule.ConnectionManager + DataDictionary = BusinessProcessorServerDataModule.DataDictionary + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'Northwind' + TargetTable = 'Customers' + SQL = + 'SELECT '#10' CustomerID, CompanyName, ContactName, ContactTitle, ' + + #10' Address, City, Region, PostalCode, Country, Phone, '#10' Fax' + + #10' FROM'#10' Customers'#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'CompanyName' + TableField = 'CompanyName' + end + item + DatasetField = 'ContactName' + TableField = 'ContactName' + end + item + DatasetField = 'ContactTitle' + TableField = 'ContactTitle' + end + item + DatasetField = 'Address' + TableField = 'Address' + end + item + DatasetField = 'City' + TableField = 'City' + end + item + DatasetField = 'Region' + TableField = 'Region' + end + item + DatasetField = 'PostalCode' + TableField = 'PostalCode' + end + item + DatasetField = 'Country' + TableField = 'Country' + end + item + DatasetField = 'Phone' + TableField = 'Phone' + end + item + DatasetField = 'Fax' + TableField = 'Fax' + end> + end> + Name = 'Customers' + Fields = < + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CompanyName' + DataType = datWideString + Size = 40 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactName' + DataType = datWideString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactTitle' + DataType = datWideString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Address' + DataType = datWideString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Region' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PostalCode' + DataType = datWideString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Country' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Phone' + DataType = datWideString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Fax' + DataType = datWideString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end> + Statements = < + item + Connection = 'Northwind' + TargetTable = 'Orders' + SQL = + 'SELECT '#10' OrderID, CustomerID, EmployeeID, OrderDate, Required' + + 'Date, '#10' ShippedDate, ShipVia, Freight, ShipName, ShipAddress,' + + ' '#10' ShipCity, ShipRegion, ShipPostalCode, ShipCountry'#10' FROM'#10' ' + + ' Orders'#10' WHERE'#10' CustomerID = :CustomerID'#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'OrderID' + TableField = 'OrderID' + end + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'EmployeeID' + TableField = 'EmployeeID' + end + item + DatasetField = 'OrderDate' + TableField = 'OrderDate' + end + item + DatasetField = 'RequiredDate' + TableField = 'RequiredDate' + end + item + DatasetField = 'ShippedDate' + TableField = 'ShippedDate' + end + item + DatasetField = 'ShipVia' + TableField = 'ShipVia' + end + item + DatasetField = 'Freight' + TableField = 'Freight' + end + item + DatasetField = 'ShipName' + TableField = 'ShipName' + end + item + DatasetField = 'ShipAddress' + TableField = 'ShipAddress' + end + item + DatasetField = 'ShipCity' + TableField = 'ShipCity' + end + item + DatasetField = 'ShipRegion' + TableField = 'ShipRegion' + end + item + DatasetField = 'ShipPostalCode' + TableField = 'ShipPostalCode' + end + item + DatasetField = 'ShipCountry' + TableField = 'ShipCountry' + end> + end> + Name = 'Orders' + Fields = < + item + Name = 'OrderID' + DataType = datAutoInc + BlobType = dabtUnknown + LogChanges = False + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EmployeeID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OrderDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RequiredDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShippedDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipVia' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Freight' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipName' + DataType = datWideString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipAddress' + DataType = datWideString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCity' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipRegion' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipPostalCode' + DataType = datWideString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCountry' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = < + item + Params = < + item + Name = 'CustomerID' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'CompanyName' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'ContactName' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'ContactTitle' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'Address' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'City' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'Region' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'PostalCode' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'Country' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'Phone' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'Fax' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end> + Statements = < + item + Connection = 'Northwind' + TargetTable = 'Customers' + SQL = + 'INSERT'#10' INTO Customers'#10' (CustomerID, CompanyName, ContactNam' + + 'e, ContactTitle, '#10' Address, City, Region, PostalCode, Countr' + + 'y, Phone, '#10' Fax)'#10' VALUES'#10' (:CustomerID, :CompanyName, :C' + + 'ontactName, :ContactTitle, '#10' :Address, :City, :Region, :Post' + + 'alCode, :Country, :Phone, '#10' :Fax)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_Customers' + end + item + Params = < + item + Name = 'OLD_CustomerID' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end> + Statements = < + item + Connection = 'Northwind' + TargetTable = 'Customers' + SQL = + 'DELETE '#10' FROM'#10' Customers'#10' WHERE'#10' (CustomerID = :OLD_Cust' + + 'omerID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_Customers' + end + item + Params = < + item + Name = 'CustomerID' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'CompanyName' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'ContactName' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'ContactTitle' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'Address' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'City' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'Region' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'PostalCode' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'Country' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'Phone' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'Fax' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'OLD_CustomerID' + DataType = datWideString + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end> + Statements = < + item + Connection = 'Northwind' + TargetTable = 'Customers' + SQL = + 'UPDATE Customers'#10' SET '#10' CustomerID = :CustomerID, '#10' Compa' + + 'nyName = :CompanyName, '#10' ContactName = :ContactName, '#10' Con' + + 'tactTitle = :ContactTitle, '#10' Address = :Address, '#10' City = ' + + ':City, '#10' Region = :Region, '#10' PostalCode = :PostalCode, '#10' ' + + ' Country = :Country, '#10' Phone = :Phone, '#10' Fax = :Fax'#10' WHE' + + 'RE'#10' (CustomerID = :OLD_CustomerID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_Customers' + end> + RelationShips = < + item + Name = 'Relationship' + MasterDatasetName = 'Customers' + MasterFields = 'CustomerID' + DetailDatasetName = 'Orders' + DetailFields = 'CustomerID' + end> + UpdateRules = <> + Left = 32 + Top = 56 + end + object bpCustomers: TDABusinessProcessor + Schema = Schema + InsertCommandName = 'Insert_Customers' + DeleteCommandName = 'Delete_Customers' + UpdateCommandName = 'Update_Customers' + ReferencedDataset = 'Customers' + ProcessorOptions = [poAutoGenerateInsert, poAutoGenerateUpdate, poAutoGenerateDelete, poAutoGenerateRefreshDataset, poPrepareCommands] + UpdateMode = updWhereKeyOnly + BusinessRulesID = 'Customers.ServerRules' + Left = 76 + Top = 55 + end + object bpOrders: TDABusinessProcessor + Schema = Schema + ReferencedDataset = 'Orders' + ProcessorOptions = [poAutoGenerateInsert, poAutoGenerateUpdate, poAutoGenerateDelete, poAutoGenerateRefreshDataset, poPrepareCommands] + UpdateMode = updWhereKeyOnly + BusinessRulesID = 'Orders.ServerRules' + Left = 80 + Top = 98 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorService_Impl.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorService_Impl.pas new file mode 100644 index 0000000..f0baff7 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/BusinessProcessorService_Impl.pas @@ -0,0 +1,50 @@ +unit BusinessProcessorService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} BusinessProcessorLibrary_Intf, uDAScriptingProvider, + uDABusinessProcessor, uDAClasses, uDADataStreamer, uDABinAdapter; + +type + { TBusinessProcessorService } + TBusinessProcessorService = class(TDataAbstractService, IBusinessProcessorService) + DataStreamer: TDABinDataStreamer; + Schema: TDASchema; + bpCustomers: TDABusinessProcessor; + bpOrders: TDABusinessProcessor; + private + protected + { IBusinessProcessorService methods } + end; + +implementation + +{$R *.dfm} +uses + {Generated:} BusinessProcessorLibrary_Invk,BusinessProcessorServerData; + +procedure Create_BusinessProcessorService(out anInstance : IUnknown); +begin + anInstance := TBusinessProcessorService.Create(nil); +end; + +{ BusinessProcessorService } +initialization + TROClassFactory.Create('BusinessProcessorService', Create_BusinessProcessorService, TBusinessProcessorService_Invoker); + +finalization + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/RODLFILE.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/RODLFILE.res new file mode 100644 index 0000000..6919cc8 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/RODLFILE.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/SchemaClient_Intf.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/SchemaClient_Intf.pas new file mode 100644 index 0000000..e7dda72 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/SchemaClient_Intf.pas @@ -0,0 +1,981 @@ +unit SchemaClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +const + { Data table rules ids + Feel free to change them to something more human readable + but make sure they are unique in the context of your application } + RID_Customers = '{A9F7C630-77E0-44A8-B46B-E3EE67954A42}'; + RID_Orders = '{B5125DCD-A27D-488D-A1A2-4FB5D49D7079}'; + + { Data table names } + nme_Customers = 'Customers'; + nme_Orders = 'Orders'; + + { Customers fields } + fld_CustomersCustomerID = 'CustomerID'; + fld_CustomersCompanyName = 'CompanyName'; + fld_CustomersContactName = 'ContactName'; + fld_CustomersContactTitle = 'ContactTitle'; + fld_CustomersAddress = 'Address'; + fld_CustomersCity = 'City'; + fld_CustomersRegion = 'Region'; + fld_CustomersPostalCode = 'PostalCode'; + fld_CustomersCountry = 'Country'; + fld_CustomersPhone = 'Phone'; + fld_CustomersFax = 'Fax'; + + { Customers field indexes } + idx_CustomersCustomerID = 0; + idx_CustomersCompanyName = 1; + idx_CustomersContactName = 2; + idx_CustomersContactTitle = 3; + idx_CustomersAddress = 4; + idx_CustomersCity = 5; + idx_CustomersRegion = 6; + idx_CustomersPostalCode = 7; + idx_CustomersCountry = 8; + idx_CustomersPhone = 9; + idx_CustomersFax = 10; + + { Orders fields } + fld_OrdersOrderID = 'OrderID'; + fld_OrdersCustomerID = 'CustomerID'; + fld_OrdersEmployeeID = 'EmployeeID'; + fld_OrdersOrderDate = 'OrderDate'; + fld_OrdersRequiredDate = 'RequiredDate'; + fld_OrdersShippedDate = 'ShippedDate'; + fld_OrdersShipVia = 'ShipVia'; + fld_OrdersFreight = 'Freight'; + fld_OrdersShipName = 'ShipName'; + fld_OrdersShipAddress = 'ShipAddress'; + fld_OrdersShipCity = 'ShipCity'; + fld_OrdersShipRegion = 'ShipRegion'; + fld_OrdersShipPostalCode = 'ShipPostalCode'; + fld_OrdersShipCountry = 'ShipCountry'; + + { Orders field indexes } + idx_OrdersOrderID = 0; + idx_OrdersCustomerID = 1; + idx_OrdersEmployeeID = 2; + idx_OrdersOrderDate = 3; + idx_OrdersRequiredDate = 4; + idx_OrdersShippedDate = 5; + idx_OrdersShipVia = 6; + idx_OrdersFreight = 7; + idx_OrdersShipName = 8; + idx_OrdersShipAddress = 9; + idx_OrdersShipCity = 10; + idx_OrdersShipRegion = 11; + idx_OrdersShipPostalCode = 12; + idx_OrdersShipCountry = 13; + +type + { ICustomers } + ICustomers = interface(IDAStronglyTypedDataTable) + ['{AD74260F-B808-430E-85E6-FB469055C068}'] + { Property getters and setters } + function GetCustomerIDValue: WideString; + procedure SetCustomerIDValue(const aValue: WideString); + function GetCustomerIDIsNull: Boolean; + procedure SetCustomerIDIsNull(const aValue: Boolean); + function GetCompanyNameValue: WideString; + procedure SetCompanyNameValue(const aValue: WideString); + function GetCompanyNameIsNull: Boolean; + procedure SetCompanyNameIsNull(const aValue: Boolean); + function GetContactNameValue: WideString; + procedure SetContactNameValue(const aValue: WideString); + function GetContactNameIsNull: Boolean; + procedure SetContactNameIsNull(const aValue: Boolean); + function GetContactTitleValue: WideString; + procedure SetContactTitleValue(const aValue: WideString); + function GetContactTitleIsNull: Boolean; + procedure SetContactTitleIsNull(const aValue: Boolean); + function GetAddressValue: WideString; + procedure SetAddressValue(const aValue: WideString); + function GetAddressIsNull: Boolean; + procedure SetAddressIsNull(const aValue: Boolean); + function GetCityValue: WideString; + procedure SetCityValue(const aValue: WideString); + function GetCityIsNull: Boolean; + procedure SetCityIsNull(const aValue: Boolean); + function GetRegionValue: WideString; + procedure SetRegionValue(const aValue: WideString); + function GetRegionIsNull: Boolean; + procedure SetRegionIsNull(const aValue: Boolean); + function GetPostalCodeValue: WideString; + procedure SetPostalCodeValue(const aValue: WideString); + function GetPostalCodeIsNull: Boolean; + procedure SetPostalCodeIsNull(const aValue: Boolean); + function GetCountryValue: WideString; + procedure SetCountryValue(const aValue: WideString); + function GetCountryIsNull: Boolean; + procedure SetCountryIsNull(const aValue: Boolean); + function GetPhoneValue: WideString; + procedure SetPhoneValue(const aValue: WideString); + function GetPhoneIsNull: Boolean; + procedure SetPhoneIsNull(const aValue: Boolean); + function GetFaxValue: WideString; + procedure SetFaxValue(const aValue: WideString); + function GetFaxIsNull: Boolean; + procedure SetFaxIsNull(const aValue: Boolean); + + + { Properties } + property CustomerID: WideString read GetCustomerIDValue write SetCustomerIDValue; + property CustomerIDIsNull: Boolean read GetCustomerIDIsNull write SetCustomerIDIsNull; + property CompanyName: WideString read GetCompanyNameValue write SetCompanyNameValue; + property CompanyNameIsNull: Boolean read GetCompanyNameIsNull write SetCompanyNameIsNull; + property ContactName: WideString read GetContactNameValue write SetContactNameValue; + property ContactNameIsNull: Boolean read GetContactNameIsNull write SetContactNameIsNull; + property ContactTitle: WideString read GetContactTitleValue write SetContactTitleValue; + property ContactTitleIsNull: Boolean read GetContactTitleIsNull write SetContactTitleIsNull; + property Address: WideString read GetAddressValue write SetAddressValue; + property AddressIsNull: Boolean read GetAddressIsNull write SetAddressIsNull; + property City: WideString read GetCityValue write SetCityValue; + property CityIsNull: Boolean read GetCityIsNull write SetCityIsNull; + property Region: WideString read GetRegionValue write SetRegionValue; + property RegionIsNull: Boolean read GetRegionIsNull write SetRegionIsNull; + property PostalCode: WideString read GetPostalCodeValue write SetPostalCodeValue; + property PostalCodeIsNull: Boolean read GetPostalCodeIsNull write SetPostalCodeIsNull; + property Country: WideString read GetCountryValue write SetCountryValue; + property CountryIsNull: Boolean read GetCountryIsNull write SetCountryIsNull; + property Phone: WideString read GetPhoneValue write SetPhoneValue; + property PhoneIsNull: Boolean read GetPhoneIsNull write SetPhoneIsNull; + property Fax: WideString read GetFaxValue write SetFaxValue; + property FaxIsNull: Boolean read GetFaxIsNull write SetFaxIsNull; + end; + + { TCustomersDataTableRules } + TCustomersDataTableRules = class(TDADataTableRules, ICustomers) + private + protected + { Property getters and setters } + function GetCustomerIDValue: WideString; virtual; + procedure SetCustomerIDValue(const aValue: WideString); virtual; + function GetCustomerIDIsNull: Boolean; virtual; + procedure SetCustomerIDIsNull(const aValue: Boolean); virtual; + function GetCompanyNameValue: WideString; virtual; + procedure SetCompanyNameValue(const aValue: WideString); virtual; + function GetCompanyNameIsNull: Boolean; virtual; + procedure SetCompanyNameIsNull(const aValue: Boolean); virtual; + function GetContactNameValue: WideString; virtual; + procedure SetContactNameValue(const aValue: WideString); virtual; + function GetContactNameIsNull: Boolean; virtual; + procedure SetContactNameIsNull(const aValue: Boolean); virtual; + function GetContactTitleValue: WideString; virtual; + procedure SetContactTitleValue(const aValue: WideString); virtual; + function GetContactTitleIsNull: Boolean; virtual; + procedure SetContactTitleIsNull(const aValue: Boolean); virtual; + function GetAddressValue: WideString; virtual; + procedure SetAddressValue(const aValue: WideString); virtual; + function GetAddressIsNull: Boolean; virtual; + procedure SetAddressIsNull(const aValue: Boolean); virtual; + function GetCityValue: WideString; virtual; + procedure SetCityValue(const aValue: WideString); virtual; + function GetCityIsNull: Boolean; virtual; + procedure SetCityIsNull(const aValue: Boolean); virtual; + function GetRegionValue: WideString; virtual; + procedure SetRegionValue(const aValue: WideString); virtual; + function GetRegionIsNull: Boolean; virtual; + procedure SetRegionIsNull(const aValue: Boolean); virtual; + function GetPostalCodeValue: WideString; virtual; + procedure SetPostalCodeValue(const aValue: WideString); virtual; + function GetPostalCodeIsNull: Boolean; virtual; + procedure SetPostalCodeIsNull(const aValue: Boolean); virtual; + function GetCountryValue: WideString; virtual; + procedure SetCountryValue(const aValue: WideString); virtual; + function GetCountryIsNull: Boolean; virtual; + procedure SetCountryIsNull(const aValue: Boolean); virtual; + function GetPhoneValue: WideString; virtual; + procedure SetPhoneValue(const aValue: WideString); virtual; + function GetPhoneIsNull: Boolean; virtual; + procedure SetPhoneIsNull(const aValue: Boolean); virtual; + function GetFaxValue: WideString; virtual; + procedure SetFaxValue(const aValue: WideString); virtual; + function GetFaxIsNull: Boolean; virtual; + procedure SetFaxIsNull(const aValue: Boolean); virtual; + + { Properties } + property CustomerID: WideString read GetCustomerIDValue write SetCustomerIDValue; + property CustomerIDIsNull: Boolean read GetCustomerIDIsNull write SetCustomerIDIsNull; + property CompanyName: WideString read GetCompanyNameValue write SetCompanyNameValue; + property CompanyNameIsNull: Boolean read GetCompanyNameIsNull write SetCompanyNameIsNull; + property ContactName: WideString read GetContactNameValue write SetContactNameValue; + property ContactNameIsNull: Boolean read GetContactNameIsNull write SetContactNameIsNull; + property ContactTitle: WideString read GetContactTitleValue write SetContactTitleValue; + property ContactTitleIsNull: Boolean read GetContactTitleIsNull write SetContactTitleIsNull; + property Address: WideString read GetAddressValue write SetAddressValue; + property AddressIsNull: Boolean read GetAddressIsNull write SetAddressIsNull; + property City: WideString read GetCityValue write SetCityValue; + property CityIsNull: Boolean read GetCityIsNull write SetCityIsNull; + property Region: WideString read GetRegionValue write SetRegionValue; + property RegionIsNull: Boolean read GetRegionIsNull write SetRegionIsNull; + property PostalCode: WideString read GetPostalCodeValue write SetPostalCodeValue; + property PostalCodeIsNull: Boolean read GetPostalCodeIsNull write SetPostalCodeIsNull; + property Country: WideString read GetCountryValue write SetCountryValue; + property CountryIsNull: Boolean read GetCountryIsNull write SetCountryIsNull; + property Phone: WideString read GetPhoneValue write SetPhoneValue; + property PhoneIsNull: Boolean read GetPhoneIsNull write SetPhoneIsNull; + property Fax: WideString read GetFaxValue write SetFaxValue; + property FaxIsNull: Boolean read GetFaxIsNull write SetFaxIsNull; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IOrders } + IOrders = interface(IDAStronglyTypedDataTable) + ['{837F52E1-CF1E-44B5-9026-31E65685B868}'] + { Property getters and setters } + function GetOrderIDValue: Integer; + procedure SetOrderIDValue(const aValue: Integer); + function GetOrderIDIsNull: Boolean; + procedure SetOrderIDIsNull(const aValue: Boolean); + function GetCustomerIDValue: WideString; + procedure SetCustomerIDValue(const aValue: WideString); + function GetCustomerIDIsNull: Boolean; + procedure SetCustomerIDIsNull(const aValue: Boolean); + function GetEmployeeIDValue: Integer; + procedure SetEmployeeIDValue(const aValue: Integer); + function GetEmployeeIDIsNull: Boolean; + procedure SetEmployeeIDIsNull(const aValue: Boolean); + function GetOrderDateValue: DateTime; + procedure SetOrderDateValue(const aValue: DateTime); + function GetOrderDateIsNull: Boolean; + procedure SetOrderDateIsNull(const aValue: Boolean); + function GetRequiredDateValue: DateTime; + procedure SetRequiredDateValue(const aValue: DateTime); + function GetRequiredDateIsNull: Boolean; + procedure SetRequiredDateIsNull(const aValue: Boolean); + function GetShippedDateValue: DateTime; + procedure SetShippedDateValue(const aValue: DateTime); + function GetShippedDateIsNull: Boolean; + procedure SetShippedDateIsNull(const aValue: Boolean); + function GetShipViaValue: Integer; + procedure SetShipViaValue(const aValue: Integer); + function GetShipViaIsNull: Boolean; + procedure SetShipViaIsNull(const aValue: Boolean); + function GetFreightValue: Float; + procedure SetFreightValue(const aValue: Float); + function GetFreightIsNull: Boolean; + procedure SetFreightIsNull(const aValue: Boolean); + function GetShipNameValue: WideString; + procedure SetShipNameValue(const aValue: WideString); + function GetShipNameIsNull: Boolean; + procedure SetShipNameIsNull(const aValue: Boolean); + function GetShipAddressValue: WideString; + procedure SetShipAddressValue(const aValue: WideString); + function GetShipAddressIsNull: Boolean; + procedure SetShipAddressIsNull(const aValue: Boolean); + function GetShipCityValue: WideString; + procedure SetShipCityValue(const aValue: WideString); + function GetShipCityIsNull: Boolean; + procedure SetShipCityIsNull(const aValue: Boolean); + function GetShipRegionValue: WideString; + procedure SetShipRegionValue(const aValue: WideString); + function GetShipRegionIsNull: Boolean; + procedure SetShipRegionIsNull(const aValue: Boolean); + function GetShipPostalCodeValue: WideString; + procedure SetShipPostalCodeValue(const aValue: WideString); + function GetShipPostalCodeIsNull: Boolean; + procedure SetShipPostalCodeIsNull(const aValue: Boolean); + function GetShipCountryValue: WideString; + procedure SetShipCountryValue(const aValue: WideString); + function GetShipCountryIsNull: Boolean; + procedure SetShipCountryIsNull(const aValue: Boolean); + + + { Properties } + property OrderID: Integer read GetOrderIDValue write SetOrderIDValue; + property OrderIDIsNull: Boolean read GetOrderIDIsNull write SetOrderIDIsNull; + property CustomerID: WideString read GetCustomerIDValue write SetCustomerIDValue; + property CustomerIDIsNull: Boolean read GetCustomerIDIsNull write SetCustomerIDIsNull; + property EmployeeID: Integer read GetEmployeeIDValue write SetEmployeeIDValue; + property EmployeeIDIsNull: Boolean read GetEmployeeIDIsNull write SetEmployeeIDIsNull; + property OrderDate: DateTime read GetOrderDateValue write SetOrderDateValue; + property OrderDateIsNull: Boolean read GetOrderDateIsNull write SetOrderDateIsNull; + property RequiredDate: DateTime read GetRequiredDateValue write SetRequiredDateValue; + property RequiredDateIsNull: Boolean read GetRequiredDateIsNull write SetRequiredDateIsNull; + property ShippedDate: DateTime read GetShippedDateValue write SetShippedDateValue; + property ShippedDateIsNull: Boolean read GetShippedDateIsNull write SetShippedDateIsNull; + property ShipVia: Integer read GetShipViaValue write SetShipViaValue; + property ShipViaIsNull: Boolean read GetShipViaIsNull write SetShipViaIsNull; + property Freight: Float read GetFreightValue write SetFreightValue; + property FreightIsNull: Boolean read GetFreightIsNull write SetFreightIsNull; + property ShipName: WideString read GetShipNameValue write SetShipNameValue; + property ShipNameIsNull: Boolean read GetShipNameIsNull write SetShipNameIsNull; + property ShipAddress: WideString read GetShipAddressValue write SetShipAddressValue; + property ShipAddressIsNull: Boolean read GetShipAddressIsNull write SetShipAddressIsNull; + property ShipCity: WideString read GetShipCityValue write SetShipCityValue; + property ShipCityIsNull: Boolean read GetShipCityIsNull write SetShipCityIsNull; + property ShipRegion: WideString read GetShipRegionValue write SetShipRegionValue; + property ShipRegionIsNull: Boolean read GetShipRegionIsNull write SetShipRegionIsNull; + property ShipPostalCode: WideString read GetShipPostalCodeValue write SetShipPostalCodeValue; + property ShipPostalCodeIsNull: Boolean read GetShipPostalCodeIsNull write SetShipPostalCodeIsNull; + property ShipCountry: WideString read GetShipCountryValue write SetShipCountryValue; + property ShipCountryIsNull: Boolean read GetShipCountryIsNull write SetShipCountryIsNull; + end; + + { TOrdersDataTableRules } + TOrdersDataTableRules = class(TDADataTableRules, IOrders) + private + protected + { Property getters and setters } + function GetOrderIDValue: Integer; virtual; + procedure SetOrderIDValue(const aValue: Integer); virtual; + function GetOrderIDIsNull: Boolean; virtual; + procedure SetOrderIDIsNull(const aValue: Boolean); virtual; + function GetCustomerIDValue: WideString; virtual; + procedure SetCustomerIDValue(const aValue: WideString); virtual; + function GetCustomerIDIsNull: Boolean; virtual; + procedure SetCustomerIDIsNull(const aValue: Boolean); virtual; + function GetEmployeeIDValue: Integer; virtual; + procedure SetEmployeeIDValue(const aValue: Integer); virtual; + function GetEmployeeIDIsNull: Boolean; virtual; + procedure SetEmployeeIDIsNull(const aValue: Boolean); virtual; + function GetOrderDateValue: DateTime; virtual; + procedure SetOrderDateValue(const aValue: DateTime); virtual; + function GetOrderDateIsNull: Boolean; virtual; + procedure SetOrderDateIsNull(const aValue: Boolean); virtual; + function GetRequiredDateValue: DateTime; virtual; + procedure SetRequiredDateValue(const aValue: DateTime); virtual; + function GetRequiredDateIsNull: Boolean; virtual; + procedure SetRequiredDateIsNull(const aValue: Boolean); virtual; + function GetShippedDateValue: DateTime; virtual; + procedure SetShippedDateValue(const aValue: DateTime); virtual; + function GetShippedDateIsNull: Boolean; virtual; + procedure SetShippedDateIsNull(const aValue: Boolean); virtual; + function GetShipViaValue: Integer; virtual; + procedure SetShipViaValue(const aValue: Integer); virtual; + function GetShipViaIsNull: Boolean; virtual; + procedure SetShipViaIsNull(const aValue: Boolean); virtual; + function GetFreightValue: Float; virtual; + procedure SetFreightValue(const aValue: Float); virtual; + function GetFreightIsNull: Boolean; virtual; + procedure SetFreightIsNull(const aValue: Boolean); virtual; + function GetShipNameValue: WideString; virtual; + procedure SetShipNameValue(const aValue: WideString); virtual; + function GetShipNameIsNull: Boolean; virtual; + procedure SetShipNameIsNull(const aValue: Boolean); virtual; + function GetShipAddressValue: WideString; virtual; + procedure SetShipAddressValue(const aValue: WideString); virtual; + function GetShipAddressIsNull: Boolean; virtual; + procedure SetShipAddressIsNull(const aValue: Boolean); virtual; + function GetShipCityValue: WideString; virtual; + procedure SetShipCityValue(const aValue: WideString); virtual; + function GetShipCityIsNull: Boolean; virtual; + procedure SetShipCityIsNull(const aValue: Boolean); virtual; + function GetShipRegionValue: WideString; virtual; + procedure SetShipRegionValue(const aValue: WideString); virtual; + function GetShipRegionIsNull: Boolean; virtual; + procedure SetShipRegionIsNull(const aValue: Boolean); virtual; + function GetShipPostalCodeValue: WideString; virtual; + procedure SetShipPostalCodeValue(const aValue: WideString); virtual; + function GetShipPostalCodeIsNull: Boolean; virtual; + procedure SetShipPostalCodeIsNull(const aValue: Boolean); virtual; + function GetShipCountryValue: WideString; virtual; + procedure SetShipCountryValue(const aValue: WideString); virtual; + function GetShipCountryIsNull: Boolean; virtual; + procedure SetShipCountryIsNull(const aValue: Boolean); virtual; + + { Properties } + property OrderID: Integer read GetOrderIDValue write SetOrderIDValue; + property OrderIDIsNull: Boolean read GetOrderIDIsNull write SetOrderIDIsNull; + property CustomerID: WideString read GetCustomerIDValue write SetCustomerIDValue; + property CustomerIDIsNull: Boolean read GetCustomerIDIsNull write SetCustomerIDIsNull; + property EmployeeID: Integer read GetEmployeeIDValue write SetEmployeeIDValue; + property EmployeeIDIsNull: Boolean read GetEmployeeIDIsNull write SetEmployeeIDIsNull; + property OrderDate: DateTime read GetOrderDateValue write SetOrderDateValue; + property OrderDateIsNull: Boolean read GetOrderDateIsNull write SetOrderDateIsNull; + property RequiredDate: DateTime read GetRequiredDateValue write SetRequiredDateValue; + property RequiredDateIsNull: Boolean read GetRequiredDateIsNull write SetRequiredDateIsNull; + property ShippedDate: DateTime read GetShippedDateValue write SetShippedDateValue; + property ShippedDateIsNull: Boolean read GetShippedDateIsNull write SetShippedDateIsNull; + property ShipVia: Integer read GetShipViaValue write SetShipViaValue; + property ShipViaIsNull: Boolean read GetShipViaIsNull write SetShipViaIsNull; + property Freight: Float read GetFreightValue write SetFreightValue; + property FreightIsNull: Boolean read GetFreightIsNull write SetFreightIsNull; + property ShipName: WideString read GetShipNameValue write SetShipNameValue; + property ShipNameIsNull: Boolean read GetShipNameIsNull write SetShipNameIsNull; + property ShipAddress: WideString read GetShipAddressValue write SetShipAddressValue; + property ShipAddressIsNull: Boolean read GetShipAddressIsNull write SetShipAddressIsNull; + property ShipCity: WideString read GetShipCityValue write SetShipCityValue; + property ShipCityIsNull: Boolean read GetShipCityIsNull write SetShipCityIsNull; + property ShipRegion: WideString read GetShipRegionValue write SetShipRegionValue; + property ShipRegionIsNull: Boolean read GetShipRegionIsNull write SetShipRegionIsNull; + property ShipPostalCode: WideString read GetShipPostalCodeValue write SetShipPostalCodeValue; + property ShipPostalCodeIsNull: Boolean read GetShipPostalCodeIsNull write SetShipPostalCodeIsNull; + property ShipCountry: WideString read GetShipCountryValue write SetShipCountryValue; + property ShipCountryIsNull: Boolean read GetShipCountryIsNull write SetShipCountryIsNull; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TCustomersDataTableRules } +constructor TCustomersDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TCustomersDataTableRules.Destroy; +begin + inherited; +end; + +function TCustomersDataTableRules.GetCustomerIDValue: WideString; +begin + result := DataTable.Fields[idx_CustomersCustomerID].AsWideString; +end; + +procedure TCustomersDataTableRules.SetCustomerIDValue(const aValue: WideString); +begin + DataTable.Fields[idx_CustomersCustomerID].AsWideString := aValue; +end; + +function TCustomersDataTableRules.GetCustomerIDIsNull: boolean; +begin + result := DataTable.Fields[idx_CustomersCustomerID].IsNull; +end; + +procedure TCustomersDataTableRules.SetCustomerIDIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CustomersCustomerID].AsVariant := Null; +end; + +function TCustomersDataTableRules.GetCompanyNameValue: WideString; +begin + result := DataTable.Fields[idx_CustomersCompanyName].AsWideString; +end; + +procedure TCustomersDataTableRules.SetCompanyNameValue(const aValue: WideString); +begin + DataTable.Fields[idx_CustomersCompanyName].AsWideString := aValue; +end; + +function TCustomersDataTableRules.GetCompanyNameIsNull: boolean; +begin + result := DataTable.Fields[idx_CustomersCompanyName].IsNull; +end; + +procedure TCustomersDataTableRules.SetCompanyNameIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CustomersCompanyName].AsVariant := Null; +end; + +function TCustomersDataTableRules.GetContactNameValue: WideString; +begin + result := DataTable.Fields[idx_CustomersContactName].AsWideString; +end; + +procedure TCustomersDataTableRules.SetContactNameValue(const aValue: WideString); +begin + DataTable.Fields[idx_CustomersContactName].AsWideString := aValue; +end; + +function TCustomersDataTableRules.GetContactNameIsNull: boolean; +begin + result := DataTable.Fields[idx_CustomersContactName].IsNull; +end; + +procedure TCustomersDataTableRules.SetContactNameIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CustomersContactName].AsVariant := Null; +end; + +function TCustomersDataTableRules.GetContactTitleValue: WideString; +begin + result := DataTable.Fields[idx_CustomersContactTitle].AsWideString; +end; + +procedure TCustomersDataTableRules.SetContactTitleValue(const aValue: WideString); +begin + DataTable.Fields[idx_CustomersContactTitle].AsWideString := aValue; +end; + +function TCustomersDataTableRules.GetContactTitleIsNull: boolean; +begin + result := DataTable.Fields[idx_CustomersContactTitle].IsNull; +end; + +procedure TCustomersDataTableRules.SetContactTitleIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CustomersContactTitle].AsVariant := Null; +end; + +function TCustomersDataTableRules.GetAddressValue: WideString; +begin + result := DataTable.Fields[idx_CustomersAddress].AsWideString; +end; + +procedure TCustomersDataTableRules.SetAddressValue(const aValue: WideString); +begin + DataTable.Fields[idx_CustomersAddress].AsWideString := aValue; +end; + +function TCustomersDataTableRules.GetAddressIsNull: boolean; +begin + result := DataTable.Fields[idx_CustomersAddress].IsNull; +end; + +procedure TCustomersDataTableRules.SetAddressIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CustomersAddress].AsVariant := Null; +end; + +function TCustomersDataTableRules.GetCityValue: WideString; +begin + result := DataTable.Fields[idx_CustomersCity].AsWideString; +end; + +procedure TCustomersDataTableRules.SetCityValue(const aValue: WideString); +begin + DataTable.Fields[idx_CustomersCity].AsWideString := aValue; +end; + +function TCustomersDataTableRules.GetCityIsNull: boolean; +begin + result := DataTable.Fields[idx_CustomersCity].IsNull; +end; + +procedure TCustomersDataTableRules.SetCityIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CustomersCity].AsVariant := Null; +end; + +function TCustomersDataTableRules.GetRegionValue: WideString; +begin + result := DataTable.Fields[idx_CustomersRegion].AsWideString; +end; + +procedure TCustomersDataTableRules.SetRegionValue(const aValue: WideString); +begin + DataTable.Fields[idx_CustomersRegion].AsWideString := aValue; +end; + +function TCustomersDataTableRules.GetRegionIsNull: boolean; +begin + result := DataTable.Fields[idx_CustomersRegion].IsNull; +end; + +procedure TCustomersDataTableRules.SetRegionIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CustomersRegion].AsVariant := Null; +end; + +function TCustomersDataTableRules.GetPostalCodeValue: WideString; +begin + result := DataTable.Fields[idx_CustomersPostalCode].AsWideString; +end; + +procedure TCustomersDataTableRules.SetPostalCodeValue(const aValue: WideString); +begin + DataTable.Fields[idx_CustomersPostalCode].AsWideString := aValue; +end; + +function TCustomersDataTableRules.GetPostalCodeIsNull: boolean; +begin + result := DataTable.Fields[idx_CustomersPostalCode].IsNull; +end; + +procedure TCustomersDataTableRules.SetPostalCodeIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CustomersPostalCode].AsVariant := Null; +end; + +function TCustomersDataTableRules.GetCountryValue: WideString; +begin + result := DataTable.Fields[idx_CustomersCountry].AsWideString; +end; + +procedure TCustomersDataTableRules.SetCountryValue(const aValue: WideString); +begin + DataTable.Fields[idx_CustomersCountry].AsWideString := aValue; +end; + +function TCustomersDataTableRules.GetCountryIsNull: boolean; +begin + result := DataTable.Fields[idx_CustomersCountry].IsNull; +end; + +procedure TCustomersDataTableRules.SetCountryIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CustomersCountry].AsVariant := Null; +end; + +function TCustomersDataTableRules.GetPhoneValue: WideString; +begin + result := DataTable.Fields[idx_CustomersPhone].AsWideString; +end; + +procedure TCustomersDataTableRules.SetPhoneValue(const aValue: WideString); +begin + DataTable.Fields[idx_CustomersPhone].AsWideString := aValue; +end; + +function TCustomersDataTableRules.GetPhoneIsNull: boolean; +begin + result := DataTable.Fields[idx_CustomersPhone].IsNull; +end; + +procedure TCustomersDataTableRules.SetPhoneIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CustomersPhone].AsVariant := Null; +end; + +function TCustomersDataTableRules.GetFaxValue: WideString; +begin + result := DataTable.Fields[idx_CustomersFax].AsWideString; +end; + +procedure TCustomersDataTableRules.SetFaxValue(const aValue: WideString); +begin + DataTable.Fields[idx_CustomersFax].AsWideString := aValue; +end; + +function TCustomersDataTableRules.GetFaxIsNull: boolean; +begin + result := DataTable.Fields[idx_CustomersFax].IsNull; +end; + +procedure TCustomersDataTableRules.SetFaxIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CustomersFax].AsVariant := Null; +end; + + +{ TOrdersDataTableRules } +constructor TOrdersDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TOrdersDataTableRules.Destroy; +begin + inherited; +end; + +function TOrdersDataTableRules.GetOrderIDValue: Integer; +begin + result := DataTable.Fields[idx_OrdersOrderID].AsInteger; +end; + +procedure TOrdersDataTableRules.SetOrderIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_OrdersOrderID].AsInteger := aValue; +end; + +function TOrdersDataTableRules.GetOrderIDIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersOrderID].IsNull; +end; + +procedure TOrdersDataTableRules.SetOrderIDIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersOrderID].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetCustomerIDValue: WideString; +begin + result := DataTable.Fields[idx_OrdersCustomerID].AsWideString; +end; + +procedure TOrdersDataTableRules.SetCustomerIDValue(const aValue: WideString); +begin + DataTable.Fields[idx_OrdersCustomerID].AsWideString := aValue; +end; + +function TOrdersDataTableRules.GetCustomerIDIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersCustomerID].IsNull; +end; + +procedure TOrdersDataTableRules.SetCustomerIDIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersCustomerID].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetEmployeeIDValue: Integer; +begin + result := DataTable.Fields[idx_OrdersEmployeeID].AsInteger; +end; + +procedure TOrdersDataTableRules.SetEmployeeIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_OrdersEmployeeID].AsInteger := aValue; +end; + +function TOrdersDataTableRules.GetEmployeeIDIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersEmployeeID].IsNull; +end; + +procedure TOrdersDataTableRules.SetEmployeeIDIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersEmployeeID].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetOrderDateValue: DateTime; +begin + result := DataTable.Fields[idx_OrdersOrderDate].AsDateTime; +end; + +procedure TOrdersDataTableRules.SetOrderDateValue(const aValue: DateTime); +begin + DataTable.Fields[idx_OrdersOrderDate].AsDateTime := aValue; +end; + +function TOrdersDataTableRules.GetOrderDateIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersOrderDate].IsNull; +end; + +procedure TOrdersDataTableRules.SetOrderDateIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersOrderDate].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetRequiredDateValue: DateTime; +begin + result := DataTable.Fields[idx_OrdersRequiredDate].AsDateTime; +end; + +procedure TOrdersDataTableRules.SetRequiredDateValue(const aValue: DateTime); +begin + DataTable.Fields[idx_OrdersRequiredDate].AsDateTime := aValue; +end; + +function TOrdersDataTableRules.GetRequiredDateIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersRequiredDate].IsNull; +end; + +procedure TOrdersDataTableRules.SetRequiredDateIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersRequiredDate].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetShippedDateValue: DateTime; +begin + result := DataTable.Fields[idx_OrdersShippedDate].AsDateTime; +end; + +procedure TOrdersDataTableRules.SetShippedDateValue(const aValue: DateTime); +begin + DataTable.Fields[idx_OrdersShippedDate].AsDateTime := aValue; +end; + +function TOrdersDataTableRules.GetShippedDateIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersShippedDate].IsNull; +end; + +procedure TOrdersDataTableRules.SetShippedDateIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersShippedDate].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetShipViaValue: Integer; +begin + result := DataTable.Fields[idx_OrdersShipVia].AsInteger; +end; + +procedure TOrdersDataTableRules.SetShipViaValue(const aValue: Integer); +begin + DataTable.Fields[idx_OrdersShipVia].AsInteger := aValue; +end; + +function TOrdersDataTableRules.GetShipViaIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersShipVia].IsNull; +end; + +procedure TOrdersDataTableRules.SetShipViaIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersShipVia].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetFreightValue: Float; +begin + result := DataTable.Fields[idx_OrdersFreight].AsFloat; +end; + +procedure TOrdersDataTableRules.SetFreightValue(const aValue: Float); +begin + DataTable.Fields[idx_OrdersFreight].AsFloat := aValue; +end; + +function TOrdersDataTableRules.GetFreightIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersFreight].IsNull; +end; + +procedure TOrdersDataTableRules.SetFreightIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersFreight].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetShipNameValue: WideString; +begin + result := DataTable.Fields[idx_OrdersShipName].AsWideString; +end; + +procedure TOrdersDataTableRules.SetShipNameValue(const aValue: WideString); +begin + DataTable.Fields[idx_OrdersShipName].AsWideString := aValue; +end; + +function TOrdersDataTableRules.GetShipNameIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersShipName].IsNull; +end; + +procedure TOrdersDataTableRules.SetShipNameIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersShipName].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetShipAddressValue: WideString; +begin + result := DataTable.Fields[idx_OrdersShipAddress].AsWideString; +end; + +procedure TOrdersDataTableRules.SetShipAddressValue(const aValue: WideString); +begin + DataTable.Fields[idx_OrdersShipAddress].AsWideString := aValue; +end; + +function TOrdersDataTableRules.GetShipAddressIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersShipAddress].IsNull; +end; + +procedure TOrdersDataTableRules.SetShipAddressIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersShipAddress].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetShipCityValue: WideString; +begin + result := DataTable.Fields[idx_OrdersShipCity].AsWideString; +end; + +procedure TOrdersDataTableRules.SetShipCityValue(const aValue: WideString); +begin + DataTable.Fields[idx_OrdersShipCity].AsWideString := aValue; +end; + +function TOrdersDataTableRules.GetShipCityIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersShipCity].IsNull; +end; + +procedure TOrdersDataTableRules.SetShipCityIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersShipCity].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetShipRegionValue: WideString; +begin + result := DataTable.Fields[idx_OrdersShipRegion].AsWideString; +end; + +procedure TOrdersDataTableRules.SetShipRegionValue(const aValue: WideString); +begin + DataTable.Fields[idx_OrdersShipRegion].AsWideString := aValue; +end; + +function TOrdersDataTableRules.GetShipRegionIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersShipRegion].IsNull; +end; + +procedure TOrdersDataTableRules.SetShipRegionIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersShipRegion].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetShipPostalCodeValue: WideString; +begin + result := DataTable.Fields[idx_OrdersShipPostalCode].AsWideString; +end; + +procedure TOrdersDataTableRules.SetShipPostalCodeValue(const aValue: WideString); +begin + DataTable.Fields[idx_OrdersShipPostalCode].AsWideString := aValue; +end; + +function TOrdersDataTableRules.GetShipPostalCodeIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersShipPostalCode].IsNull; +end; + +procedure TOrdersDataTableRules.SetShipPostalCodeIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersShipPostalCode].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetShipCountryValue: WideString; +begin + result := DataTable.Fields[idx_OrdersShipCountry].AsWideString; +end; + +procedure TOrdersDataTableRules.SetShipCountryValue(const aValue: WideString); +begin + DataTable.Fields[idx_OrdersShipCountry].AsWideString := aValue; +end; + +function TOrdersDataTableRules.GetShipCountryIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersShipCountry].IsNull; +end; + +procedure TOrdersDataTableRules.SetShipCountryIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersShipCountry].AsVariant := Null; +end; + + +initialization + RegisterDataTableRules(RID_Customers, TCustomersDataTableRules); + RegisterDataTableRules(RID_Orders, TOrdersDataTableRules); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/SchemaServer_Intf.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/SchemaServer_Intf.pas new file mode 100644 index 0000000..8ca7acc --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/SchemaServer_Intf.pas @@ -0,0 +1,1168 @@ +unit SchemaServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, SchemaClient_Intf; + +const + { Delta rules ids + Feel free to change them to something more human readable + but make sure they are unique in the context of your application } + RID_CustomersDelta = '{484D754F-68A9-4DC0-AADF-EBDB00C9E40F}'; + RID_OrdersDelta = '{6D8F66A7-58AC-4768-AC95-3437EABB042A}'; + +type + { ICustomersDelta } + ICustomersDelta = interface(ICustomers) + ['{484D754F-68A9-4DC0-AADF-EBDB00C9E40F}'] + { Property getters and setters } + function GetOldCustomerIDValue : WideString; + function GetOldCompanyNameValue : WideString; + function GetOldContactNameValue : WideString; + function GetOldContactTitleValue : WideString; + function GetOldAddressValue : WideString; + function GetOldCityValue : WideString; + function GetOldRegionValue : WideString; + function GetOldPostalCodeValue : WideString; + function GetOldCountryValue : WideString; + function GetOldPhoneValue : WideString; + function GetOldFaxValue : WideString; + + { Properties } + property OldCustomerID : WideString read GetOldCustomerIDValue; + property OldCompanyName : WideString read GetOldCompanyNameValue; + property OldContactName : WideString read GetOldContactNameValue; + property OldContactTitle : WideString read GetOldContactTitleValue; + property OldAddress : WideString read GetOldAddressValue; + property OldCity : WideString read GetOldCityValue; + property OldRegion : WideString read GetOldRegionValue; + property OldPostalCode : WideString read GetOldPostalCodeValue; + property OldCountry : WideString read GetOldCountryValue; + property OldPhone : WideString read GetOldPhoneValue; + property OldFax : WideString read GetOldFaxValue; + end; + + { TCustomersBusinessProcessorRules } + TCustomersBusinessProcessorRules = class(TDABusinessProcessorRules, ICustomers, ICustomersDelta) + private + protected + { Property getters and setters } + function GetCustomerIDValue: WideString; virtual; + function GetCustomerIDIsNull: Boolean; virtual; + function GetOldCustomerIDValue: WideString; virtual; + function GetOldCustomerIDIsNull: Boolean; virtual; + procedure SetCustomerIDValue(const aValue: WideString); virtual; + procedure SetCustomerIDIsNull(const aValue: Boolean); virtual; + function GetCompanyNameValue: WideString; virtual; + function GetCompanyNameIsNull: Boolean; virtual; + function GetOldCompanyNameValue: WideString; virtual; + function GetOldCompanyNameIsNull: Boolean; virtual; + procedure SetCompanyNameValue(const aValue: WideString); virtual; + procedure SetCompanyNameIsNull(const aValue: Boolean); virtual; + function GetContactNameValue: WideString; virtual; + function GetContactNameIsNull: Boolean; virtual; + function GetOldContactNameValue: WideString; virtual; + function GetOldContactNameIsNull: Boolean; virtual; + procedure SetContactNameValue(const aValue: WideString); virtual; + procedure SetContactNameIsNull(const aValue: Boolean); virtual; + function GetContactTitleValue: WideString; virtual; + function GetContactTitleIsNull: Boolean; virtual; + function GetOldContactTitleValue: WideString; virtual; + function GetOldContactTitleIsNull: Boolean; virtual; + procedure SetContactTitleValue(const aValue: WideString); virtual; + procedure SetContactTitleIsNull(const aValue: Boolean); virtual; + function GetAddressValue: WideString; virtual; + function GetAddressIsNull: Boolean; virtual; + function GetOldAddressValue: WideString; virtual; + function GetOldAddressIsNull: Boolean; virtual; + procedure SetAddressValue(const aValue: WideString); virtual; + procedure SetAddressIsNull(const aValue: Boolean); virtual; + function GetCityValue: WideString; virtual; + function GetCityIsNull: Boolean; virtual; + function GetOldCityValue: WideString; virtual; + function GetOldCityIsNull: Boolean; virtual; + procedure SetCityValue(const aValue: WideString); virtual; + procedure SetCityIsNull(const aValue: Boolean); virtual; + function GetRegionValue: WideString; virtual; + function GetRegionIsNull: Boolean; virtual; + function GetOldRegionValue: WideString; virtual; + function GetOldRegionIsNull: Boolean; virtual; + procedure SetRegionValue(const aValue: WideString); virtual; + procedure SetRegionIsNull(const aValue: Boolean); virtual; + function GetPostalCodeValue: WideString; virtual; + function GetPostalCodeIsNull: Boolean; virtual; + function GetOldPostalCodeValue: WideString; virtual; + function GetOldPostalCodeIsNull: Boolean; virtual; + procedure SetPostalCodeValue(const aValue: WideString); virtual; + procedure SetPostalCodeIsNull(const aValue: Boolean); virtual; + function GetCountryValue: WideString; virtual; + function GetCountryIsNull: Boolean; virtual; + function GetOldCountryValue: WideString; virtual; + function GetOldCountryIsNull: Boolean; virtual; + procedure SetCountryValue(const aValue: WideString); virtual; + procedure SetCountryIsNull(const aValue: Boolean); virtual; + function GetPhoneValue: WideString; virtual; + function GetPhoneIsNull: Boolean; virtual; + function GetOldPhoneValue: WideString; virtual; + function GetOldPhoneIsNull: Boolean; virtual; + procedure SetPhoneValue(const aValue: WideString); virtual; + procedure SetPhoneIsNull(const aValue: Boolean); virtual; + function GetFaxValue: WideString; virtual; + function GetFaxIsNull: Boolean; virtual; + function GetOldFaxValue: WideString; virtual; + function GetOldFaxIsNull: Boolean; virtual; + procedure SetFaxValue(const aValue: WideString); virtual; + procedure SetFaxIsNull(const aValue: Boolean); virtual; + + { Properties } + property CustomerID : WideString read GetCustomerIDValue write SetCustomerIDValue; + property CustomerIDIsNull : Boolean read GetCustomerIDIsNull write SetCustomerIDIsNull; + property OldCustomerID : WideString read GetOldCustomerIDValue; + property OldCustomerIDIsNull : Boolean read GetOldCustomerIDIsNull; + property CompanyName : WideString read GetCompanyNameValue write SetCompanyNameValue; + property CompanyNameIsNull : Boolean read GetCompanyNameIsNull write SetCompanyNameIsNull; + property OldCompanyName : WideString read GetOldCompanyNameValue; + property OldCompanyNameIsNull : Boolean read GetOldCompanyNameIsNull; + property ContactName : WideString read GetContactNameValue write SetContactNameValue; + property ContactNameIsNull : Boolean read GetContactNameIsNull write SetContactNameIsNull; + property OldContactName : WideString read GetOldContactNameValue; + property OldContactNameIsNull : Boolean read GetOldContactNameIsNull; + property ContactTitle : WideString read GetContactTitleValue write SetContactTitleValue; + property ContactTitleIsNull : Boolean read GetContactTitleIsNull write SetContactTitleIsNull; + property OldContactTitle : WideString read GetOldContactTitleValue; + property OldContactTitleIsNull : Boolean read GetOldContactTitleIsNull; + property Address : WideString read GetAddressValue write SetAddressValue; + property AddressIsNull : Boolean read GetAddressIsNull write SetAddressIsNull; + property OldAddress : WideString read GetOldAddressValue; + property OldAddressIsNull : Boolean read GetOldAddressIsNull; + property City : WideString read GetCityValue write SetCityValue; + property CityIsNull : Boolean read GetCityIsNull write SetCityIsNull; + property OldCity : WideString read GetOldCityValue; + property OldCityIsNull : Boolean read GetOldCityIsNull; + property Region : WideString read GetRegionValue write SetRegionValue; + property RegionIsNull : Boolean read GetRegionIsNull write SetRegionIsNull; + property OldRegion : WideString read GetOldRegionValue; + property OldRegionIsNull : Boolean read GetOldRegionIsNull; + property PostalCode : WideString read GetPostalCodeValue write SetPostalCodeValue; + property PostalCodeIsNull : Boolean read GetPostalCodeIsNull write SetPostalCodeIsNull; + property OldPostalCode : WideString read GetOldPostalCodeValue; + property OldPostalCodeIsNull : Boolean read GetOldPostalCodeIsNull; + property Country : WideString read GetCountryValue write SetCountryValue; + property CountryIsNull : Boolean read GetCountryIsNull write SetCountryIsNull; + property OldCountry : WideString read GetOldCountryValue; + property OldCountryIsNull : Boolean read GetOldCountryIsNull; + property Phone : WideString read GetPhoneValue write SetPhoneValue; + property PhoneIsNull : Boolean read GetPhoneIsNull write SetPhoneIsNull; + property OldPhone : WideString read GetOldPhoneValue; + property OldPhoneIsNull : Boolean read GetOldPhoneIsNull; + property Fax : WideString read GetFaxValue write SetFaxValue; + property FaxIsNull : Boolean read GetFaxIsNull write SetFaxIsNull; + property OldFax : WideString read GetOldFaxValue; + property OldFaxIsNull : Boolean read GetOldFaxIsNull; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IOrdersDelta } + IOrdersDelta = interface(IOrders) + ['{6D8F66A7-58AC-4768-AC95-3437EABB042A}'] + { Property getters and setters } + function GetOldOrderIDValue : Integer; + function GetOldCustomerIDValue : WideString; + function GetOldEmployeeIDValue : Integer; + function GetOldOrderDateValue : DateTime; + function GetOldRequiredDateValue : DateTime; + function GetOldShippedDateValue : DateTime; + function GetOldShipViaValue : Integer; + function GetOldFreightValue : Float; + function GetOldShipNameValue : WideString; + function GetOldShipAddressValue : WideString; + function GetOldShipCityValue : WideString; + function GetOldShipRegionValue : WideString; + function GetOldShipPostalCodeValue : WideString; + function GetOldShipCountryValue : WideString; + + { Properties } + property OldOrderID : Integer read GetOldOrderIDValue; + property OldCustomerID : WideString read GetOldCustomerIDValue; + property OldEmployeeID : Integer read GetOldEmployeeIDValue; + property OldOrderDate : DateTime read GetOldOrderDateValue; + property OldRequiredDate : DateTime read GetOldRequiredDateValue; + property OldShippedDate : DateTime read GetOldShippedDateValue; + property OldShipVia : Integer read GetOldShipViaValue; + property OldFreight : Float read GetOldFreightValue; + property OldShipName : WideString read GetOldShipNameValue; + property OldShipAddress : WideString read GetOldShipAddressValue; + property OldShipCity : WideString read GetOldShipCityValue; + property OldShipRegion : WideString read GetOldShipRegionValue; + property OldShipPostalCode : WideString read GetOldShipPostalCodeValue; + property OldShipCountry : WideString read GetOldShipCountryValue; + end; + + { TOrdersBusinessProcessorRules } + TOrdersBusinessProcessorRules = class(TDABusinessProcessorRules, IOrders, IOrdersDelta) + private + protected + { Property getters and setters } + function GetOrderIDValue: Integer; virtual; + function GetOrderIDIsNull: Boolean; virtual; + function GetOldOrderIDValue: Integer; virtual; + function GetOldOrderIDIsNull: Boolean; virtual; + procedure SetOrderIDValue(const aValue: Integer); virtual; + procedure SetOrderIDIsNull(const aValue: Boolean); virtual; + function GetCustomerIDValue: WideString; virtual; + function GetCustomerIDIsNull: Boolean; virtual; + function GetOldCustomerIDValue: WideString; virtual; + function GetOldCustomerIDIsNull: Boolean; virtual; + procedure SetCustomerIDValue(const aValue: WideString); virtual; + procedure SetCustomerIDIsNull(const aValue: Boolean); virtual; + function GetEmployeeIDValue: Integer; virtual; + function GetEmployeeIDIsNull: Boolean; virtual; + function GetOldEmployeeIDValue: Integer; virtual; + function GetOldEmployeeIDIsNull: Boolean; virtual; + procedure SetEmployeeIDValue(const aValue: Integer); virtual; + procedure SetEmployeeIDIsNull(const aValue: Boolean); virtual; + function GetOrderDateValue: DateTime; virtual; + function GetOrderDateIsNull: Boolean; virtual; + function GetOldOrderDateValue: DateTime; virtual; + function GetOldOrderDateIsNull: Boolean; virtual; + procedure SetOrderDateValue(const aValue: DateTime); virtual; + procedure SetOrderDateIsNull(const aValue: Boolean); virtual; + function GetRequiredDateValue: DateTime; virtual; + function GetRequiredDateIsNull: Boolean; virtual; + function GetOldRequiredDateValue: DateTime; virtual; + function GetOldRequiredDateIsNull: Boolean; virtual; + procedure SetRequiredDateValue(const aValue: DateTime); virtual; + procedure SetRequiredDateIsNull(const aValue: Boolean); virtual; + function GetShippedDateValue: DateTime; virtual; + function GetShippedDateIsNull: Boolean; virtual; + function GetOldShippedDateValue: DateTime; virtual; + function GetOldShippedDateIsNull: Boolean; virtual; + procedure SetShippedDateValue(const aValue: DateTime); virtual; + procedure SetShippedDateIsNull(const aValue: Boolean); virtual; + function GetShipViaValue: Integer; virtual; + function GetShipViaIsNull: Boolean; virtual; + function GetOldShipViaValue: Integer; virtual; + function GetOldShipViaIsNull: Boolean; virtual; + procedure SetShipViaValue(const aValue: Integer); virtual; + procedure SetShipViaIsNull(const aValue: Boolean); virtual; + function GetFreightValue: Float; virtual; + function GetFreightIsNull: Boolean; virtual; + function GetOldFreightValue: Float; virtual; + function GetOldFreightIsNull: Boolean; virtual; + procedure SetFreightValue(const aValue: Float); virtual; + procedure SetFreightIsNull(const aValue: Boolean); virtual; + function GetShipNameValue: WideString; virtual; + function GetShipNameIsNull: Boolean; virtual; + function GetOldShipNameValue: WideString; virtual; + function GetOldShipNameIsNull: Boolean; virtual; + procedure SetShipNameValue(const aValue: WideString); virtual; + procedure SetShipNameIsNull(const aValue: Boolean); virtual; + function GetShipAddressValue: WideString; virtual; + function GetShipAddressIsNull: Boolean; virtual; + function GetOldShipAddressValue: WideString; virtual; + function GetOldShipAddressIsNull: Boolean; virtual; + procedure SetShipAddressValue(const aValue: WideString); virtual; + procedure SetShipAddressIsNull(const aValue: Boolean); virtual; + function GetShipCityValue: WideString; virtual; + function GetShipCityIsNull: Boolean; virtual; + function GetOldShipCityValue: WideString; virtual; + function GetOldShipCityIsNull: Boolean; virtual; + procedure SetShipCityValue(const aValue: WideString); virtual; + procedure SetShipCityIsNull(const aValue: Boolean); virtual; + function GetShipRegionValue: WideString; virtual; + function GetShipRegionIsNull: Boolean; virtual; + function GetOldShipRegionValue: WideString; virtual; + function GetOldShipRegionIsNull: Boolean; virtual; + procedure SetShipRegionValue(const aValue: WideString); virtual; + procedure SetShipRegionIsNull(const aValue: Boolean); virtual; + function GetShipPostalCodeValue: WideString; virtual; + function GetShipPostalCodeIsNull: Boolean; virtual; + function GetOldShipPostalCodeValue: WideString; virtual; + function GetOldShipPostalCodeIsNull: Boolean; virtual; + procedure SetShipPostalCodeValue(const aValue: WideString); virtual; + procedure SetShipPostalCodeIsNull(const aValue: Boolean); virtual; + function GetShipCountryValue: WideString; virtual; + function GetShipCountryIsNull: Boolean; virtual; + function GetOldShipCountryValue: WideString; virtual; + function GetOldShipCountryIsNull: Boolean; virtual; + procedure SetShipCountryValue(const aValue: WideString); virtual; + procedure SetShipCountryIsNull(const aValue: Boolean); virtual; + + { Properties } + property OrderID : Integer read GetOrderIDValue write SetOrderIDValue; + property OrderIDIsNull : Boolean read GetOrderIDIsNull write SetOrderIDIsNull; + property OldOrderID : Integer read GetOldOrderIDValue; + property OldOrderIDIsNull : Boolean read GetOldOrderIDIsNull; + property CustomerID : WideString read GetCustomerIDValue write SetCustomerIDValue; + property CustomerIDIsNull : Boolean read GetCustomerIDIsNull write SetCustomerIDIsNull; + property OldCustomerID : WideString read GetOldCustomerIDValue; + property OldCustomerIDIsNull : Boolean read GetOldCustomerIDIsNull; + property EmployeeID : Integer read GetEmployeeIDValue write SetEmployeeIDValue; + property EmployeeIDIsNull : Boolean read GetEmployeeIDIsNull write SetEmployeeIDIsNull; + property OldEmployeeID : Integer read GetOldEmployeeIDValue; + property OldEmployeeIDIsNull : Boolean read GetOldEmployeeIDIsNull; + property OrderDate : DateTime read GetOrderDateValue write SetOrderDateValue; + property OrderDateIsNull : Boolean read GetOrderDateIsNull write SetOrderDateIsNull; + property OldOrderDate : DateTime read GetOldOrderDateValue; + property OldOrderDateIsNull : Boolean read GetOldOrderDateIsNull; + property RequiredDate : DateTime read GetRequiredDateValue write SetRequiredDateValue; + property RequiredDateIsNull : Boolean read GetRequiredDateIsNull write SetRequiredDateIsNull; + property OldRequiredDate : DateTime read GetOldRequiredDateValue; + property OldRequiredDateIsNull : Boolean read GetOldRequiredDateIsNull; + property ShippedDate : DateTime read GetShippedDateValue write SetShippedDateValue; + property ShippedDateIsNull : Boolean read GetShippedDateIsNull write SetShippedDateIsNull; + property OldShippedDate : DateTime read GetOldShippedDateValue; + property OldShippedDateIsNull : Boolean read GetOldShippedDateIsNull; + property ShipVia : Integer read GetShipViaValue write SetShipViaValue; + property ShipViaIsNull : Boolean read GetShipViaIsNull write SetShipViaIsNull; + property OldShipVia : Integer read GetOldShipViaValue; + property OldShipViaIsNull : Boolean read GetOldShipViaIsNull; + property Freight : Float read GetFreightValue write SetFreightValue; + property FreightIsNull : Boolean read GetFreightIsNull write SetFreightIsNull; + property OldFreight : Float read GetOldFreightValue; + property OldFreightIsNull : Boolean read GetOldFreightIsNull; + property ShipName : WideString read GetShipNameValue write SetShipNameValue; + property ShipNameIsNull : Boolean read GetShipNameIsNull write SetShipNameIsNull; + property OldShipName : WideString read GetOldShipNameValue; + property OldShipNameIsNull : Boolean read GetOldShipNameIsNull; + property ShipAddress : WideString read GetShipAddressValue write SetShipAddressValue; + property ShipAddressIsNull : Boolean read GetShipAddressIsNull write SetShipAddressIsNull; + property OldShipAddress : WideString read GetOldShipAddressValue; + property OldShipAddressIsNull : Boolean read GetOldShipAddressIsNull; + property ShipCity : WideString read GetShipCityValue write SetShipCityValue; + property ShipCityIsNull : Boolean read GetShipCityIsNull write SetShipCityIsNull; + property OldShipCity : WideString read GetOldShipCityValue; + property OldShipCityIsNull : Boolean read GetOldShipCityIsNull; + property ShipRegion : WideString read GetShipRegionValue write SetShipRegionValue; + property ShipRegionIsNull : Boolean read GetShipRegionIsNull write SetShipRegionIsNull; + property OldShipRegion : WideString read GetOldShipRegionValue; + property OldShipRegionIsNull : Boolean read GetOldShipRegionIsNull; + property ShipPostalCode : WideString read GetShipPostalCodeValue write SetShipPostalCodeValue; + property ShipPostalCodeIsNull : Boolean read GetShipPostalCodeIsNull write SetShipPostalCodeIsNull; + property OldShipPostalCode : WideString read GetOldShipPostalCodeValue; + property OldShipPostalCodeIsNull : Boolean read GetOldShipPostalCodeIsNull; + property ShipCountry : WideString read GetShipCountryValue write SetShipCountryValue; + property ShipCountryIsNull : Boolean read GetShipCountryIsNull write SetShipCountryIsNull; + property OldShipCountry : WideString read GetOldShipCountryValue; + property OldShipCountryIsNull : Boolean read GetOldShipCountryIsNull; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TCustomersBusinessProcessorRules } +constructor TCustomersBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TCustomersBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TCustomersBusinessProcessorRules.GetCustomerIDValue: WideString; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCustomerID]; +end; + +function TCustomersBusinessProcessorRules.GetCustomerIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCustomerID]); +end; + +function TCustomersBusinessProcessorRules.GetOldCustomerIDValue: WideString; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersCustomerID]; +end; + +function TCustomersBusinessProcessorRules.GetOldCustomerIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersCustomerID]); +end; + +procedure TCustomersBusinessProcessorRules.SetCustomerIDValue(const aValue: WideString); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCustomerID] := aValue; +end; + +procedure TCustomersBusinessProcessorRules.SetCustomerIDIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCustomerID] := Null; +end; + +function TCustomersBusinessProcessorRules.GetCompanyNameValue: WideString; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCompanyName]; +end; + +function TCustomersBusinessProcessorRules.GetCompanyNameIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCompanyName]); +end; + +function TCustomersBusinessProcessorRules.GetOldCompanyNameValue: WideString; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersCompanyName]; +end; + +function TCustomersBusinessProcessorRules.GetOldCompanyNameIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersCompanyName]); +end; + +procedure TCustomersBusinessProcessorRules.SetCompanyNameValue(const aValue: WideString); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCompanyName] := aValue; +end; + +procedure TCustomersBusinessProcessorRules.SetCompanyNameIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCompanyName] := Null; +end; + +function TCustomersBusinessProcessorRules.GetContactNameValue: WideString; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersContactName]; +end; + +function TCustomersBusinessProcessorRules.GetContactNameIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersContactName]); +end; + +function TCustomersBusinessProcessorRules.GetOldContactNameValue: WideString; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersContactName]; +end; + +function TCustomersBusinessProcessorRules.GetOldContactNameIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersContactName]); +end; + +procedure TCustomersBusinessProcessorRules.SetContactNameValue(const aValue: WideString); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersContactName] := aValue; +end; + +procedure TCustomersBusinessProcessorRules.SetContactNameIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersContactName] := Null; +end; + +function TCustomersBusinessProcessorRules.GetContactTitleValue: WideString; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersContactTitle]; +end; + +function TCustomersBusinessProcessorRules.GetContactTitleIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersContactTitle]); +end; + +function TCustomersBusinessProcessorRules.GetOldContactTitleValue: WideString; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersContactTitle]; +end; + +function TCustomersBusinessProcessorRules.GetOldContactTitleIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersContactTitle]); +end; + +procedure TCustomersBusinessProcessorRules.SetContactTitleValue(const aValue: WideString); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersContactTitle] := aValue; +end; + +procedure TCustomersBusinessProcessorRules.SetContactTitleIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersContactTitle] := Null; +end; + +function TCustomersBusinessProcessorRules.GetAddressValue: WideString; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersAddress]; +end; + +function TCustomersBusinessProcessorRules.GetAddressIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersAddress]); +end; + +function TCustomersBusinessProcessorRules.GetOldAddressValue: WideString; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersAddress]; +end; + +function TCustomersBusinessProcessorRules.GetOldAddressIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersAddress]); +end; + +procedure TCustomersBusinessProcessorRules.SetAddressValue(const aValue: WideString); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersAddress] := aValue; +end; + +procedure TCustomersBusinessProcessorRules.SetAddressIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersAddress] := Null; +end; + +function TCustomersBusinessProcessorRules.GetCityValue: WideString; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCity]; +end; + +function TCustomersBusinessProcessorRules.GetCityIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCity]); +end; + +function TCustomersBusinessProcessorRules.GetOldCityValue: WideString; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersCity]; +end; + +function TCustomersBusinessProcessorRules.GetOldCityIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersCity]); +end; + +procedure TCustomersBusinessProcessorRules.SetCityValue(const aValue: WideString); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCity] := aValue; +end; + +procedure TCustomersBusinessProcessorRules.SetCityIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCity] := Null; +end; + +function TCustomersBusinessProcessorRules.GetRegionValue: WideString; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersRegion]; +end; + +function TCustomersBusinessProcessorRules.GetRegionIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersRegion]); +end; + +function TCustomersBusinessProcessorRules.GetOldRegionValue: WideString; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersRegion]; +end; + +function TCustomersBusinessProcessorRules.GetOldRegionIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersRegion]); +end; + +procedure TCustomersBusinessProcessorRules.SetRegionValue(const aValue: WideString); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersRegion] := aValue; +end; + +procedure TCustomersBusinessProcessorRules.SetRegionIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersRegion] := Null; +end; + +function TCustomersBusinessProcessorRules.GetPostalCodeValue: WideString; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersPostalCode]; +end; + +function TCustomersBusinessProcessorRules.GetPostalCodeIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersPostalCode]); +end; + +function TCustomersBusinessProcessorRules.GetOldPostalCodeValue: WideString; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersPostalCode]; +end; + +function TCustomersBusinessProcessorRules.GetOldPostalCodeIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersPostalCode]); +end; + +procedure TCustomersBusinessProcessorRules.SetPostalCodeValue(const aValue: WideString); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersPostalCode] := aValue; +end; + +procedure TCustomersBusinessProcessorRules.SetPostalCodeIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersPostalCode] := Null; +end; + +function TCustomersBusinessProcessorRules.GetCountryValue: WideString; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCountry]; +end; + +function TCustomersBusinessProcessorRules.GetCountryIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCountry]); +end; + +function TCustomersBusinessProcessorRules.GetOldCountryValue: WideString; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersCountry]; +end; + +function TCustomersBusinessProcessorRules.GetOldCountryIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersCountry]); +end; + +procedure TCustomersBusinessProcessorRules.SetCountryValue(const aValue: WideString); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCountry] := aValue; +end; + +procedure TCustomersBusinessProcessorRules.SetCountryIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCountry] := Null; +end; + +function TCustomersBusinessProcessorRules.GetPhoneValue: WideString; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersPhone]; +end; + +function TCustomersBusinessProcessorRules.GetPhoneIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersPhone]); +end; + +function TCustomersBusinessProcessorRules.GetOldPhoneValue: WideString; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersPhone]; +end; + +function TCustomersBusinessProcessorRules.GetOldPhoneIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersPhone]); +end; + +procedure TCustomersBusinessProcessorRules.SetPhoneValue(const aValue: WideString); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersPhone] := aValue; +end; + +procedure TCustomersBusinessProcessorRules.SetPhoneIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersPhone] := Null; +end; + +function TCustomersBusinessProcessorRules.GetFaxValue: WideString; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersFax]; +end; + +function TCustomersBusinessProcessorRules.GetFaxIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersFax]); +end; + +function TCustomersBusinessProcessorRules.GetOldFaxValue: WideString; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersFax]; +end; + +function TCustomersBusinessProcessorRules.GetOldFaxIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersFax]); +end; + +procedure TCustomersBusinessProcessorRules.SetFaxValue(const aValue: WideString); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersFax] := aValue; +end; + +procedure TCustomersBusinessProcessorRules.SetFaxIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersFax] := Null; +end; + + +{ TOrdersBusinessProcessorRules } +constructor TOrdersBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TOrdersBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TOrdersBusinessProcessorRules.GetOrderIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersOrderID]; +end; + +function TOrdersBusinessProcessorRules.GetOrderIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersOrderID]); +end; + +function TOrdersBusinessProcessorRules.GetOldOrderIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersOrderID]; +end; + +function TOrdersBusinessProcessorRules.GetOldOrderIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersOrderID]); +end; + +procedure TOrdersBusinessProcessorRules.SetOrderIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersOrderID] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetOrderIDIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersOrderID] := Null; +end; + +function TOrdersBusinessProcessorRules.GetCustomerIDValue: WideString; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersCustomerID]; +end; + +function TOrdersBusinessProcessorRules.GetCustomerIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersCustomerID]); +end; + +function TOrdersBusinessProcessorRules.GetOldCustomerIDValue: WideString; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersCustomerID]; +end; + +function TOrdersBusinessProcessorRules.GetOldCustomerIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersCustomerID]); +end; + +procedure TOrdersBusinessProcessorRules.SetCustomerIDValue(const aValue: WideString); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersCustomerID] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetCustomerIDIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersCustomerID] := Null; +end; + +function TOrdersBusinessProcessorRules.GetEmployeeIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersEmployeeID]; +end; + +function TOrdersBusinessProcessorRules.GetEmployeeIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersEmployeeID]); +end; + +function TOrdersBusinessProcessorRules.GetOldEmployeeIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersEmployeeID]; +end; + +function TOrdersBusinessProcessorRules.GetOldEmployeeIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersEmployeeID]); +end; + +procedure TOrdersBusinessProcessorRules.SetEmployeeIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersEmployeeID] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetEmployeeIDIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersEmployeeID] := Null; +end; + +function TOrdersBusinessProcessorRules.GetOrderDateValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersOrderDate]; +end; + +function TOrdersBusinessProcessorRules.GetOrderDateIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersOrderDate]); +end; + +function TOrdersBusinessProcessorRules.GetOldOrderDateValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersOrderDate]; +end; + +function TOrdersBusinessProcessorRules.GetOldOrderDateIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersOrderDate]); +end; + +procedure TOrdersBusinessProcessorRules.SetOrderDateValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersOrderDate] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetOrderDateIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersOrderDate] := Null; +end; + +function TOrdersBusinessProcessorRules.GetRequiredDateValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersRequiredDate]; +end; + +function TOrdersBusinessProcessorRules.GetRequiredDateIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersRequiredDate]); +end; + +function TOrdersBusinessProcessorRules.GetOldRequiredDateValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersRequiredDate]; +end; + +function TOrdersBusinessProcessorRules.GetOldRequiredDateIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersRequiredDate]); +end; + +procedure TOrdersBusinessProcessorRules.SetRequiredDateValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersRequiredDate] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetRequiredDateIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersRequiredDate] := Null; +end; + +function TOrdersBusinessProcessorRules.GetShippedDateValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShippedDate]; +end; + +function TOrdersBusinessProcessorRules.GetShippedDateIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShippedDate]); +end; + +function TOrdersBusinessProcessorRules.GetOldShippedDateValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShippedDate]; +end; + +function TOrdersBusinessProcessorRules.GetOldShippedDateIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShippedDate]); +end; + +procedure TOrdersBusinessProcessorRules.SetShippedDateValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShippedDate] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetShippedDateIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShippedDate] := Null; +end; + +function TOrdersBusinessProcessorRules.GetShipViaValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipVia]; +end; + +function TOrdersBusinessProcessorRules.GetShipViaIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipVia]); +end; + +function TOrdersBusinessProcessorRules.GetOldShipViaValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipVia]; +end; + +function TOrdersBusinessProcessorRules.GetOldShipViaIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipVia]); +end; + +procedure TOrdersBusinessProcessorRules.SetShipViaValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipVia] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetShipViaIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipVia] := Null; +end; + +function TOrdersBusinessProcessorRules.GetFreightValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersFreight]; +end; + +function TOrdersBusinessProcessorRules.GetFreightIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersFreight]); +end; + +function TOrdersBusinessProcessorRules.GetOldFreightValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersFreight]; +end; + +function TOrdersBusinessProcessorRules.GetOldFreightIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersFreight]); +end; + +procedure TOrdersBusinessProcessorRules.SetFreightValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersFreight] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetFreightIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersFreight] := Null; +end; + +function TOrdersBusinessProcessorRules.GetShipNameValue: WideString; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipName]; +end; + +function TOrdersBusinessProcessorRules.GetShipNameIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipName]); +end; + +function TOrdersBusinessProcessorRules.GetOldShipNameValue: WideString; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipName]; +end; + +function TOrdersBusinessProcessorRules.GetOldShipNameIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipName]); +end; + +procedure TOrdersBusinessProcessorRules.SetShipNameValue(const aValue: WideString); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipName] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetShipNameIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipName] := Null; +end; + +function TOrdersBusinessProcessorRules.GetShipAddressValue: WideString; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipAddress]; +end; + +function TOrdersBusinessProcessorRules.GetShipAddressIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipAddress]); +end; + +function TOrdersBusinessProcessorRules.GetOldShipAddressValue: WideString; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipAddress]; +end; + +function TOrdersBusinessProcessorRules.GetOldShipAddressIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipAddress]); +end; + +procedure TOrdersBusinessProcessorRules.SetShipAddressValue(const aValue: WideString); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipAddress] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetShipAddressIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipAddress] := Null; +end; + +function TOrdersBusinessProcessorRules.GetShipCityValue: WideString; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipCity]; +end; + +function TOrdersBusinessProcessorRules.GetShipCityIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipCity]); +end; + +function TOrdersBusinessProcessorRules.GetOldShipCityValue: WideString; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipCity]; +end; + +function TOrdersBusinessProcessorRules.GetOldShipCityIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipCity]); +end; + +procedure TOrdersBusinessProcessorRules.SetShipCityValue(const aValue: WideString); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipCity] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetShipCityIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipCity] := Null; +end; + +function TOrdersBusinessProcessorRules.GetShipRegionValue: WideString; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipRegion]; +end; + +function TOrdersBusinessProcessorRules.GetShipRegionIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipRegion]); +end; + +function TOrdersBusinessProcessorRules.GetOldShipRegionValue: WideString; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipRegion]; +end; + +function TOrdersBusinessProcessorRules.GetOldShipRegionIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipRegion]); +end; + +procedure TOrdersBusinessProcessorRules.SetShipRegionValue(const aValue: WideString); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipRegion] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetShipRegionIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipRegion] := Null; +end; + +function TOrdersBusinessProcessorRules.GetShipPostalCodeValue: WideString; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipPostalCode]; +end; + +function TOrdersBusinessProcessorRules.GetShipPostalCodeIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipPostalCode]); +end; + +function TOrdersBusinessProcessorRules.GetOldShipPostalCodeValue: WideString; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipPostalCode]; +end; + +function TOrdersBusinessProcessorRules.GetOldShipPostalCodeIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipPostalCode]); +end; + +procedure TOrdersBusinessProcessorRules.SetShipPostalCodeValue(const aValue: WideString); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipPostalCode] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetShipPostalCodeIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipPostalCode] := Null; +end; + +function TOrdersBusinessProcessorRules.GetShipCountryValue: WideString; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipCountry]; +end; + +function TOrdersBusinessProcessorRules.GetShipCountryIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipCountry]); +end; + +function TOrdersBusinessProcessorRules.GetOldShipCountryValue: WideString; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipCountry]; +end; + +function TOrdersBusinessProcessorRules.GetOldShipCountryIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipCountry]); +end; + +procedure TOrdersBusinessProcessorRules.SetShipCountryValue(const aValue: WideString); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipCountry] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetShipCountryIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipCountry] := Null; +end; + + +initialization + RegisterBusinessProcessorRules(RID_CustomersDelta, TCustomersBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_OrdersDelta, TOrdersBusinessProcessorRules); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/ServerGlobal.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/ServerGlobal.pas new file mode 100644 index 0000000..2bbee06 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Processor/ServerGlobal.pas @@ -0,0 +1,15 @@ +unit ServerGlobal; + +interface +var + gCompany: string = 'Company'; + gCompanyCheck: Boolean = True; + gFreightCheck: Boolean = True; + gFreight: integer = 20; + gDeclineDeleteCustomers: Boolean = True; + gDeclineDeleteOrders: Boolean = True; + gCheckCustomerID: Boolean = True; +implementation + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts.Sample.html new file mode 100644 index 0000000..5e87368 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts.Sample.html @@ -0,0 +1,40 @@ + + + + + + + + + +

+ BusinessRulesScripts +

+ + +

Purpose

+

+ This example demonstrates how client side scripts can be modified on the server + and then downloaded to the client via a simple call. +

+

+ When you compile and launch the server, it displays a memo containing various client + side rules executed within event handlers such as BeforePost. +

+

+ You can test it by compiling and launching the client. Try deleting an + item with a gain > 90, for example. +

+

+ Next modify the server memo and click Refresh Scripts from Server + to see that your change has been actioned. +

+

+ Note how the strong typing allows simple reference to field names, thus + making script changes as simple as possible. +

+ + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts.bdsgroup b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts.bdsgroup new file mode 100644 index 0000000..2245049 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts.bdsgroup @@ -0,0 +1,20 @@ + + + + + + + + + + + + + BusinessRulesScripts_Server.bdsproj + BusinessRulesScripts_Client.bdsproj + BusinessRulesScripts_Server.exe BusinessRulesScripts_Client.exe + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts.bpg b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts.bpg new file mode 100644 index 0000000..12ab893 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = BusinessRulesScripts_Server.exe BusinessRulesScripts_Client.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +BusinessRulesScripts_Server.exe: BusinessRulesScripts_Server.dpr + $(DCC) + +BusinessRulesScripts_Client.exe: BusinessRulesScripts_Client.dpr + $(DCC) + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts.groupproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts.groupproj new file mode 100644 index 0000000..181c87d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts.groupproj @@ -0,0 +1,40 @@ + + + {d1f18c23-83b8-4d53-bd98-adcf9fdf1af0} + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScriptsLibrary.rodl b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScriptsLibrary.rodl new file mode 100644 index 0000000..003f8dc --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScriptsLibrary.rodl @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScriptsLibrary_Intf.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScriptsLibrary_Intf.pas new file mode 100644 index 0000000..11fa2f4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScriptsLibrary_Intf.pas @@ -0,0 +1,95 @@ +unit BusinessRulesScriptsLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROClasses, uROClient, uROTypes, uROClientIntf, + {Used RODLs:} DataAbstract4_Intf; + +const + { Library ID } + LibraryUID = '{E97481D6-EA65-4F8F-8CB0-128A20DA2B2C}'; + + { Service Interface ID's } + INewService_IID : TGUID = '{25DCCAE5-CA08-41B5-8DFC-03C4E548FE33}'; + + { Event ID's } + +type + { Forward declarations } + INewService = interface; + + + + + { INewService } + INewService = interface(IDataAbstractService) + ['{25DCCAE5-CA08-41B5-8DFC-03C4E548FE33}'] + function GetDatasetScripts(const DatasetNames: String): String; + end; + + { CoNewService } + CoNewService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): INewService; + end; + + { TNewService_Proxy } + TNewService_Proxy = class(TDataAbstractService_Proxy, INewService) + protected + function __GetInterfaceName:string; override; + + function GetDatasetScripts(const DatasetNames: String): String; + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uRORes; + +{ CoNewService } + +class function CoNewService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): INewService; +begin + result := TNewService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TNewService_Proxy } + +function TNewService_Proxy.__GetInterfaceName:string; +begin + result := 'NewService'; +end; + +function TNewService_Proxy.GetDatasetScripts(const DatasetNames: String): String; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'BusinessRulesScriptsLibrary', __InterfaceName, 'GetDatasetScripts'); + __Message.Write('DatasetNames', TypeInfo(String), DatasetNames, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(String), result, []); + finally + __Message.FreeStream; + end +end; + +initialization + RegisterProxyClass(INewService_IID, TNewService_Proxy); + + +finalization + UnregisterProxyClass(INewService_IID); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScriptsLibrary_Invk.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScriptsLibrary_Invk.pas new file mode 100644 index 0000000..07c636c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScriptsLibrary_Invk.pas @@ -0,0 +1,54 @@ +unit BusinessRulesScriptsLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Used RODL Intf's:} DataAbstract4_Intf, + {Used RODL Invk's:} DataAbstract4_Invk, + {Generated:} BusinessRulesScriptsLibrary_Intf; + +type + TNewService_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + procedure Invoke_GetDatasetScripts(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TNewService_Invoker } + +procedure TNewService_Invoker.Invoke_GetDatasetScripts(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetDatasetScripts(const DatasetNames: String): String; } +var + DatasetNames: String; + lResult: String; +begin + try + __Message.Read('DatasetNames', TypeInfo(String), DatasetNames, []); + + lResult := (__Instance as INewService).GetDatasetScripts(DatasetNames); + + __Message.InitializeResponseMessage(__Transport, 'BusinessRulesScriptsLibrary', 'NewService', 'GetDatasetScriptsResponse'); + __Message.Write('Result', TypeInfo(String), lResult, []); + __Message.Finalize; + + finally + end; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Client.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Client.bdsproj new file mode 100644 index 0000000..3727fb3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Client.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + BusinessRulesScripts_Client.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Client.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Client.dpr new file mode 100644 index 0000000..49b86b7 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Client.dpr @@ -0,0 +1,17 @@ +program BusinessRulesScripts_Client; + +uses + uROComInit, + Forms, + BusinessRulesScripts_ClientMain in 'BusinessRulesScripts_ClientMain.pas' {BusinessRulesScripts_ClientMainForm}, + BusinessRulesScripts_ClientData in 'BusinessRulesScripts_ClientData.pas' {BusinessRulesScripts_ClientDataModule: TDAClientDataModule}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'BusinessRulesScripts Client'; + Application.CreateForm(TBusinessRulesScripts_ClientDataModule, BusinessRulesScripts_ClientDataModule); + Application.CreateForm(TBusinessRulesScripts_ClientMainForm, BusinessRulesScripts_ClientMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Client.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Client.dproj new file mode 100644 index 0000000..71f4c0d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Client.dproj @@ -0,0 +1,75 @@ + + + {d6188ece-37af-4464-a5cb-347a71598f81} + BusinessRulesScripts_Client.dpr + Debug + AnyCPU + DCC32 + BusinessRulesScripts_Client.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + BusinessRulesScripts_Client.dpr + + + + + + + MainSource + + +
BusinessRulesScripts_ClientDataModule
+
+ +
BusinessRulesScripts_ClientMainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Client.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Client.res new file mode 100644 index 0000000..da01de5 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Client.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ClientData.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ClientData.dfm new file mode 100644 index 0000000..f4415e5 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ClientData.dfm @@ -0,0 +1,386 @@ +object BusinessRulesScripts_ClientDataModule: TBusinessRulesScripts_ClientDataModule + OldCreateOrder = True + Left = 447 + Top = 246 + Height = 382 + Width = 300 + object ROChannel: TROWinInetHTTPChannel + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/BIN' + ServerLocators = <> + DispatchOptions = [] + Left = 40 + Top = 8 + end + object ROMessage: TROBinMessage + Left = 40 + Top = 52 + end + object RemoteService: TRORemoteService + Message = ROMessage + Channel = ROChannel + ServiceName = 'NewService' + Left = 41 + Top = 96 + end + object BinDataStreamer: TDABinDataStreamer + Left = 40 + Top = 142 + end + object dtProducts: TDACDSDataTable + ScriptingProvider = DAPSScriptingProvider + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ProductID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ProductName' + DataType = datWideString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SupplierID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CategoryID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'QuantityPerUnit' + DataType = datWideString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UnitPrice' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UnitsInStock' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UnitsOnOrder' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ReorderLevel' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Discontinued' + DataType = datBoolean + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Gain' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = True + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soIgnoreStreamSchema, soDisableEventsWhileStreaming] + RemoteDataAdapter = RemoteDataAdapter + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Products' + IndexDefs = <> + Left = 128 + Top = 160 + end + object dsProducts: TDADataSource + DataSet = dtProducts.Dataset + DataTable = dtProducts + Left = 127 + Top = 187 + end + object DAPSScriptingProvider: TDAPSScriptingProvider + ScriptEngine.CompilerOptions = [icAllowNoBegin, icAllowNoEnd, icBooleanShortCircuit] + ScriptEngine.Plugins = < + item + Plugin = DAPSScriptingProvider.PluginClasses + end + item + Plugin = DAPSScriptingProvider.PluginDB + end + item + Plugin = DAPSScriptingProvider.PluginDateUtils + end> + ScriptEngine.UsePreProcessor = False + Left = 128 + Top = 256 + end + object RemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RemoteService + GetSchemaCall.MethodName = 'GetSchema' + GetSchemaCall.Params = < + item + Name = 'aFilter' + DataType = rtString + Flag = fIn + Value = Null + end + item + Name = 'Result' + DataType = rtString + Flag = fResult + Value = Null + end> + GetSchemaCall.Default = False + GetSchemaCall.IncomingSchemaParameter = 'Result' + GetSchemaCall.OutgoingFilterParameter = 'aFilter' + GetDataCall.RemoteService = RemoteService + GetDataCall.MethodName = 'GetData' + GetDataCall.Params = < + item + Name = 'aTableNameArray' + DataType = rtUserDefined + Flag = fIn + TypeName = 'StringArray' + Value = Null + end + item + Name = 'aTableRequestInfoArray' + DataType = rtUserDefined + Flag = fIn + TypeName = 'TableRequestInfoArray' + Value = Null + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end> + GetDataCall.Default = False + GetDataCall.OutgoingTableNamesParameter = 'aTableNameArray' + GetDataCall.OutgoingTableRequestInfosParameter = 'aTableRequestInfoArray' + GetDataCall.IncomingDataParameter = 'Result' + UpdateDataCall.RemoteService = RemoteService + UpdateDataCall.MethodName = 'UpdateData' + UpdateDataCall.Params = < + item + Name = 'aDelta' + DataType = rtBinary + Flag = fIn + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + end> + UpdateDataCall.Default = False + UpdateDataCall.OutgoingDeltaParameter = 'aDelta' + UpdateDataCall.IncomingDeltaParameter = 'Result' + GetScriptsCall.RemoteService = RemoteService + GetScriptsCall.MethodName = 'GetDatasetScripts' + GetScriptsCall.Params = < + item + Name = 'Result' + DataType = rtString + Flag = fResult + end + item + Name = 'DatasetNames' + DataType = rtString + Flag = fIn + Value = Null + end> + GetScriptsCall.Default = False + GetScriptsCall.OutgoingTableNamesParameter = 'DatasetNames' + GetScriptsCall.IncomingScriptParameter = 'Result' + RemoteService = RemoteService + DataStreamer = BinDataStreamer + AutoFillScripts = True + Left = 128 + Top = 103 + end + object dtOrderDetails: TDACDSDataTable + ScriptingProvider = DAPSScriptingProvider + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'OrderID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ProductName' + DataType = datString + Size = 50 + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = True + LookupSource = dsProducts + LookupKeyFields = 'ProductID' + LookupResultField = 'ProductName' + KeyFields = 'ProductID' + LookupCache = True + end + item + Name = 'ProductID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Visible = False + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UnitPrice' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Quantity' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Discount' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayFormat = '0.##' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Gain' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + DisplayFormat = '0.##' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = True + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soIgnoreStreamSchema, soDisableEventsWhileStreaming] + RemoteDataAdapter = RemoteDataAdapter + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'OrderDetails' + IndexDefs = <> + Left = 157 + Top = 159 + end + object dsOrderDetails: TDADataSource + DataSet = dtOrderDetails.Dataset + DataTable = dtOrderDetails + Left = 158 + Top = 188 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ClientData.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ClientData.pas new file mode 100644 index 0000000..3a2634c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ClientData.pas @@ -0,0 +1,37 @@ +unit BusinessRulesScripts_ClientData; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROWinInetHTTPChannel, + {Data Abstract:} uDADataTable, uDABINAdapter, uDAInterfaces, + uDAScriptingProvider, uDACDSDataTable, + uDAPSScriptingProvider, uDADataStreamer, uDARemoteDataAdapter; + +type + TBusinessRulesScripts_ClientDataModule = class(TDataModule) + ROMessage: TROBinMessage; + ROChannel: TROWinInetHTTPChannel; + RemoteService: TRORemoteService; + BinDataStreamer: TDABinDataStreamer; + dtProducts: TDACDSDataTable; + dsProducts: TDADataSource; + DAPSScriptingProvider: TDAPSScriptingProvider; + RemoteDataAdapter: TDARemoteDataAdapter; + dtOrderDetails: TDACDSDataTable; + dsOrderDetails: TDADataSource; + private + { Private declarations } + public + { Public declarations } + end; + +var + BusinessRulesScripts_ClientDataModule: TBusinessRulesScripts_ClientDataModule; + +implementation + +{$R *.dfm} + +initialization +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ClientMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ClientMain.dfm new file mode 100644 index 0000000..09aec1d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ClientMain.dfm @@ -0,0 +1,79 @@ +object BusinessRulesScripts_ClientMainForm: TBusinessRulesScripts_ClientMainForm + Left = 163 + Top = 30 + AutoScroll = False + BorderWidth = 5 + Caption = 'Business Rules Script Client' + ClientHeight = 316 + ClientWidth = 565 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object BitBtn1: TBitBtn + Left = 0 + Top = 0 + Width = 169 + Height = 25 + Caption = 'Refresh Scripts from Server' + TabOrder = 0 + OnClick = BitBtn1Click + Glyph.Data = { + 36030000424D3603000000000000360000002800000010000000100000000100 + 18000000000000030000120B0000120B00000000000000000000FF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFA467698E5D598E5D598E5D598E5D598E5D598E + 5D598E5D598E5D598E5D598E5D598E5D5980504BFF00FFFF00FFFF00FFA46769 + FCEACEF3DABCF2D5B1F0D0A7EECB9EEDC793EDC28BE9BD81E9BD7FE9BD7FEFC4 + 8180504BFF00FFFF00FFFF00FFA0675BFEEFDAF6E0C6F2DABCF2D5B2C1C18800 + 7000007000BDB672E9BD82E9BD7FEFC48180504BFF00FFFF00FFFF00FFA0675B + FFF4E5F7E5CF007000C4CA97007000C2C187C0BD80007000BDB66FEABF81EFC4 + 8080504BFF00FFFF00FFFF00FFA7756BFFFBF0F8EADC007000007000C4C998F2 + D5B1F0D0A9BFBD80007000EBC28AEFC58380504BFF00FFFF00FFFF00FFA7756B + FFFFFCFAF0E6007000007000007000F2DABAF2D5B1F0D0A7EECB9DEBC793F2C9 + 8C80504BFF00FFFF00FFFF00FFBC8268FFFFFFFEF7F2FAEFE6F8EAD9F7E3CFF6 + E0C5007000007000007000EECC9EF3CE9780504BFF00FFFF00FFFF00FFBC8268 + FFFFFFFFFEFC007000CADABAF7EADAF6E3CFC5CE9F007000007000F0D0A6F6D3 + A080504BFF00FFFF00FFFF00FFD1926DFFFFFFFFFFFFCEE7CC007000CADAB8C9 + D7B0007000C6CC9E007000F4D8B1EBCFA480504BFF00FFFF00FFFF00FFD1926D + FFFFFFFFFFFFFFFFFFCEE7CC007000007000C9D5B0F8E7D1FBEACEDECEB4B6AA + 9380504BFF00FFFF00FFFF00FFDA9D75FFFFFFFFFFFFFFFFFFFFFFFFFFFEFCFC + F6EFFCF3E6EDD8C9A0675BA0675BA0675BA0675BFF00FFFF00FFFF00FFDA9D75 + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFBFFFEF7DAC1BAA0675BE19E55E68F + 31B56D4DFF00FFFF00FFFF00FFE7AB79FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFDCC7C5A0675BF8B55CBF7A5CFF00FFFF00FFFF00FFFF00FFE7AB79 + FBF4F0FBF4EFFAF3EFFAF3EFF8F2EFF7F2EFF7F2EFD8C2C0A0675BC1836CFF00 + FFFF00FFFF00FFFF00FFFF00FFE7AB79CF8E68CF8E68CF8E68CF8E68CF8E68CF + 8E68CF8E68CF8E68A0675BFF00FFFF00FFFF00FFFF00FFFF00FF} + end + object gOrderDetails: TDBGrid + Left = 0 + Top = 33 + Width = 565 + Height = 283 + Align = alBottom + Anchors = [akLeft, akTop, akRight, akBottom] + DataSource = BusinessRulesScripts_ClientDataModule.dsOrderDetails + TabOrder = 1 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'Tahoma' + TitleFont.Style = [] + end + object DBNavigator1: TDBNavigator + Left = 176 + Top = 0 + Width = 370 + Height = 25 + DataSource = BusinessRulesScripts_ClientDataModule.dsOrderDetails + TabOrder = 2 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ClientMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ClientMain.pas new file mode 100644 index 0000000..61142e6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ClientMain.pas @@ -0,0 +1,45 @@ +unit BusinessRulesScripts_ClientMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROIndyHTTPChannel, + Buttons, ExtCtrls, DBCtrls, Grids, DBGrids; + +type + TBusinessRulesScripts_ClientMainForm = class(TForm) + BitBtn1: TBitBtn; + gOrderDetails: TDBGrid; + DBNavigator1: TDBNavigator; + procedure BitBtn1Click(Sender: TObject); + procedure FormCreate(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + BusinessRulesScripts_ClientMainForm: TBusinessRulesScripts_ClientMainForm; + +implementation + +uses + BusinessRulesScripts_ClientData; + +{$R *.dfm} + +procedure TBusinessRulesScripts_ClientMainForm.BitBtn1Click(Sender: TObject); +begin + BusinessRulesScripts_ClientDataModule.dtOrderDetails.LoadScript(); + gOrderDetails.Refresh(); +end; + +procedure TBusinessRulesScripts_ClientMainForm.FormCreate(Sender: TObject); +begin + BusinessRulesScripts_ClientDataModule.dtOrderDetails.Open(); +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Server.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Server.bdsproj new file mode 100644 index 0000000..98c5c99 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Server.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + BusinessRulesScripts_Server.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Server.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Server.dpr new file mode 100644 index 0000000..22834ce --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Server.dpr @@ -0,0 +1,23 @@ +program BusinessRulesScripts_Server; + +{#ROGEN:BusinessRulesScriptsLibrary.rodl} // RemObjects: Careful, do not remove! + +uses + uROComInit, + Forms, + BusinessRulesScripts_ServerMain in 'BusinessRulesScripts_ServerMain.pas' {BusinessRulesScripts_ServerMainForm}, + BusinessRulesScripts_ServerData in 'BusinessRulesScripts_ServerData.pas' {BusinessRulesScripts_ServerDataModule: TDataModule}, + BusinessRulesScriptsLibrary_Intf in 'BusinessRulesScriptsLibrary_Intf.pas', + BusinessRulesScriptsLibrary_Invk in 'BusinessRulesScriptsLibrary_Invk.pas', + NewService_Impl in 'NewService_Impl.pas' {NewService: TDataAbstractService}; + +{$R *.res} +{$R RODLFile.res} + +begin + Application.Initialize; + Application.Title := 'BusinessRulesScripts Server'; + Application.CreateForm(TBusinessRulesScripts_ServerDataModule, BusinessRulesScripts_ServerDataModule); + Application.CreateForm(TBusinessRulesScripts_ServerMainForm, BusinessRulesScripts_ServerMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Server.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Server.dproj new file mode 100644 index 0000000..bffa2c6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Server.dproj @@ -0,0 +1,80 @@ + + + {61f4e143-e541-455f-bfd4-108c7175e3aa} + BusinessRulesScripts_Server.dpr + Debug + AnyCPU + DCC32 + BusinessRulesScripts_Server.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + BusinessRulesScripts_Server.dpr + + + + + + + MainSource + + + + +
BusinessRulesScripts_ServerDataModule
+
+ +
BusinessRulesScripts_ServerMainForm
+
+ +
NewService
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Server.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Server.res new file mode 100644 index 0000000..7455d6e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_Server.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ServerData.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ServerData.dfm new file mode 100644 index 0000000..dbfce7f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ServerData.dfm @@ -0,0 +1,337 @@ +object BusinessRulesScripts_ServerDataModule: TBusinessRulesScripts_ServerDataModule + OldCreateOrder = False + OnCreate = DataModuleCreate + Left = 340 + Top = 54 + Height = 399 + Width = 342 + object ROServer: TROIndyHTTPServer + Dispatchers = < + item + Name = 'ROMessage' + Message = ROMessage + Enabled = True + PathInfo = 'Bin' + end> + Port = 8099 + Left = 32 + Top = 8 + end + object ROMessage: TROBinMessage + Left = 34 + Top = 56 + end + object ConnectionManager: TDAConnectionManager + MaxPoolSize = 10 + PoolTimeoutSeconds = 60 + PoolBehaviour = pbWait + WaitIntervalSeconds = 1 + Connections = < + item + Name = 'ADO' + ConnectionString = + 'ADO?AuxDriver=SQLOLEDB.1;Server=localhost;Database=Northwind;Use' + + 'rID=sa;Password=;' + Default = True + Tag = 0 + end> + DriverManager = DriverManager + PoolingEnabled = True + Left = 136 + Top = 56 + end + object DriverManager: TDADriverManager + DriverDirectory = '%SYSTEM%\' + AutoLoad = False + TraceActive = False + TraceFlags = [] + Left = 136 + Top = 10 + end + object Schema: TDASchema + ConnectionManager = ConnectionManager + DataDictionary = DataDictionary + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Products' + SQL = + 'SELECT '#10' ProductID, ProductName, SupplierID, CategoryID, Quan' + + 'tityPerUnit, '#10' UnitPrice, UnitsInStock, UnitsOnOrder, Reorder' + + 'Level, '#10' Discontinued'#10' FROM'#10' Products' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ProductID' + TableField = 'ProductID' + end + item + DatasetField = 'ProductName' + TableField = 'ProductName' + end + item + DatasetField = 'SupplierID' + TableField = 'SupplierID' + end + item + DatasetField = 'CategoryID' + TableField = 'CategoryID' + end + item + DatasetField = 'QuantityPerUnit' + TableField = 'QuantityPerUnit' + end + item + DatasetField = 'UnitPrice' + TableField = 'UnitPrice' + end + item + DatasetField = 'UnitsInStock' + TableField = 'UnitsInStock' + end + item + DatasetField = 'UnitsOnOrder' + TableField = 'UnitsOnOrder' + end + item + DatasetField = 'ReorderLevel' + TableField = 'ReorderLevel' + end + item + DatasetField = 'Discontinued' + TableField = 'Discontinued' + end> + end> + Name = 'Products' + Fields = < + item + Name = 'ProductID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ProductName' + DataType = datWideString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SupplierID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CategoryID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'QuantityPerUnit' + DataType = datWideString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UnitPrice' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UnitsInStock' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UnitsOnOrder' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ReorderLevel' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Discontinued' + DataType = datBoolean + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'ADO' + TargetTable = 'OrderDetails' + SQL = + 'SELECT '#10' OrderID, ProductID, UnitPrice, Quantity, Discount'#10' ' + + 'FROM'#10' [Order Details]' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'OrderID' + TableField = 'OrderID' + end + item + DatasetField = 'ProductID' + TableField = 'ProductID' + end + item + DatasetField = 'UnitPrice' + TableField = 'UnitPrice' + end + item + DatasetField = 'Quantity' + TableField = 'Quantity' + end + item + DatasetField = 'Discount' + TableField = 'Discount' + end> + end> + Name = 'OrderDetails' + Fields = < + item + Name = 'OrderID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ProductID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UnitPrice' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Quantity' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Discount' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.Script = + 'procedure BeforeDelete;'#10'begin'#10' if Gain > 50 then'#10' RaiseError' + + '('#39'Cannot delete orders that make us more then 50$'#39');'#10'end;'#10#10'pro' + + 'cedure BeforePost;'#10'begin'#10' if VarIsNull(ProductID) then'#10' Rais' + + 'eError('#39'Please specify a name.'#39');'#10' '#10' if Quantity < 1 then'#10' ' + + ' RaiseError('#39'Quantity can not be less 1 !'#39');'#10#10' if UnitPrice < ' + + '10 then'#10' Quantity := 10;'#10'end;'#10#10'procedure OnCalcFields;'#10'begin'#10 + + ' Gain := UnitPrice*Quantity*(1-Discount);'#10'end;'#10#10'procedure OnNew' + + 'Record;'#10'begin'#10' Quantity := 1;'#10'end;' + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = <> + RelationShips = <> + UpdateRules = <> + Left = 43 + Top = 150 + end + object DataDictionary: TDADataDictionary + Fields = <> + Left = 40 + Top = 200 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ServerData.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ServerData.pas new file mode 100644 index 0000000..6e4f778 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ServerData.pas @@ -0,0 +1,39 @@ +unit BusinessRulesScripts_ServerData; + +interface + +uses + SysUtils, Classes, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, + uROBinMessage, uROIndyHTTPServer, + uDADriverManager, uDAClasses, uDAEngine, uDAADODriver, uROIndyTCPServer, + uDADataTable, uDABINAdapter; + +type + TBusinessRulesScripts_ServerDataModule = class(TDataModule) + ROServer: TROIndyHTTPServer; + ROMessage: TROBinMessage; + DriverManager: TDADriverManager; + ConnectionManager: TDAConnectionManager; + Schema: TDASchema; + DataDictionary: TDADataDictionary; + procedure DataModuleCreate(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + BusinessRulesScripts_ServerDataModule: TBusinessRulesScripts_ServerDataModule; + +implementation + +{$R *.dfm} + +procedure TBusinessRulesScripts_ServerDataModule.DataModuleCreate(Sender: TObject); +begin + ROServer.Active := true; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ServerMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ServerMain.dfm new file mode 100644 index 0000000..340e738 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ServerMain.dfm @@ -0,0 +1,44 @@ +object BusinessRulesScripts_ServerMainForm: TBusinessRulesScripts_ServerMainForm + Left = 90 + Top = 79 + AutoScroll = False + BorderWidth = 5 + Caption = 'Business Rules Scripts Server' + ClientHeight = 406 + ClientWidth = 614 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object RoPoweredByRemObjectsButton1: TROPoweredByRemObjectsButton + Left = 0 + Top = 0 + Width = 212 + Height = 48 + Cursor = crHandPoint + end + object ed_Script: TMemo + Left = 0 + Top = 54 + Width = 614 + Height = 352 + Align = alBottom + Anchors = [akLeft, akTop, akRight, akBottom] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Courier New' + Font.Style = [] + ParentFont = False + ScrollBars = ssVertical + TabOrder = 0 + OnChange = ed_ScriptChange + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ServerMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ServerMain.pas new file mode 100644 index 0000000..4c13c25 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/BusinessRulesScripts_ServerMain.pas @@ -0,0 +1,45 @@ +unit BusinessRulesScripts_ServerMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, + uROBinMessage, uROIndyHTTPServer; + +type + TBusinessRulesScripts_ServerMainForm = class(TForm) + RoPoweredByRemObjectsButton1: TRoPoweredByRemObjectsButton; + ed_Script: TMemo; + procedure FormCreate(Sender: TObject); + procedure ed_ScriptChange(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + BusinessRulesScripts_ServerMainForm: TBusinessRulesScripts_ServerMainForm; + +implementation + +uses + BusinessRulesScripts_ServerData; + +{$R *.dfm} + +procedure TBusinessRulesScripts_ServerMainForm.FormCreate(Sender: TObject); +begin + with BusinessRulesScripts_ServerDataModule.Schema.Datasets.DatasetByName('OrderDetails').BusinessRulesClient do + ed_Script.Text := StringReplace(Script, #10, sLineBreak, [rfReplaceAll]); +end; + +procedure TBusinessRulesScripts_ServerMainForm.ed_ScriptChange(Sender: TObject); +begin + with BusinessRulesScripts_ServerDataModule.Schema.Datasets.DatasetByName('OrderDetails').BusinessRulesClient do + Script := ed_Script.Text; +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/NewService_Impl.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/NewService_Impl.dfm new file mode 100644 index 0000000..3cac002 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/NewService_Impl.dfm @@ -0,0 +1,15 @@ +object NewService: TNewService + OldCreateOrder = True + AcquireConnection = True + ServiceSchema = BusinessRulesScripts_ServerDataModule.Schema + ServiceDataStreamer = BinDataStreamer + ExportedDataTables = <> + Left = 188 + Top = 181 + Height = 150 + Width = 205 + object BinDataStreamer: TDABinDataStreamer + Left = 33 + Top = 18 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/NewService_Impl.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/NewService_Impl.pas new file mode 100644 index 0000000..51b6c4f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/NewService_Impl.pas @@ -0,0 +1,45 @@ +unit NewService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} BusinessRulesScriptsLibrary_Intf, uDADataStreamer, + uDABinAdapter,uDAInterfaces; + +type + { TNewService } + TNewService = class(TDataAbstractService, INewService) + BinDataStreamer: TDABinDataStreamer; + private + protected + end; + +implementation + +{$R *.dfm} +uses + {Generated:} BusinessRulesScriptsLibrary_Invk, BusinessRulesScripts_ServerData,TypInfo; + +procedure Create_NewService(out anInstance: IUnknown); +begin + anInstance := TNewService.Create(nil); +end; + +initialization + TROClassFactory.Create('NewService', Create_NewService, TNewService_Invoker); + +finalization + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/RODLFILE.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/RODLFILE.res new file mode 100644 index 0000000..53e3ab7 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Business Rules Scripts/RODLFILE.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields.Sample.html new file mode 100644 index 0000000..2d8151b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields.Sample.html @@ -0,0 +1,31 @@ + + + + + + + + +

+ Calculated Fields Example +

+

Purpose

+

+ This example shows how to handle calculated fields server side and client + side. +

+

Examine the Code

+

+ Server side fields are processed via the BinAdapter's OnWriteFieldValue + event handler (see CalcFieldsService_Impl). +

+

+ On the client side, they are handled as you would expect via dtCustomers.OnCalcFields + (see CalcFields_ClientData). Note though, how the client field actually references + the server value. +

+ + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields.bdsgroup b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields.bdsgroup new file mode 100644 index 0000000..9fa715f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields.bdsgroup @@ -0,0 +1,20 @@ + + + + + + + + + + + + + CalcFields_Server.bdsproj + CalcFields_Client.bdsproj + CalcFields_Server.exe CalcFields_Client.exe + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields.bpg b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields.bpg new file mode 100644 index 0000000..024afdc --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = CalcFields_Server.exe CalcFields_Client.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +CalcFields_Client.exe: CalcFields_Client.dpr + $(DCC) + +CalcFields_Server.exe: CalcFields_Server.dpr + $(DCC) + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields.groupproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields.groupproj new file mode 100644 index 0000000..f6d8ad4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields.groupproj @@ -0,0 +1,40 @@ + + + {70b86ab1-4399-4031-8bb6-28a50d072647} + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFieldsLibrary.rodl b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFieldsLibrary.rodl new file mode 100644 index 0000000..d2b0b72 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFieldsLibrary.rodl @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFieldsLibrary_Intf.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFieldsLibrary_Intf.pas new file mode 100644 index 0000000..63bfd01 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFieldsLibrary_Intf.pas @@ -0,0 +1,82 @@ +unit CalcFieldsLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf, + {Used RODLs:} DataAbstract4_Intf; + +const + { Library ID } + LibraryUID = '{A54F3492-C4C5-4161-8536-FE04F7DE88E5}'; + TargetNamespace = ''; + + { Service Interface ID's } + ICalcFieldsService_IID : TGUID = '{7113FC5C-4AB9-4583-B4E6-5F7F5A975E0A}'; + + { Event ID's } + +type + { Forward declarations } + ICalcFieldsService = interface; + + + + + + { Enumerateds } + + { ICalcFieldsService } + ICalcFieldsService = interface(IDataAbstractService) + ['{7113FC5C-4AB9-4583-B4E6-5F7F5A975E0A}'] + end; + + { CoCalcFieldsService } + CoCalcFieldsService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ICalcFieldsService; + end; + + { TCalcFieldsService_Proxy } + TCalcFieldsService_Proxy = class(TDataAbstractService_Proxy, ICalcFieldsService) + protected + function __GetInterfaceName:string; override; + + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uROSerializer, uRORes; + +{ CoCalcFieldsService } + +class function CoCalcFieldsService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ICalcFieldsService; +begin + result := TCalcFieldsService_Proxy.Create(aMessage, aTransportChannel); +end; + +function TCalcFieldsService_Proxy.__GetInterfaceName:string; +begin + result := 'CalcFieldsService'; +end; + +initialization + RegisterProxyClass(ICalcFieldsService_IID, TCalcFieldsService_Proxy); + + +finalization + UnregisterProxyClass(ICalcFieldsService_IID); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFieldsLibrary_Invk.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFieldsLibrary_Invk.pas new file mode 100644 index 0000000..e3e62a2 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFieldsLibrary_Invk.pas @@ -0,0 +1,35 @@ +unit CalcFieldsLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Used RODL Intf's:} DataAbstract4_Intf, + {Used RODL Invk's:} DataAbstract4_Invk, + {Generated:} CalcFieldsLibrary_Intf; + +type + TCalcFieldsService_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +initialization +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFieldsService_Impl.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFieldsService_Impl.dfm new file mode 100644 index 0000000..2d9dc08 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFieldsService_Impl.dfm @@ -0,0 +1,83 @@ +object CalcFieldsService: TCalcFieldsService + OldCreateOrder = True + OnCreate = DataAbstractServiceCreate + ServiceSchema = Schema + ServiceDataStreamer = DataStreamer + ExportedDataTables = <> + Height = 300 + Width = 300 + object DataStreamer: TDABin2DataStreamer + OnWriteFieldValue = DataStreamerWriteFieldValue + Left = 32 + Top = 8 + end + object Schema: TDASchema + ConnectionManager = CalcFields_ServerDataForm.ConnectionManager + DataDictionary = DataDictionary + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Customers' + SQL = 'SELECT '#10' CustomerID, CompanyName'#10#10' FROM'#10' Customers'#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'CompanyName' + TableField = 'CompanyName' + end + item + DatasetField = 'ServerCalculated' + TableField = '' + end> + end> + Name = 'Customers' + Fields = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + InPrimaryKey = True + end + item + Name = 'CompanyName' + DataType = datString + Size = 40 + end + item + Name = 'ServerCalculated' + DataType = datInteger + LogChanges = False + ReadOnly = True + ServerCalculated = True + end> + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = <> + RelationShips = <> + UpdateRules = <> + Version = 0 + Left = 32 + Top = 56 + end + object DataDictionary: TDADataDictionary + Fields = <> + Left = 32 + Top = 103 + end + object bpCustomers: TDABusinessProcessor + Schema = Schema + ReferencedDataset = 'Customers' + ProcessorOptions = [poAutoGenerateInsert, poAutoGenerateUpdate, poAutoGenerateDelete, poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 112 + Top = 56 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFieldsService_Impl.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFieldsService_Impl.pas new file mode 100644 index 0000000..66b73ec --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFieldsService_Impl.pas @@ -0,0 +1,75 @@ +unit CalcFieldsService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} CalcFieldsLibrary_Intf, uDAScriptingProvider, + uDABusinessProcessor, uDAInterfaces, uDAClasses, uDADataStreamer, + uDABin2DataStreamer; + +const + { Dataset names for Schema } + ds_Customers = 'Customers'; + +type + { TCalcFieldsService } + TCalcFieldsService = class(TDataAbstractService, ICalcFieldsService) + DataStreamer: TDABin2DataStreamer; + bpCustomers: TDABusinessProcessor; + Schema: TDASchema; + DataDictionary: TDADataDictionary; + procedure DataStreamerWriteFieldValue(const aField: TDAField; + var Value: Variant); + procedure DataAbstractServiceCreate(Sender: TObject); + private + fNextCalcValue: Integer; + protected + end; + +implementation + +{$R *.dfm} +uses + {Generated:} CalcFieldsLibrary_Invk, CalcFields_ServerData; + +procedure Create_CalcFieldsService(out anInstance: IUnknown); +begin + anInstance := TCalcFieldsService.Create(nil); +end; + +{ CalcFieldsService } + +procedure TCalcFieldsService.DataStreamerWriteFieldValue( + const aField: TDAField; var Value: Variant); +begin + if SameText(aField.Name, 'ServerCalculated') then + begin + Value := fNextCalcValue; + Inc(fNextCalcValue); + end; +end; + +procedure TCalcFieldsService.DataAbstractServiceCreate(Sender: TObject); +begin + inherited; + fNextCalcValue := 100; +end; + +initialization + TROClassFactory.Create('CalcFieldsService', Create_CalcFieldsService, TCalcFieldsService_Invoker); + +finalization + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Client.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Client.bdsproj new file mode 100644 index 0000000..5415a64 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Client.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + CalcFields_Client.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Client.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Client.dpr new file mode 100644 index 0000000..b5f93c5 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Client.dpr @@ -0,0 +1,17 @@ +program CalcFields_Client; + +uses + uROComInit, + Forms, + CalcFields_ClientMain in 'CalcFields_ClientMain.pas' {CalcFields_ClientMainForm}, + CalcFields_ClientData in 'CalcFields_ClientData.pas' {CalcFields_ClientDataForm: TDAClientDataModule}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'CalcFields - Client'; + Application.CreateForm(TCalcFields_ClientDataForm, CalcFields_ClientDataForm); + Application.CreateForm(TCalcFields_ClientMainForm, CalcFields_ClientMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Client.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Client.dproj new file mode 100644 index 0000000..b9f6c7d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Client.dproj @@ -0,0 +1,75 @@ + + + {507351df-1ced-4f28-becd-e7e287bd9083} + CalcFields_Client.dpr + Debug + AnyCPU + DCC32 + CalcFields_Client.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + CalcFields_Client.dpr + + + + + + + MainSource + + +
CalcFields_ClientDataForm
+
+ +
CalcFields_ClientMainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Client.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Client.res new file mode 100644 index 0000000..cd90391 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Client.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ClientData.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ClientData.dfm new file mode 100644 index 0000000..243d2aa --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ClientData.dfm @@ -0,0 +1,88 @@ +object CalcFields_ClientDataForm: TCalcFields_ClientDataForm + OldCreateOrder = True + OnCreate = DataModuleCreate + Height = 300 + Width = 300 + object ROChannel: TROWinInetHTTPChannel + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/BIN' + ServerLocators = <> + DispatchOptions = [] + Left = 42 + Top = 10 + end + object ROMessage: TROBinMessage + Left = 41 + Top = 52 + end + object RORemoteService: TRORemoteService + Message = ROMessage + Channel = ROChannel + ServiceName = 'CalcFieldsService' + Left = 40 + Top = 95 + end + object DARemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetDataCall.RemoteService = RORemoteService + UpdateDataCall.RemoteService = RORemoteService + GetScriptsCall.RemoteService = RORemoteService + RemoteService = RORemoteService + DataStreamer = DataStreamer + Left = 128 + Top = 82 + end + object DataStreamer: TDABin2DataStreamer + Left = 40 + Top = 144 + end + object tbl_Customers: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + InPrimaryKey = True + OnChange = tbl_CustomersCustomerIDChange + end + item + Name = 'CompanyName' + DataType = datString + Size = 40 + OnChange = tbl_CustomersCompanyNameChange + end + item + Name = 'ServerCalculated' + DataType = datInteger + LogChanges = False + ReadOnly = True + ServerCalculated = True + end + item + Name = 'ClientCalculated' + DataType = datString + Size = 50 + LogChanges = False + DisplayWidth = 50 + ReadOnly = True + Calculated = True + end> + Params = <> + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + OnCalcFields = tbl_CustomersCalcFields + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Customers' + IndexDefs = <> + Left = 136 + Top = 136 + end + object ds_Customers: TDADataSource + DataSet = tbl_Customers.Dataset + DataTable = tbl_Customers + Left = 168 + Top = 136 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ClientData.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ClientData.pas new file mode 100644 index 0000000..178fcdd --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ClientData.pas @@ -0,0 +1,66 @@ +unit CalcFields_ClientData; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROWinInetHTTPChannel, + {Data Abstract:} uDADataTable, uDABINAdapter, uDAInterfaces, + uDACDSDataTable, uDAScriptingProvider, + uDARemoteDataAdapter, uDADataStreamer, uROIndyTCPChannel, + uROIndyHTTPChannel, uDABin2DataStreamer, uDAMemDataTable; + +type + TCalcFields_ClientDataForm = class(TDataModule) + ROMessage: TROBinMessage; + ROChannel: TROWinInetHTTPChannel; + RORemoteService: TRORemoteService; + DARemoteDataAdapter: TDARemoteDataAdapter; + DataStreamer: TDABin2DataStreamer; + tbl_Customers: TDAMemDataTable; + ds_Customers: TDADataSource; + procedure DataModuleCreate(Sender: TObject); + procedure tbl_CustomersCustomerIDChange(Sender: TDACustomField); + procedure tbl_CustomersCompanyNameChange(Sender: TDACustomField); + procedure tbl_CustomersCalcFields(DataTable: TDADataTable); + private + { Private declarations } + public + { Public declarations } + end; + +var + CalcFields_ClientDataForm: TCalcFields_ClientDataForm; + +implementation +{$R *.dfm} + +procedure TCalcFields_ClientDataForm.tbl_CustomersCalcFields( + DataTable: TDADataTable); +begin + if DataTable.FieldByName('ServerCalculated').IsNULL then + DataTable.FieldByName('ClientCalculated').AsString := '' + else + DataTable.FieldByName('ClientCalculated').AsString := + 'Got #' + DataTable.FieldByName('ServerCalculated').AsString; +end; + +procedure TCalcFields_ClientDataForm.tbl_CustomersCompanyNameChange( + Sender: TDACustomField); +begin + Beep; +end; + +procedure TCalcFields_ClientDataForm.tbl_CustomersCustomerIDChange( + Sender: TDACustomField); +begin + Beep; +end; + +procedure TCalcFields_ClientDataForm.DataModuleCreate(Sender: TObject); +begin + DARemoteDataAdapter.SetupDefaultRequest; +end; + +initialization +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ClientMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ClientMain.dfm new file mode 100644 index 0000000..7a928d7 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ClientMain.dfm @@ -0,0 +1,60 @@ +object CalcFields_ClientMainForm: TCalcFields_ClientMainForm + Left = 243 + Top = 213 + Width = 420 + Height = 311 + BorderWidth = 5 + Caption = 'CalcFields - Client' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object ROPoweredByRemObjectsButton1: TROPoweredByRemObjectsButton + Left = 178 + Top = 0 + Width = 212 + Height = 48 + Cursor = crHandPoint + Anchors = [akTop, akRight] + ApplicationType = atClient + end + object OpenCloseButton: TButton + Left = 0 + Top = 0 + Width = 75 + Height = 25 + Caption = 'Open/Close' + TabOrder = 0 + OnClick = OpenCloseButtonClick + end + object gCustomers: TDBGrid + Left = 0 + Top = 53 + Width = 394 + Height = 212 + Align = alBottom + Anchors = [akLeft, akTop, akRight, akBottom] + DataSource = CalcFields_ClientDataForm.ds_Customers + TabOrder = 1 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object ApplyUpdatesButton: TButton + Left = 80 + Top = 0 + Width = 89 + Height = 25 + Caption = 'Apply Updates' + TabOrder = 2 + OnClick = ApplyUpdatesButtonClick + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ClientMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ClientMain.pas new file mode 100644 index 0000000..5f9701f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ClientMain.pas @@ -0,0 +1,45 @@ +unit CalcFields_ClientMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROIndyHTTPChannel, + Grids, DBGrids, uROPoweredByRemObjectsButton; + +type + TCalcFields_ClientMainForm = class(TForm) + OpenCloseButton: TButton; + gCustomers: TDBGrid; + ApplyUpdatesButton: TButton; + ROPoweredByRemObjectsButton1: TROPoweredByRemObjectsButton; + procedure OpenCloseButtonClick(Sender: TObject); + procedure ApplyUpdatesButtonClick(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + CalcFields_ClientMainForm: TCalcFields_ClientMainForm; + +implementation + +uses CalcFields_ClientData; + +{$R *.dfm} + +procedure TCalcFields_ClientMainForm.OpenCloseButtonClick(Sender: TObject); +begin + with CalcFields_ClientDataForm do + tbl_Customers.Active := not tbl_Customers.Active; +end; + +procedure TCalcFields_ClientMainForm.ApplyUpdatesButtonClick(Sender: TObject); +begin + CalcFields_ClientDataForm.tbl_Customers.ApplyUpdates(True) +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Server.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Server.bdsproj new file mode 100644 index 0000000..e42d0d9 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Server.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + CalcFields_Server.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Server.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Server.dpr new file mode 100644 index 0000000..6a5f57f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Server.dpr @@ -0,0 +1,23 @@ +program CalcFields_Server; + +{#ROGEN:CalcFieldsLibrary.rodl} // RemObjects: Careful, do not remove! + +uses + uROComInit, + Forms, + CalcFields_ServerMain in 'CalcFields_ServerMain.pas' {CalcFields_ServerMainForm}, + CalcFields_ServerData in 'CalcFields_ServerData.pas' {CalcFields_ServerDataForm: TDataModule}, + CalcFieldsLibrary_Intf in 'CalcFieldsLibrary_Intf.pas', + CalcFieldsLibrary_Invk in 'CalcFieldsLibrary_Invk.pas', + CalcFieldsService_Impl in 'CalcFieldsService_Impl.pas' {CalcFieldsService: TDataAbstractService}; + +{$R *.res} +{$R RODLFile.res} + +begin + Application.Initialize; + Application.Title := 'CalcFields - Server'; + Application.CreateForm(TCalcFields_ServerDataForm, CalcFields_ServerDataForm); + Application.CreateForm(TCalcFields_ServerMainForm, CalcFields_ServerMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Server.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Server.dproj new file mode 100644 index 0000000..8fcb2de --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Server.dproj @@ -0,0 +1,80 @@ + + + {e6dc35c7-8101-4b42-8f70-e31cf121c23b} + CalcFields_Server.dpr + Debug + AnyCPU + DCC32 + CalcFields_Server.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + CalcFields_Server.dpr + + + + + + + MainSource + + + + +
CalcFieldsService
+
+ +
CalcFields_ServerDataForm
+
+ +
CalcFields_ServerMainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Server.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Server.res new file mode 100644 index 0000000..ec4433b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_Server.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ServerData.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ServerData.dfm new file mode 100644 index 0000000..6229eb8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ServerData.dfm @@ -0,0 +1,49 @@ +object CalcFields_ServerDataForm: TCalcFields_ServerDataForm + OldCreateOrder = False + OnCreate = DataModuleCreate + Height = 207 + Width = 352 + object ROServer: TROIndyHTTPServer + Active = True + Dispatchers = < + item + Name = 'ROMessage' + Message = ROMessage + Enabled = True + PathInfo = 'Bin' + end> + Port = 8099 + Left = 32 + Top = 8 + end + object ROMessage: TROBinMessage + Left = 34 + Top = 56 + end + object ConnectionManager: TDAConnectionManager + Connections = < + item + Name = 'ADO' + ConnectionString = + 'ADO?AuxDriver=SQLOLEDB.1;Server=localhost;Database=Northwind;Int' + + 'egrated Security=SSPI;' + Description = 'Borland ADOExpress Connection' + Default = True + end> + DriverManager = DriverManager + PoolingEnabled = True + Left = 136 + Top = 56 + end + object DriverManager: TDADriverManager + DriverDirectory = '%SYSTEM%\' + TraceActive = False + TraceFlags = [] + Left = 136 + Top = 10 + end + object ADODriver: TDAADODriver + Left = 232 + Top = 8 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ServerData.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ServerData.pas new file mode 100644 index 0000000..3d4b59a --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ServerData.pas @@ -0,0 +1,38 @@ +unit CalcFields_ServerData; + +interface + +uses + SysUtils, Classes, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, + uROBinMessage, uROIndyHTTPServer, + uDADriverManager, uDAClasses, uDADBXDriver, uDAEngine, uDAADODriver, + uROIndyTCPServer; + +type + TCalcFields_ServerDataForm = class(TDataModule) + ROServer: TROIndyHTTPServer; + ROMessage: TROBinMessage; + DriverManager: TDADriverManager; + ADODriver: TDAADODriver; + ConnectionManager: TDAConnectionManager; + procedure DataModuleCreate(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + CalcFields_ServerDataForm: TCalcFields_ServerDataForm; + +implementation + +{$R *.dfm} + +procedure TCalcFields_ServerDataForm.DataModuleCreate(Sender: TObject); +begin + ROServer.Active := true; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ServerMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ServerMain.dfm new file mode 100644 index 0000000..b6a51ee --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ServerMain.dfm @@ -0,0 +1,25 @@ +object CalcFields_ServerMainForm: TCalcFields_ServerMainForm + Left = 122 + Top = 243 + BorderStyle = bsDialog + Caption = 'CalcFields - Server' + ClientHeight = 64 + ClientWidth = 228 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object RoPoweredByRemObjectsButton: TROPoweredByRemObjectsButton + Left = 8 + Top = 8 + Width = 212 + Height = 48 + Cursor = crHandPoint + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ServerMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ServerMain.pas new file mode 100644 index 0000000..9fa2b27 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/CalcFields_ServerMain.pas @@ -0,0 +1,26 @@ +unit CalcFields_ServerMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, + uROBinMessage, uROIndyHTTPServer; + +type + TCalcFields_ServerMainForm = class(TForm) + RoPoweredByRemObjectsButton: TROPoweredByRemObjectsButton; + private + { Private declarations } + public + { Public declarations } + end; + +var + CalcFields_ServerMainForm: TCalcFields_ServerMainForm; + +implementation + +{$R *.dfm} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/RODLFILE.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/RODLFILE.res new file mode 100644 index 0000000..09082da Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Calculated Fields/RODLFILE.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection By User/ConnectionByUser.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection By User/ConnectionByUser.Sample.html new file mode 100644 index 0000000..33b66bf --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection By User/ConnectionByUser.Sample.html @@ -0,0 +1,44 @@ + + + + + + + + + +

+ Connection By User +

+

Purpose

+

+ Shows various methods how a standard application (i.e. not a RemObjects server or + client) can obtain a database connection at runtime. +
+ The application uses four Data Abstract components:  TDAADODriver, + TDADriverManager, TDAConnectionManager and + TROInMemorySessionManager.

+ +

+ All tests above connect via the DAConnectionManager except for + #4.

+ + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection By User/ConnectionByUser.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection By User/ConnectionByUser.bdsproj new file mode 100644 index 0000000..b010e02 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection By User/ConnectionByUser.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + ConnectionByUser.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection By User/ConnectionByUser.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection By User/ConnectionByUser.dpr new file mode 100644 index 0000000..460e7fd --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection By User/ConnectionByUser.dpr @@ -0,0 +1,14 @@ +program ConnectionByUser; + +uses + Forms, + ConnectionByUserMain in 'ConnectionByUserMain.pas' {ConnectionByUserMainForm}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'Connection By User'; + Application.CreateForm(TConnectionByUserMainForm, ConnectionByUserMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection By User/ConnectionByUser.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection By User/ConnectionByUser.dproj new file mode 100644 index 0000000..e17d67b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection By User/ConnectionByUser.dproj @@ -0,0 +1,72 @@ + + + {3a10f6d7-3d2b-4bea-bad3-215392d8b601} + ConnectionByUser.dpr + Debug + AnyCPU + DCC32 + ConnectionByUser.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + ConnectionByUser.dpr + + + + + + + MainSource + + +
ConnectionByUserMainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection By User/ConnectionByUser.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection By User/ConnectionByUser.res new file mode 100644 index 0000000..6a1db77 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection By User/ConnectionByUser.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection By User/ConnectionByUserMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection By User/ConnectionByUserMain.dfm new file mode 100644 index 0000000..9faa693 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection By User/ConnectionByUserMain.dfm @@ -0,0 +1,173 @@ +object ConnectionByUserMainForm: TConnectionByUserMainForm + Left = 32 + Top = 37 + AutoScroll = False + Caption = 'Connection by User' + ClientHeight = 313 + ClientWidth = 506 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object Label3: TLabel + Left = 309 + Top = 18 + Width = 117 + Height = 13 + Caption = 'Open default connection' + end + object Label4: TLabel + Left = 309 + Top = 52 + Width = 174 + Height = 13 + Caption = 'Delayed "Open" after supplying login' + end + object Label5: TLabel + Left = 309 + Top = 82 + Width = 155 + Height = 13 + Caption = 'One-liner Open with custom login' + end + object Label6: TLabel + Left = 309 + Top = 114 + Width = 133 + Height = 13 + Caption = 'Using the DADriverManager' + end + object GroupBox1: TGroupBox + Left = 8 + Top = 8 + Width = 217 + Height = 89 + Caption = 'Login Info' + TabOrder = 0 + object Label1: TLabel + Left = 29 + Top = 28 + Width = 36 + Height = 13 + Caption = 'UserID:' + end + object Label2: TLabel + Left = 16 + Top = 60 + Width = 49 + Height = 13 + Caption = 'Password:' + end + object eUserID: TEdit + Left = 72 + Top = 24 + Width = 121 + Height = 24 + TabOrder = 0 + Text = 'sa' + end + object ePassword: TEdit + Left = 72 + Top = 56 + Width = 121 + Height = 24 + TabOrder = 1 + end + end + object Acquire1Button: TButton + Left = 229 + Top = 12 + Width = 75 + Height = 25 + Caption = 'Acquire #1' + TabOrder = 1 + OnClick = Acquire1ButtonClick + end + object Acquire2Button: TButton + Left = 229 + Top = 44 + Width = 75 + Height = 25 + Caption = 'Acquire #2' + TabOrder = 2 + OnClick = Acquire2ButtonClick + end + object Acquire3Button: TButton + Left = 229 + Top = 76 + Width = 75 + Height = 25 + Caption = 'Acquire #3' + TabOrder = 3 + OnClick = Acquire3ButtonClick + end + object Acquire4Button: TButton + Left = 229 + Top = 108 + Width = 75 + Height = 25 + Caption = 'Acquire #4' + TabOrder = 4 + OnClick = Acquire4ButtonClick + end + object AcquireHoldButton: TButton + Left = 229 + Top = 140 + Width = 209 + Height = 25 + Caption = 'Acquire and Hold in a Session' + TabOrder = 5 + OnClick = AcquireHoldButtonClick + end + object Memo: TMemo + Left = 4 + Top = 173 + Width = 496 + Height = 137 + Anchors = [akLeft, akTop, akRight, akBottom] + ScrollBars = ssVertical + TabOrder = 6 + end + object DAADODriver: TDAADODriver + Left = 57 + Top = 127 + end + object DADriverManager: TDADriverManager + DriverDirectory = '%SYSTEM%\' + TraceActive = False + TraceFlags = [] + Left = 91 + Top = 127 + end + object DAConnectionManager: TDAConnectionManager + Connections = < + item + Name = 'ADOPartial' + ConnectionString = 'ADO?Server=localhost;Database=Northwind;AuxDriver=SQLOLEDB.1' + Default = False + Tag = 0 + end + item + Name = 'ADOComplete' + ConnectionString = + 'ADO?Server=localhost;Database=Northwind;AuxDriver=SQLOLEDB.1;Use' + + 'rID=sa;Password=;' + Default = False + Tag = 0 + end> + DriverManager = DADriverManager + PoolingEnabled = False + Left = 23 + Top = 127 + end + object ROSessionManager: TROInMemorySessionManager + Left = 129 + Top = 127 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection By User/ConnectionByUserMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection By User/ConnectionByUserMain.pas new file mode 100644 index 0000000..0ae0360 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection By User/ConnectionByUserMain.pas @@ -0,0 +1,187 @@ +unit ConnectionByUserMain; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, uDAClasses, uDADriverManager, uDAEngine, uDAADODriver, + uROSessions, uROClient; + +type + TConnectionByUserMainForm = class(TForm) + GroupBox1: TGroupBox; + Label1: TLabel; + Label2: TLabel; + eUserID: TEdit; + ePassword: TEdit; + Acquire1Button: TButton; + Acquire2Button: TButton; + Acquire3Button: TButton; + DAADODriver: TDAADODriver; + DADriverManager: TDADriverManager; + DAConnectionManager: TDAConnectionManager; + Acquire4Button: TButton; + ROSessionManager: TROInMemorySessionManager; + AcquireHoldButton: TButton; + Label3: TLabel; + Label4: TLabel; + Label5: TLabel; + Label6: TLabel; + Memo: TMemo; + procedure Acquire1ButtonClick(Sender: TObject); + procedure Acquire2ButtonClick(Sender: TObject); + procedure Acquire3ButtonClick(Sender: TObject); + procedure Acquire4ButtonClick(Sender: TObject); + procedure AcquireHoldButtonClick(Sender: TObject); + private + { Private declarations } + procedure Log(Str: string); + public + { Public declarations } + end; + +var + ConnectionByUserMainForm: TConnectionByUserMainForm; + +implementation + +uses uDAInterfaces; + +{$R *.dfm} + +procedure TConnectionByUserMainForm.Acquire1ButtonClick(Sender: TObject); +var + conn: IDAConnection; +begin + try + conn := DAConnectionManager.NewConnection('ADOComplete'); + finally + if (Conn <> nil) and conn.Connected then begin + Log(TButton(Sender).Caption + ': Connection successful'); + log('Connection via "' + conn.ConnectionString + '"'); + end + else begin + Log(TButton(Sender).Caption + ': Connection failed'); + end; + end; +end; + +procedure TConnectionByUserMainForm.Acquire2ButtonClick(Sender: TObject); +var + conn: IDAConnection; +begin + try + conn := DAConnectionManager.NewConnection('ADOPartial', FALSE); + conn.UserID := eUserID.Text; + conn.Password := ePassword.Text; + conn.Open; + finally + if (Conn <> nil) and conn.Connected then begin + Log(TButton(Sender).Caption + ': Connection successful'); + log('Connection via "' + conn.ConnectionString + '"'); + end + else begin + Log(TButton(Sender).Caption + ': Connection failed'); + end; + end; +end; + +procedure TConnectionByUserMainForm.Acquire3ButtonClick(Sender: TObject); +var + conn: IDAConnection; +begin + try + conn := DAConnectionManager.NewConnection('ADOPartial', TRUE, eUserID.Text, ePassword.Text); + finally + if (Conn <> nil) and conn.Connected then begin + Log(TButton(Sender).Caption + ': Connection successful'); + log('Connection via "' + conn.ConnectionString + '"'); + end + else begin + Log(TButton(Sender).Caption + ': Connection failed'); + end; + end; +end; + +procedure TConnectionByUserMainForm.Acquire4ButtonClick(Sender: TObject); +var + drv: IDADriver; + conn: IDAConnection; +begin + try + drv := DriverManager.DriverByDriverID('ADO'); // Raises exception if not found + conn := drv.NewConnection; + // If not empty strings, these will override any specific UserID, Password specified below + conn.ConnectionString := Format('Server=localhost;Database=Northwind;AuxDriver=SQLOLEDB.1;UserID=%s;Password=%s;', [eUserID.Text, ePassword.Text]); + conn.Open; + finally + if (Conn <> nil) and conn.Connected then begin + Log(TButton(Sender).Caption + ': Connection successful'); + log('Connection via "' + conn.ConnectionString + '"'); + end + else begin + Log(TButton(Sender).Caption + ': Connection failed'); + end; + end; +end; + +procedure TConnectionByUserMainForm.AcquireHoldButtonClick(Sender: TObject); +const + MySessionID: TGUID = '{2B0ABD74-465A-45A6-AAD7-837709A66DB9}'; +var + session: TROSession; + conn: IDAConnection; +begin + + conn := DAConnectionManager.NewConnection('ADOComplete'); + + with ROSessionManager do try + session := CreateSession(MySessionID); + + // #1: How to store IDAConnections in RO sessions ---------------------------------------- + conn._AddRef; // We increment its ref count because we want it locked by the session + session.Values['MyADOConnection'] := integer(conn); + // End of #1 ----------------------------------------------------------------------------- + + conn := nil; // We set it to NIL to simulate what would happen in a real RO Datamodule when the vars get out of scope + ReleaseSession(session, TRUE); +{$WARNINGS OFF} + session := nil; // Just to simulate real re-initialization +{$WARNINGS ON} + session := FindSession(MySessionID); + + // #2: How to get IDAConnections from RO Sessions ---------------------------------------- + try + conn := IDAConnection(pointer(integer(session.Values['MyADOConnection']))); + finally + if (Conn <> nil) and conn.Connected then begin + Log(TButton(Sender).Caption + ': Connection successful'); + log('Connection via "' + conn.ConnectionString + '"'); + end + else begin + Log(TButton(Sender).Caption + ': Connection failed'); + end; + end; + + // End of #2 ----------------------------------------------------------------------------- + + // #3: How to finally release the connection from the session. This should be done when you ------ + // want to get rid of the connection for good... + conn.Close; // Optional. Implicit when it gets freed + conn._Release; // Removes the lock we imposed on the connection at the very beginning + // End of #3 ------------------------------------------------------------------------------------- + + conn := nil; // This is only useful in this example because the ref count is still held up to one by the local "conn" variable. + + finally + DeleteSession(MySessionID, FALSE); // This is what the RO session manager does for you, so ignore this too + end; +end; + +procedure TConnectionByUserMainForm.Log(Str: string); +begin + Memo.Lines.Add(Str); +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection Pooling/ConnectionPooling.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection Pooling/ConnectionPooling.Sample.html new file mode 100644 index 0000000..f4e1e4c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection Pooling/ConnectionPooling.Sample.html @@ -0,0 +1,34 @@ + + + + + + + + + +

+ Connection Pooling +

+ + +

Purpose

+

+ Shows how connections can be managed via a pool (ADO/Northwind & IBX/Employee + connections). +

+

+ Use the three pairs of Acquire/Release connection buttons to experiment + with pooling. Note how connections timeout later than the Release call and how + the delay + depends on the selected PoolTimeoutSeconds value selected via the + track bar. +

+

+ Examine the code in ConnectionPoolingMain - you will see that it is minimal - all one + or two liners. +

+ + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection Pooling/ConnectionPooling.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection Pooling/ConnectionPooling.bdsproj new file mode 100644 index 0000000..557c349 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection Pooling/ConnectionPooling.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + ConnectionPooling.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection Pooling/ConnectionPooling.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection Pooling/ConnectionPooling.dpr new file mode 100644 index 0000000..90d1fad --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection Pooling/ConnectionPooling.dpr @@ -0,0 +1,14 @@ +program ConnectionPooling; + +uses + Forms, + ConnectionPoolingMain in 'ConnectionPoolingMain.pas' {ConnectionPoolingMainForm}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'ConnectionPooling'; + Application.CreateForm(TConnectionPoolingMainForm, ConnectionPoolingMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection Pooling/ConnectionPooling.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection Pooling/ConnectionPooling.dproj new file mode 100644 index 0000000..5559d22 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection Pooling/ConnectionPooling.dproj @@ -0,0 +1,72 @@ + + + {1087a4d3-a1bb-4f0d-8193-c91d9ddf3a55} + ConnectionPooling.dpr + Debug + AnyCPU + DCC32 + ConnectionPooling.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + ConnectionPooling.dpr + + + + + + + MainSource + + +
ConnectionPoolingMainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection Pooling/ConnectionPooling.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection Pooling/ConnectionPooling.res new file mode 100644 index 0000000..b946fbb Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection Pooling/ConnectionPooling.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection Pooling/ConnectionPoolingMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection Pooling/ConnectionPoolingMain.dfm new file mode 100644 index 0000000..05e22e2 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection Pooling/ConnectionPoolingMain.dfm @@ -0,0 +1,166 @@ +object ConnectionPoolingMainForm: TConnectionPoolingMainForm + Left = 392 + Top = 182 + AutoScroll = False + BorderWidth = 5 + Caption = 'Connection Pooling' + ClientHeight = 323 + ClientWidth = 365 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + OnDestroy = FormDestroy + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 3 + Top = 0 + Width = 102 + Height = 13 + Caption = 'Selected Connection:' + end + object lPoolTimeoutSeconds: TLabel + Left = 3 + Top = 48 + Width = 113 + Height = 13 + Caption = 'PoolTimeoutSeconds: 5' + end + object Acquire1Button: TButton + Left = 208 + Top = 0 + Width = 75 + Height = 25 + Caption = '&Acquire #1' + TabOrder = 0 + OnClick = Acquire1ButtonClick + end + object cbConnections: TComboBox + Left = 3 + Top = 18 + Width = 193 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 1 + end + object Release1Button: TButton + Left = 288 + Top = 0 + Width = 75 + Height = 25 + Caption = '&Release #1' + TabOrder = 2 + OnClick = Release1ButtonClick + end + object Memo: TMemo + Left = 0 + Top = 97 + Width = 365 + Height = 226 + Anchors = [akLeft, akTop, akRight, akBottom] + ScrollBars = ssVertical + TabOrder = 3 + end + object Acquire2Button: TButton + Left = 208 + Top = 32 + Width = 75 + Height = 25 + Caption = '&Acquire #2' + TabOrder = 4 + OnClick = Acquire2ButtonClick + end + object Release2Button: TButton + Left = 288 + Top = 32 + Width = 75 + Height = 25 + Caption = '&Release #2' + TabOrder = 5 + OnClick = Release2ButtonClick + end + object Acquire3Button: TButton + Left = 208 + Top = 64 + Width = 75 + Height = 25 + Caption = '&Acquire #3' + TabOrder = 6 + OnClick = Acquire3ButtonClick + end + object Release3Button: TButton + Left = 288 + Top = 64 + Width = 75 + Height = 25 + Caption = '&Release #3' + TabOrder = 7 + OnClick = Release3ButtonClick + end + object TrackBar: TTrackBar + Left = -4 + Top = 64 + Width = 208 + Height = 30 + Max = 20 + Min = 1 + Orientation = trHorizontal + ParentShowHint = False + PageSize = 1 + Frequency = 1 + Position = 5 + SelEnd = 0 + SelStart = 0 + ShowHint = True + TabOrder = 8 + TickMarks = tmBottomRight + TickStyle = tsAuto + OnChange = TrackBarChange + end + object DAConnectionManager: TDAConnectionManager + PoolTimeoutSeconds = 5 + OnConnectionTimedOut = DAConnectionManagerConnectionTimedOut + OnConnectionCreated = DAConnectionManagerConnectionCreated + Connections = < + item + Name = 'MSSQL' + ConnectionString = + 'ADO?AuxDriver=SQLOLEDB.1;Server=localhost;Database=Northwind;Int' + + 'egrated Security=SSPI;' + Description = 'Microsoft SQL Server Northwind Connection' + Default = True + Tag = 0 + end + item + Name = 'IBEmployees' + ConnectionString = + 'IBX?Server=;UserID=sysdba;Password=masterkey;Database=C:\Program' + + ' Files\Borland\InterBase\examples\Database\Employee.gdb' + Description = 'Borland Interbase Employee Connection' + Default = False + Tag = 0 + end> + DriverManager = DADriverManager + PoolingEnabled = True + Left = 48 + Top = 112 + end + object DADriverManager: TDADriverManager + DriverDirectory = '%MODULE%\' + TraceActive = False + TraceFlags = [] + Left = 16 + Top = 112 + end + object DAADODriver: TDAADODriver + Left = 16 + Top = 144 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection Pooling/ConnectionPoolingMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection Pooling/ConnectionPoolingMain.pas new file mode 100644 index 0000000..fb442ab --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Connection Pooling/ConnectionPoolingMain.pas @@ -0,0 +1,152 @@ +unit ConnectionPoolingMain; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uDADriverManager, uDAClasses, StdCtrls, uDAInterfaces, + uDAIBXDriver, uDAEngine, uDAADODriver, ExtCtrls, ComCtrls; + +type + TConnectionPoolingMainForm = class(TForm) + DADriverManager: TDADriverManager; + DAConnectionManager: TDAConnectionManager; + Acquire1Button: TButton; + cbConnections: TComboBox; + DAADODriver: TDAADODriver; + Release1Button: TButton; + Memo: TMemo; + Acquire2Button: TButton; + Release2Button: TButton; + Acquire3Button: TButton; + Release3Button: TButton; + Label1: TLabel; + TrackBar: TTrackBar; + lPoolTimeoutSeconds: TLabel; + procedure FormCreate(Sender: TObject); + procedure Acquire1ButtonClick(Sender: TObject); + procedure Release1ButtonClick(Sender: TObject); + procedure Acquire2ButtonClick(Sender: TObject); + procedure Acquire3ButtonClick(Sender: TObject); + procedure Release2ButtonClick(Sender: TObject); + procedure Release3ButtonClick(Sender: TObject); + procedure DAConnectionManagerConnectionAcquired( + Sender: TDAConnectionManager; const Connection: IDAConnection); + procedure DAConnectionManagerConnectionCreated( + Sender: TDAConnectionManager; const Connection: IDAConnection); + procedure DAConnectionManagerConnectionTimedOut( + Sender: TDAConnectionManager); + procedure TrackBarChange(Sender: TObject); + procedure FormDestroy(Sender: TObject); + private + fConnection, + fConnection2, + fConnection3: IDAConnection; + procedure Log(Str: string); + public + + end; + +var + ConnectionPoolingMainForm: TConnectionPoolingMainForm; + +implementation + +{$R *.dfm} + +procedure TConnectionPoolingMainForm.FormCreate(Sender: TObject); +var + i: integer; +begin + for i := 0 to (DAConnectionManager.Connections.Count - 1) do + cbConnections.Items.Add(DAConnectionManager.Connections[i].Name); + + cbConnections.ItemIndex := 0; +end; + +procedure TConnectionPoolingMainForm.Acquire1ButtonClick(Sender: TObject); +begin + if not assigned(fConnection) then begin + fConnection := DAConnectionManager.NewConnection(cbConnections.Text); + Log('Connection #1 acquired...'); + end; +end; + +procedure TConnectionPoolingMainForm.Release1ButtonClick(Sender: TObject); +begin + if assigned(fConnection) then begin + fConnection := nil; + Log('Connection #1 released'); + end; +end; + +procedure TConnectionPoolingMainForm.Acquire2ButtonClick(Sender: TObject); +begin + if not assigned(fConnection2) then begin + fConnection2 := DAConnectionManager.NewConnection(cbConnections.Text); + Log('Connection #2 acquired...'); + end; +end; + +procedure TConnectionPoolingMainForm.Acquire3ButtonClick(Sender: TObject); +begin + if not assigned(fConnection3) then begin + fConnection3 := DAConnectionManager.NewConnection(cbConnections.Text); + Log('Connection #3 acquired...'); + end; +end; + +procedure TConnectionPoolingMainForm.Release2ButtonClick(Sender: TObject); +begin + if assigned(fConnection2) then begin + fConnection2 := nil; + Log('Connection #2 released'); + end; +end; + +procedure TConnectionPoolingMainForm.Release3ButtonClick(Sender: TObject); +begin + if assigned(fConnection3) then begin + fConnection3 := nil; + Log('Connection #3 released'); + end; +end; + +procedure TConnectionPoolingMainForm.DAConnectionManagerConnectionAcquired( + Sender: TDAConnectionManager; const Connection: IDAConnection); +begin + Log('EVENT -> Connection acquired from the pool at ' + TimeToStr(Now)); +end; + +procedure TConnectionPoolingMainForm.DAConnectionManagerConnectionCreated( + Sender: TDAConnectionManager; const Connection: IDAConnection); +begin + Log('EVENT -> New connection created at ' + TimeToStr(Now)); +end; + +procedure TConnectionPoolingMainForm.DAConnectionManagerConnectionTimedOut( + Sender: TDAConnectionManager); +begin + Log('EVENT -> A connection timed out at ' + TimeToStr(Now)); +end; + +procedure TConnectionPoolingMainForm.TrackBarChange(Sender: TObject); +begin + DAConnectionManager.PoolTimeoutSeconds := TrackBar.Position; + lPoolTimeoutSeconds.Caption := Format('PoolTimeoutSeconds: %d', [TrackBar.Position]); +end; + +procedure TConnectionPoolingMainForm.Log(Str: string); +begin + Memo.Lines.Add(Str); +end; + +procedure TConnectionPoolingMainForm.FormDestroy(Sender: TObject); +begin + fConnection:=nil; + fConnection2:=nil; + fConnection3:=nil; +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Custom User Logon/CustomUserLogon.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/Custom User Logon/CustomUserLogon.Sample.html new file mode 100644 index 0000000..40cb0e3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Custom User Logon/CustomUserLogon.Sample.html @@ -0,0 +1,50 @@ + + + + + + + + + +

+ Custom User Logon +

+ + +

Purpose

+

+ A very simple example showing two methods of opening a connection at runtime. +

+ +

+ The example uses DAConnectionManager.Connections[0] as the connection + it opens. Examining its ConnectionString value via the Object Inspector, + you will see that it is set to: +

+

+   +

+

+ ADO?Server=localhost;UserID=sa;AuxDriver=SQLOLEDB.1;Database=Northwind +

+

+   +

+

+ Modify it as needed to access a different database. See FAQ37 + for examples of connection strings. +

+ + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Custom User Logon/CustomUserLogon.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Custom User Logon/CustomUserLogon.bdsproj new file mode 100644 index 0000000..8f5cb42 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Custom User Logon/CustomUserLogon.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + CustomUserLogon.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Custom User Logon/CustomUserLogon.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Custom User Logon/CustomUserLogon.dpr new file mode 100644 index 0000000..d837771 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Custom User Logon/CustomUserLogon.dpr @@ -0,0 +1,14 @@ +program CustomUserLogon; + +uses + Forms, + CustomUserLogonMain in 'CustomUserLogonMain.pas' {CustomUserLogonMainForm}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'CustomUserLogon'; + Application.CreateForm(TCustomUserLogonMainForm, CustomUserLogonMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Custom User Logon/CustomUserLogon.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Custom User Logon/CustomUserLogon.dproj new file mode 100644 index 0000000..e42accf --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Custom User Logon/CustomUserLogon.dproj @@ -0,0 +1,36 @@ + + + {ec6ab974-9d80-4b73-9f09-b3948cbfef67} + CustomUserLogon.dpr + Debug + AnyCPU + DCC32 + CustomUserLogon.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + +FalseTrueFalseFalseFalse1000FalseFalseFalseFalseFalse105812511.0.0.01.0.0.0CustomUserLogon.dpr + + + + + MainSource + + +
CustomUserLogonMainForm
+
+
+
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Custom User Logon/CustomUserLogon.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Custom User Logon/CustomUserLogon.res new file mode 100644 index 0000000..b946fbb Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Custom User Logon/CustomUserLogon.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Custom User Logon/CustomUserLogonMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Custom User Logon/CustomUserLogonMain.dfm new file mode 100644 index 0000000..f6890e8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Custom User Logon/CustomUserLogonMain.dfm @@ -0,0 +1,107 @@ +object TCustomUserLogonMainForm + Left = 294 + Top = 99 + BorderStyle = bsDialog + Caption = 'Custom User Logon' + ClientHeight = 158 + ClientWidth = 207 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object GroupBox1: TGroupBox + Left = 8 + Top = 7 + Width = 191 + Height = 81 + Caption = 'User Info' + TabOrder = 0 + object Label1: TLabel + Left = 21 + Top = 28 + Width = 36 + Height = 13 + Caption = 'UserID:' + end + object Label2: TLabel + Left = 8 + Top = 52 + Width = 49 + Height = 13 + Caption = 'Password:' + end + object eUserID: TEdit + Left = 62 + Top = 24 + Width = 121 + Height = 21 + TabOrder = 0 + Text = 'sa' + end + object ePassword: TEdit + Left = 62 + Top = 48 + Width = 121 + Height = 21 + TabOrder = 1 + end + end + object Open1Button: TButton + Left = 20 + Top = 95 + Width = 167 + Height = 25 + Caption = 'Open Connection (1st way)' + Default = True + TabOrder = 1 + OnClick = Open1ButtonClick + end + object Open2Button: TButton + Left = 20 + Top = 127 + Width = 167 + Height = 25 + Caption = 'Open Connection (2nd way)' + Default = True + TabOrder = 2 + OnClick = Open2ButtonClick + end + object DADriverManager: TDADriverManager + DriverDirectory = '%SYSTEM%\' + AutoLoad = False + TraceActive = False + TraceFlags = [] + Left = 120 + Top = 40 + end + object DAConnectionManager: TDAConnectionManager + MaxPoolSize = 10 + PoolTimeoutSeconds = 60 + PoolBehaviour = pbWait + WaitIntervalSeconds = 1 + Connections = < + item + Name = 'ADO' + ConnectionString = + 'ADO?Server=localhost;UserID=sa;AuxDriver=SQLOLEDB.1;Database=Nor' + + 'thwind' + Description = 'Borland ADOExpress Connection' + Default = True + Tag = 0 + end> + DriverManager = DADriverManager + PoolingEnabled = False + Left = 152 + Top = 40 + end + object DAADODriver: TDAADODriver + Left = 32 + Top = 88 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Custom User Logon/CustomUserLogonMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Custom User Logon/CustomUserLogonMain.pas new file mode 100644 index 0000000..d11ce41 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Custom User Logon/CustomUserLogonMain.pas @@ -0,0 +1,57 @@ +unit CustomUserLogonMain; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uDAClasses, uDADriverManager, StdCtrls, uDAIBXDriver, + uDAEngine, uDAADODriver; + +type + TCustomUserLogonMainForm = class(TForm) + DADriverManager: TDADriverManager; + DAConnectionManager: TDAConnectionManager; + GroupBox1: TGroupBox; + Open1Button: TButton; + eUserID: TEdit; + ePassword: TEdit; + Label1: TLabel; + Label2: TLabel; + DAADODriver: TDAADODriver; + Open2Button: TButton; + procedure Open1ButtonClick(Sender: TObject); + procedure Open2ButtonClick(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + CustomUserLogonMainForm: TCustomUserLogonMainForm; + +implementation + +{$R *.dfm} + +uses uDAInterfaces; + +procedure TCustomUserLogonMainForm.Open1ButtonClick(Sender: TObject); +var + conn: IDAConnection; +begin + conn := DAConnectionManager.NewConnection(DAConnectionManager.Connections[0].Name, TRUE, eUserID.Text, ePassword.Text); + MessageDlg('Connection created!', mtInformation, [mbOK], 0); +end; + +procedure TCustomUserLogonMainForm.Open2ButtonClick(Sender: TObject); +var + conn: IDAConnection; +begin + conn := DAConnectionManager.NewConnection(DAConnectionManager.Connections[0].Name, FALSE); + conn.Open(eUserID.Text, ePassword.Text); + MessageDlg('Connection created!', mtInformation, [mbOK], 0); +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/DataStreamersMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/DataStreamersMain.dfm new file mode 100644 index 0000000..22a899e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/DataStreamersMain.dfm @@ -0,0 +1,728 @@ +object DataStreamersMainForm: TDataStreamersMainForm + Left = 221 + Top = 146 + BorderWidth = 5 + Caption = 'DataStreamers Tester' + ClientHeight = 517 + ClientWidth = 611 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + OnDestroy = FormDestroy + PixelsPerInch = 96 + TextHeight = 13 + object gCustomers: TDBGrid + Left = 0 + Top = 228 + Width = 611 + Height = 91 + Align = alClient + DataSource = dsCustomers + TabOrder = 0 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object gOrders: TDBGrid + Left = 0 + Top = 354 + Width = 611 + Height = 163 + Align = alBottom + DataSource = dsOrders + TabOrder = 1 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object Panel1: TPanel + Left = 0 + Top = 319 + Width = 611 + Height = 35 + Align = alBottom + BevelOuter = bvNone + TabOrder = 2 + object dbnOrders: TDBNavigator + Left = 240 + Top = 5 + Width = 240 + Height = 25 + DataSource = dsOrders + TabOrder = 0 + end + object btn_OpenOrders: TButton + Left = 152 + Top = 5 + Width = 75 + Height = 25 + Caption = 'Open/Close' + TabOrder = 1 + OnClick = btn_OpenOrdersClick + end + object cbApplyOrdersSchema: TCheckBox + Left = 4 + Top = 9 + Width = 133 + Height = 17 + Caption = 'Apply Orders Schema' + Checked = True + State = cbChecked + TabOrder = 2 + end + end + object Panel2: TPanel + Left = 0 + Top = 193 + Width = 611 + Height = 35 + Align = alTop + BevelOuter = bvNone + TabOrder = 3 + object cbApplyCustomersSchema: TCheckBox + Left = 4 + Top = 9 + Width = 141 + Height = 17 + Caption = 'Apply Customers Schema' + Checked = True + State = cbChecked + TabOrder = 0 + end + object btn_OpenCustomers: TButton + Left = 160 + Top = 5 + Width = 75 + Height = 25 + Caption = 'Open/Close' + TabOrder = 1 + OnClick = btn_OpenCustomersClick + end + object dbnCustomers: TDBNavigator + Left = 248 + Top = 5 + Width = 240 + Height = 25 + DataSource = dsCustomers + TabOrder = 2 + end + end + object Panel3: TPanel + Left = 0 + Top = 0 + Width = 611 + Height = 193 + Align = alTop + BevelOuter = bvNone + Caption = 'Panel3' + TabOrder = 4 + object Panel4: TPanel + Left = 346 + Top = 0 + Width = 265 + Height = 193 + Align = alRight + BevelOuter = bvNone + TabOrder = 0 + object btn_TestDatasets: TButton + Left = 8 + Top = 75 + Width = 129 + Height = 25 + Caption = 'Test Datasets' + TabOrder = 0 + OnClick = btn_TestDatasetsClick + end + object cbSkipCustomers: TCheckBox + Left = 8 + Top = 40 + Width = 97 + Height = 17 + Caption = 'Skip Customers' + TabOrder = 1 + end + object cbSkipOrders: TCheckBox + Left = 8 + Top = 56 + Width = 97 + Height = 17 + Caption = 'Skip Orders' + TabOrder = 2 + end + object btn_TurnMD: TButton + Left = 8 + Top = 139 + Width = 129 + Height = 25 + Caption = 'Turn M/D on/off' + TabOrder = 3 + OnClick = btn_TurnMDClick + end + object cbCloseBeforeTest: TCheckBox + Left = 8 + Top = 11 + Width = 113 + Height = 17 + Caption = 'Close Before Test' + Checked = True + State = cbChecked + TabOrder = 4 + end + object btn_ShowDeltaCounters: TButton + Left = 8 + Top = 168 + Width = 129 + Height = 25 + Caption = 'Show Delta Counters' + TabOrder = 5 + OnClick = btn_ShowDeltaCountersClick + end + object btn_TestDeltas: TButton + Left = 8 + Top = 107 + Width = 129 + Height = 25 + Caption = 'Test Deltas' + TabOrder = 6 + OnClick = btn_TestDeltasClick + end + object btn_ClearMemo: TButton + Left = 144 + Top = 168 + Width = 97 + Height = 25 + Caption = 'Clear Memo' + TabOrder = 7 + OnClick = btn_ClearMemoClick + end + end + object Memo: TMemo + Left = 0 + Top = 0 + Width = 346 + Height = 193 + Align = alClient + ScrollBars = ssVertical + TabOrder = 1 + end + end + object DADriverManager: TDADriverManager + DriverDirectory = '%SYSTEM%\' + TraceActive = False + TraceFlags = [] + Left = 16 + Top = 8 + end + object DAConnectionManager: TDAConnectionManager + Connections = < + item + Name = 'ADO' + ConnectionString = + 'ADO?Server=localhost;Database=Northwind;UserID=sa;AuxDriver=SQLO' + + 'LEDB.1;password=;' + Default = True + Tag = 0 + end> + DriverManager = DADriverManager + PoolingEnabled = True + Left = 80 + Top = 8 + end + object DASchema: TDASchema + ConnectionManager = DAConnectionManager + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Customers' + SQL = + 'SELECT '#10' CustomerID, CompanyName, ContactName, ContactTitle, ' + + #10' Address, City, Region, PostalCode, Country, Phone, '#10' Fax' + + #10' FROM'#10' Customers' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'CompanyName' + TableField = 'CompanyName' + end + item + DatasetField = 'ContactName' + TableField = 'ContactName' + end + item + DatasetField = 'ContactTitle' + TableField = 'ContactTitle' + end + item + DatasetField = 'Address' + TableField = 'Address' + end + item + DatasetField = 'City' + TableField = 'City' + end + item + DatasetField = 'Region' + TableField = 'Region' + end + item + DatasetField = 'PostalCode' + TableField = 'PostalCode' + end + item + DatasetField = 'Country' + TableField = 'Country' + end + item + DatasetField = 'Phone' + TableField = 'Phone' + end + item + DatasetField = 'Fax' + TableField = 'Fax' + end> + end> + Name = 'Customers' + Fields = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CompanyName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactName' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactTitle' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Address' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Region' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Country' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Phone' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Fax' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Orders' + SQL = + 'SELECT '#10' OrderID, CustomerID, EmployeeID, OrderDate, Required' + + 'Date, '#10' ShippedDate, ShipVia, Freight, ShipName, ShipAddress,' + + ' '#10' ShipCity, ShipRegion, ShipPostalCode, ShipCountry'#10' FROM'#10' ' + + ' Orders' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'OrderID' + TableField = 'OrderID' + end + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'EmployeeID' + TableField = 'EmployeeID' + end + item + DatasetField = 'OrderDate' + TableField = 'OrderDate' + end + item + DatasetField = 'RequiredDate' + TableField = 'RequiredDate' + end + item + DatasetField = 'ShippedDate' + TableField = 'ShippedDate' + end + item + DatasetField = 'ShipVia' + TableField = 'ShipVia' + end + item + DatasetField = 'Freight' + TableField = 'Freight' + end + item + DatasetField = 'ShipName' + TableField = 'ShipName' + end + item + DatasetField = 'ShipAddress' + TableField = 'ShipAddress' + end + item + DatasetField = 'ShipCity' + TableField = 'ShipCity' + end + item + DatasetField = 'ShipRegion' + TableField = 'ShipRegion' + end + item + DatasetField = 'ShipPostalCode' + TableField = 'ShipPostalCode' + end + item + DatasetField = 'ShipCountry' + TableField = 'ShipCountry' + end> + end> + Name = 'Orders' + Fields = < + item + Name = 'OrderID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EmployeeID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OrderDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RequiredDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShippedDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipVia' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Freight' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipAddress' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCity' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipRegion' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipPostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCountry' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = <> + RelationShips = <> + UpdateRules = <> + Left = 48 + Top = 8 + end + object DAADODriver: TDAADODriver + Left = 112 + Top = 8 + end + object dtCustomers: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 276 + Top = 27 + end + object dsCustomers: TDADataSource + DataSet = dtCustomers.Dataset + DataTable = dtCustomers + Left = 292 + Top = 43 + end + object dtOrders: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 340 + Top = 27 + end + object dsOrders: TDADataSource + DataSet = dtOrders.Dataset + DataTable = dtOrders + Left = 356 + Top = 43 + end + object DABinDataStreamer: TDABinDataStreamer + Left = 146 + Top = 8 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/DataStreamersMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/DataStreamersMain.pas new file mode 100644 index 0000000..4cc3fb9 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/DataStreamersMain.pas @@ -0,0 +1,240 @@ +unit DataStreamersMain; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, DB, Grids, DBGrids, ExtCtrls, DBCtrls, + uDADataTable, uDABINAdapter, uDAClasses, uDADriverManager, uDAInterfaces, + uDADataStreamer, uDAScriptingProvider, uDACDSDataTable, uDAEngine, + uDAADODriver; + +type + TDataStreamersMainForm = class(TForm) + DADriverManager: TDADriverManager; + DAADODriver: TDAADODriver; + DAConnectionManager: TDAConnectionManager; + dtCustomers: TDACDSDataTable; + dsCustomers: TDADataSource; + gCustomers: TDBGrid; + dtOrders: TDACDSDataTable; + dsOrders: TDADataSource; + gOrders: TDBGrid; + Panel1: TPanel; + dbnOrders: TDBNavigator; + btn_OpenOrders: TButton; + cbApplyOrdersSchema: TCheckBox; + Panel2: TPanel; + cbApplyCustomersSchema: TCheckBox; + btn_OpenCustomers: TButton; + dbnCustomers: TDBNavigator; + Panel3: TPanel; + Panel4: TPanel; + btn_TestDatasets: TButton; + cbSkipCustomers: TCheckBox; + cbSkipOrders: TCheckBox; + btn_TurnMD: TButton; + cbCloseBeforeTest: TCheckBox; + btn_ShowDeltaCounters: TButton; + btn_TestDeltas: TButton; + btn_ClearMemo: TButton; + Memo: TMemo; + DASchema: TDASchema; + DABinDataStreamer: TDABinDataStreamer; + procedure FormCreate(Sender: TObject); + procedure btn_TestDatasetsClick(Sender: TObject); + procedure btn_OpenCustomersClick(Sender: TObject); + procedure btn_OpenOrdersClick(Sender: TObject); + procedure btn_TurnMDClick(Sender: TObject); + procedure btn_ShowDeltaCountersClick(Sender: TObject); + procedure btn_TestDeltasClick(Sender: TObject); + procedure btn_ClearMemoClick(Sender: TObject); + procedure FormDestroy(Sender: TObject); + private + fConnection: IDAConnection; + end; + +var + DataStreamersMainForm: TDataStreamersMainForm; + +implementation + +uses uROTypes, uDADelta; + +{$R *.dfm} + +procedure TDataStreamersMainForm.FormCreate(Sender: TObject); +begin + fConnection := DAConnectionManager.NewConnection('ADO'); +end; + +procedure TDataStreamersMainForm.FormDestroy(Sender: TObject); +begin +fConnection:=nil; +end; + +procedure TDataStreamersMainForm.btn_TestDatasetsClick(Sender: TObject); +var + stream: Binary; + customers, + orders: IDADataset; + i: integer; + start: Cardinal; +begin + if cbCloseBeforeTest.Checked then begin + dtCustomers.Close; + dtOrders.Close; + end; + + stream := Binary.Create; + + with DABinDataStreamer do try + customers := DASchema.NewDataset(fConnection, 'Customers'); + //customers.Where.AddText(' 1=2'); + orders := DASchema.NewDataset(fConnection, 'Orders'); + //orders.Where.AddText(' 1=2'); + + start := GetTickCount; + + // Writes the data + Initialize(stream, aiWrite); + if not cbSkipCustomers.Checked then WriteDataset(customers, [woSchema, woRows], -1); + + if not cbSkipOrders.Checked then WriteDataset(orders, [woRows, woSchema], -1); + Finalize; + // End of write data + + Memo.Lines.Add('WRITE completed in ' + IntToStr(GetTickCount - start) + 'ms'); + + // Logging info + Memo.Lines.Add('Stream is now ' + IntToStr(stream.Size) + ' bytes long'); + + start := GetTickCount; + Initialize(stream, aiReadFromBeginning); + + // Reads the data + if not cbSkipCustomers.Checked then begin + if cbApplyCustomersSchema.Checked then + ReadDataset('Customers', dtCustomers, TRUE) + else + ReadDataset('Customers', dtCustomers); + end; + + if not cbSkipOrders.Checked then begin + if cbApplyOrdersSchema.Checked then + ReadDataset('Orders', dtOrders, TRUE) + else + ReadDataset('Orders', dtOrders); + end; + + Finalize; + + // End of read data + Memo.Lines.Add('READ completed in ' + IntToStr(GetTickCount - start) + 'ms'); + + // Logging info + Memo.Lines.Add('The stream contains ' + IntToStr(DatasetCount) + ' datasets and ' + IntToStr(DeltaCount) + ' deltas'); + for i := 0 to (DatasetCount - 1) do Memo.Lines.Add('Dataset -> ' + DatasetNames[i]); + for i := 0 to (DeltaCount - 1) do Memo.Lines.Add('Delta -> ' + DeltaNames[i]); + Memo.Lines.Add(' '); + finally + stream.Free; + end; +end; + +procedure TDataStreamersMainForm.btn_OpenCustomersClick(Sender: TObject); +begin + dtCustomers.Active := dtCustomers.Active xor TRUE; +end; + +procedure TDataStreamersMainForm.btn_OpenOrdersClick(Sender: TObject); +begin + dtOrders.Active := dtOrders.Active xor TRUE +end; + +procedure TDataStreamersMainForm.btn_TurnMDClick(Sender: TObject); +begin + if dtOrders.MasterSource = nil then begin + dtOrders.MasterFields := 'CustomerID'; + dtOrders.DetailFields := 'CustomerID'; + dtOrders.MasterSource := dsCustomers; + end + + else begin + dtOrders.MasterSource := nil; + dtOrders.MasterFields := ''; + dtOrders.DetailFields := ''; + end; + + btn_TestDatasets.Enabled := dtOrders.MasterSource = nil; +end; + +procedure TDataStreamersMainForm.btn_ShowDeltaCountersClick(Sender: TObject); +begin + ShowMessage(Format('Changes: Customers %d, Orders %d', [dtCustomers.Delta.Count, dtOrders.Delta.Count])); +end; + +procedure TDataStreamersMainForm.btn_TestDeltasClick(Sender: TObject); +var + stream: TStream; + i: integer; + orddelta, + custdelta: TDADelta; +begin + if not dtCustomers.Active or not dtOrders.Active then begin + MessageDlg('Both datatables must be open!', mtError, [mbOK], 0); + Exit; + end; + + stream := TMemoryStream.Create; + + custdelta := TDADelta.Create(dtCustomers); + orddelta := TDADelta.Create(dtOrders); + with DABinDataStreamer do try + // Writes the data + Initialize(stream, aiWrite); + if not cbSkipCustomers.Checked then WriteDelta(dtCustomers); + + if not cbSkipOrders.Checked then WriteDelta(dtOrders); + Finalize; + // End of write data + + // Logging info + Memo.Lines.Add('Stream is now ' + IntToStr(stream.Size) + ' bytes long'); + + Initialize(stream, aiReadFromBeginning); + + // Reads the data + if not cbSkipCustomers.Checked then begin + ReadDelta('dtCustomers', custdelta); + Memo.Lines.Add('Customers delta contains ' + IntToStr(custdelta.Count) + ' changes'); + end; + + if not cbSkipOrders.Checked then begin + ReadDelta('dtOrders', orddelta); + Memo.Lines.Add('Orders delta contains ' + IntToStr(orddelta.Count) + ' changes'); + end; + + Finalize; + + // Logging info + Memo.Lines.Add('The stream contains ' + IntToStr(DatasetCount) + ' datasets and ' + IntToStr(DeltaCount) + ' deltas'); + for i := 0 to (DatasetCount - 1) do Memo.Lines.Add('Dataset -> ' + DatasetNames[i]); + for i := 0 to (DeltaCount - 1) do Memo.Lines.Add('Delta -> ' + DeltaNames[i]); + Memo.Lines.Add(' '); + + finally + stream.Free; + + custdelta.Free; + orddelta.Free; + end; +end; + +procedure TDataStreamersMainForm.btn_ClearMemoClick(Sender: TObject); +begin + Memo.Lines.Clear; +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/DataStreamersTest.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/DataStreamersTest.Sample.html new file mode 100644 index 0000000..1babacb --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/DataStreamersTest.Sample.html @@ -0,0 +1,19 @@ + + + + + + + + + +

Data Streamers Sample


+

This example shows how a dataset can be written to a stream and read from it using the TDABinDataStreamer class.

+

When you compile and launch this example it displays two grids, the sources for which are datasets dynamically read using TStream.

+

Modify some data in the grids.

+

When you press the "Test Deltas" button, it shows the size of the delta containing the data to update the dataset.

+

The "Turn M/D on/off" button toggles the top grid as the master source for the bottom grid.

+ + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/DataStreamersTest.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/DataStreamersTest.bdsproj new file mode 100644 index 0000000..9a4eae0 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/DataStreamersTest.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + DataStreamersTest.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/DataStreamersTest.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/DataStreamersTest.dpr new file mode 100644 index 0000000..d388589 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/DataStreamersTest.dpr @@ -0,0 +1,14 @@ +program DataStreamersTest; + +uses + Forms, + DataStreamersMain in 'DataStreamersMain.pas' {DataStreamersMainForm}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'Adapters Test'; + Application.CreateForm(TDataStreamersMainForm, DataStreamersMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/DataStreamersTest.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/DataStreamersTest.dproj new file mode 100644 index 0000000..e5ff5da --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/DataStreamersTest.dproj @@ -0,0 +1,72 @@ + + + {0d9a7452-75b7-4181-9053-aa039d95be41} + DataStreamersTest.dpr + Debug + AnyCPU + DCC32 + DataStreamersTest.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + DataStreamersTest.dpr + + + + + + + MainSource + + +
DataStreamersMainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/DataStreamersTest.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/DataStreamersTest.res new file mode 100644 index 0000000..6a1db77 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/DataStreamersTest.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/fMainForm.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/fMainForm.dfm new file mode 100644 index 0000000..3e0a9f4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/fMainForm.dfm @@ -0,0 +1,730 @@ +object Form1: TForm1 + Left = 70 + Top = 51 + Width = 807 + Height = 632 + BorderWidth = 5 + Caption = 'DataStream Tester' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object DBGrid1: TDBGrid + Left = 0 + Top = 228 + Width = 789 + Height = 163 + Align = alClient + DataSource = dsCustomers + TabOrder = 0 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object DBGrid2: TDBGrid + Left = 0 + Top = 426 + Width = 789 + Height = 163 + Align = alBottom + DataSource = dsOrders + TabOrder = 1 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object Panel1: TPanel + Left = 0 + Top = 391 + Width = 789 + Height = 35 + Align = alBottom + BevelOuter = bvNone + TabOrder = 2 + object DBNavigator2: TDBNavigator + Left = 240 + Top = 5 + Width = 240 + Height = 25 + DataSource = dsOrders + TabOrder = 0 + end + object Button3: TButton + Left = 152 + Top = 5 + Width = 75 + Height = 25 + Caption = 'Open/Close' + TabOrder = 1 + OnClick = Button3Click + end + object cbApplyOrdersSchema: TCheckBox + Left = 4 + Top = 9 + Width = 133 + Height = 17 + Caption = 'Apply Orders Schema' + Checked = True + State = cbChecked + TabOrder = 2 + end + end + object Panel2: TPanel + Left = 0 + Top = 193 + Width = 789 + Height = 35 + Align = alTop + BevelOuter = bvNone + TabOrder = 3 + object cbApplyCustomersSchema: TCheckBox + Left = 4 + Top = 9 + Width = 141 + Height = 17 + Caption = 'Apply Customers Schema' + Checked = True + State = cbChecked + TabOrder = 0 + end + object Button2: TButton + Left = 160 + Top = 5 + Width = 75 + Height = 25 + Caption = 'Open/Close' + TabOrder = 1 + OnClick = Button2Click + end + object DBNavigator1: TDBNavigator + Left = 248 + Top = 5 + Width = 240 + Height = 25 + DataSource = dsCustomers + TabOrder = 2 + end + end + object Panel3: TPanel + Left = 0 + Top = 0 + Width = 789 + Height = 193 + Align = alTop + BevelOuter = bvNone + Caption = 'Panel3' + TabOrder = 4 + object Panel4: TPanel + Left = 524 + Top = 0 + Width = 265 + Height = 193 + Align = alRight + BevelOuter = bvNone + TabOrder = 0 + object btn_TestDatasets: TButton + Left = 8 + Top = 75 + Width = 129 + Height = 25 + Caption = 'Test Datasets' + TabOrder = 0 + OnClick = btn_TestDatasetsClick + end + object cbSkipCustomers: TCheckBox + Left = 8 + Top = 40 + Width = 97 + Height = 17 + Caption = 'Skip Customers' + TabOrder = 1 + end + object cbSkipOrders: TCheckBox + Left = 8 + Top = 56 + Width = 97 + Height = 17 + Caption = 'Skip Orders' + TabOrder = 2 + end + object btn_TurnMD: TButton + Left = 8 + Top = 139 + Width = 129 + Height = 25 + Caption = 'Turn M/D on/off' + TabOrder = 3 + OnClick = btn_TurnMDClick + end + object cbCloseBeforeTest: TCheckBox + Left = 8 + Top = 11 + Width = 113 + Height = 17 + Caption = 'Close Before Test' + Checked = True + State = cbChecked + TabOrder = 4 + end + object btn_ShowDeltaCounters: TButton + Left = 8 + Top = 168 + Width = 129 + Height = 25 + Caption = 'Show Delta Counters' + TabOrder = 5 + OnClick = btn_ShowDeltaCountersClick + end + object btn_TestDeltas: TButton + Left = 8 + Top = 107 + Width = 129 + Height = 25 + Caption = 'Test Deltas' + TabOrder = 6 + OnClick = btn_TestDeltasClick + end + object btn_ClearMemo: TButton + Left = 144 + Top = 168 + Width = 97 + Height = 25 + Caption = 'Clear Memo' + TabOrder = 7 + OnClick = btn_ClearMemoClick + end + end + object Memo: TMemo + Left = 0 + Top = 0 + Width = 524 + Height = 193 + Align = alClient + ScrollBars = ssVertical + TabOrder = 1 + end + end + object DADriverManager1: TDADriverManager + DriverDirectory = '%SYSTEM%\' + AutoLoad = False + TraceActive = False + TraceFlags = [] + Left = 16 + Top = 8 + end + object DAConnectionManager1: TDAConnectionManager + MaxPoolSize = 10 + PoolTimeoutSeconds = 60 + PoolBehaviour = pbWait + WaitIntervalSeconds = 1 + Connections = < + item + Name = 'ADO' + ConnectionString = + 'ADO?Server=.;Database=Northwind;UserID=sa;AuxDriver=SQLOLEDB.1;p' + + 'assword=;' + Default = True + Tag = 0 + end> + DriverManager = DADriverManager1 + PoolingEnabled = True + Left = 80 + Top = 8 + end + object DASchema1: TDASchema + ConnectionManager = DAConnectionManager1 + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Customers' + SQL = + 'SELECT '#10' CustomerID, CompanyName, ContactName, ContactTitle, ' + + #10' Address, City, Region, PostalCode, Country, Phone, '#10' Fax' + + #10' FROM'#10' Customers' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'CompanyName' + TableField = 'CompanyName' + end + item + DatasetField = 'ContactName' + TableField = 'ContactName' + end + item + DatasetField = 'ContactTitle' + TableField = 'ContactTitle' + end + item + DatasetField = 'Address' + TableField = 'Address' + end + item + DatasetField = 'City' + TableField = 'City' + end + item + DatasetField = 'Region' + TableField = 'Region' + end + item + DatasetField = 'PostalCode' + TableField = 'PostalCode' + end + item + DatasetField = 'Country' + TableField = 'Country' + end + item + DatasetField = 'Phone' + TableField = 'Phone' + end + item + DatasetField = 'Fax' + TableField = 'Fax' + end> + end> + Name = 'Customers' + Fields = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CompanyName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactName' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactTitle' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Address' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Region' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Country' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Phone' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Fax' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Orders' + SQL = + 'SELECT '#10' OrderID, CustomerID, EmployeeID, OrderDate, Required' + + 'Date, '#10' ShippedDate, ShipVia, Freight, ShipName, ShipAddress,' + + ' '#10' ShipCity, ShipRegion, ShipPostalCode, ShipCountry'#10' FROM'#10' ' + + ' Orders' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'OrderID' + TableField = 'OrderID' + end + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'EmployeeID' + TableField = 'EmployeeID' + end + item + DatasetField = 'OrderDate' + TableField = 'OrderDate' + end + item + DatasetField = 'RequiredDate' + TableField = 'RequiredDate' + end + item + DatasetField = 'ShippedDate' + TableField = 'ShippedDate' + end + item + DatasetField = 'ShipVia' + TableField = 'ShipVia' + end + item + DatasetField = 'Freight' + TableField = 'Freight' + end + item + DatasetField = 'ShipName' + TableField = 'ShipName' + end + item + DatasetField = 'ShipAddress' + TableField = 'ShipAddress' + end + item + DatasetField = 'ShipCity' + TableField = 'ShipCity' + end + item + DatasetField = 'ShipRegion' + TableField = 'ShipRegion' + end + item + DatasetField = 'ShipPostalCode' + TableField = 'ShipPostalCode' + end + item + DatasetField = 'ShipCountry' + TableField = 'ShipCountry' + end> + end> + Name = 'Orders' + Fields = < + item + Name = 'OrderID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EmployeeID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OrderDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RequiredDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShippedDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipVia' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Freight' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipAddress' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCity' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipRegion' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipPostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCountry' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = <> + RelationShips = <> + UpdateRules = <> + Left = 48 + Top = 8 + end + object DAADODriver1: TDAADODriver + Left = 112 + Top = 8 + end + object dtCustomers: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 276 + Top = 27 + end + object dsCustomers: TDADataSource + DataTable = dtCustomers + Left = 292 + Top = 43 + end + object dtOrders: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 340 + Top = 27 + end + object dsOrders: TDADataSource + DataTable = dtOrders + Left = 356 + Top = 43 + end + object DABinDataStreamer: TDABinDataStreamer + Left = 146 + Top = 8 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/fMainForm.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/fMainForm.pas new file mode 100644 index 0000000..07dfc8a --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Data Streamers/fMainForm.pas @@ -0,0 +1,234 @@ +unit fMainForm; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, DB, Grids, DBGrids, ExtCtrls, DBCtrls, + uDADataTable, uDABINAdapter, uDAClasses, uDADriverManager, uDAInterfaces, + uDADataStreamer, uDAScriptingProvider, uDACDSDataTable, uDAEngine, + uDAADODriver; + +type + TForm1 = class(TForm) + DADriverManager1: TDADriverManager; + DAADODriver1: TDAADODriver; + DAConnectionManager1: TDAConnectionManager; + dtCustomers: TDACDSDataTable; + dsCustomers: TDADataSource; + DBGrid1: TDBGrid; + dtOrders: TDACDSDataTable; + dsOrders: TDADataSource; + DBGrid2: TDBGrid; + Panel1: TPanel; + DBNavigator2: TDBNavigator; + Button3: TButton; + cbApplyOrdersSchema: TCheckBox; + Panel2: TPanel; + cbApplyCustomersSchema: TCheckBox; + Button2: TButton; + DBNavigator1: TDBNavigator; + Panel3: TPanel; + Panel4: TPanel; + btn_TestDatasets: TButton; + cbSkipCustomers: TCheckBox; + cbSkipOrders: TCheckBox; + btn_TurnMD: TButton; + cbCloseBeforeTest: TCheckBox; + btn_ShowDeltaCounters: TButton; + btn_TestDeltas: TButton; + btn_ClearMemo: TButton; + Memo: TMemo; + DASchema1: TDASchema; + DABinDataStreamer: TDABinDataStreamer; + procedure FormCreate(Sender: TObject); + procedure btn_TestDatasetsClick(Sender: TObject); + procedure Button2Click(Sender: TObject); + procedure Button3Click(Sender: TObject); + procedure btn_TurnMDClick(Sender: TObject); + procedure btn_ShowDeltaCountersClick(Sender: TObject); + procedure btn_TestDeltasClick(Sender: TObject); + procedure btn_ClearMemoClick(Sender: TObject); + private + fConnection: IDAConnection; + end; + +var + Form1: TForm1; + +implementation + +uses uROTypes, uDADelta; + +{$R *.dfm} + +procedure TForm1.FormCreate(Sender: TObject); +begin + fConnection := DAConnectionManager1.NewConnection('ADO'); +end; + +procedure TForm1.btn_TestDatasetsClick(Sender: TObject); +var + stream: Binary; + customers, + orders: IDADataset; + i: integer; + start: Cardinal; +begin + if cbCloseBeforeTest.Checked then begin + dtCustomers.Close; + dtOrders.Close; + end; + + stream := Binary.Create; + + with DABinDataStreamer do try + customers := DASchema1.NewDataset(fConnection, 'Customers'); + //customers.Where.AddText(' 1=2'); + orders := DASchema1.NewDataset(fConnection, 'Orders'); + //orders.Where.AddText(' 1=2'); + + start := GetTickCount; + + // Writes the data + Initialize(stream, aiWrite); + if not cbSkipCustomers.Checked then WriteDataset(customers, [woSchema, woRows], -1); + + if not cbSkipOrders.Checked then WriteDataset(orders, [woRows, woSchema], -1); + Finalize; + // End of write data + + Memo.Lines.Add('WRITE completed in ' + IntToStr(GetTickCount - start) + 'ms'); + + // Logging info + Memo.Lines.Add('Stream is now ' + IntToStr(stream.Size) + ' bytes long'); + + start := GetTickCount; + Initialize(stream, aiReadFromBeginning); + + // Reads the data + if not cbSkipCustomers.Checked then begin + if cbApplyCustomersSchema.Checked then + ReadDataset('Customers', dtCustomers, TRUE) + else + ReadDataset('Customers', dtCustomers); + end; + + if not cbSkipOrders.Checked then begin + if cbApplyOrdersSchema.Checked then + ReadDataset('Orders', dtOrders, TRUE) + else + ReadDataset('Orders', dtOrders); + end; + + Finalize; + + // End of read data + Memo.Lines.Add('READ completed in ' + IntToStr(GetTickCount - start) + 'ms'); + + // Logging info + Memo.Lines.Add('The stream contains ' + IntToStr(DatasetCount) + ' datasets and ' + IntToStr(DeltaCount) + ' deltas'); + for i := 0 to (DatasetCount - 1) do Memo.Lines.Add('Dataset -> ' + DatasetNames[i]); + for i := 0 to (DeltaCount - 1) do Memo.Lines.Add('Delta -> ' + DeltaNames[i]); + Memo.Lines.Add(' '); + finally + stream.Free; + end; +end; + +procedure TForm1.Button2Click(Sender: TObject); +begin + dtCustomers.Active := dtCustomers.Active xor TRUE; +end; + +procedure TForm1.Button3Click(Sender: TObject); +begin + dtOrders.Active := dtOrders.Active xor TRUE +end; + +procedure TForm1.btn_TurnMDClick(Sender: TObject); +begin + if dtOrders.MasterSource = nil then begin + dtOrders.MasterFields := 'CustomerID'; + dtOrders.DetailFields := 'CustomerID'; + dtOrders.MasterSource := dsCustomers; + end + + else begin + dtOrders.MasterSource := nil; + dtOrders.MasterFields := ''; + dtOrders.DetailFields := ''; + end; + + btn_TestDatasets.Enabled := dtOrders.MasterSource = nil; +end; + +procedure TForm1.btn_ShowDeltaCountersClick(Sender: TObject); +begin + ShowMessage(Format('Changes: Customers %d, Orders %d', [dtCustomers.Delta.Count, dtOrders.Delta.Count])); +end; + +procedure TForm1.btn_TestDeltasClick(Sender: TObject); +var + stream: TStream; + i: integer; + orddelta, + custdelta: TDADelta; +begin + if not dtCustomers.Active or not dtOrders.Active then begin + MessageDlg('Both datatables must be open!', mtError, [mbOK], 0); + Exit; + end; + + stream := TMemoryStream.Create; + + custdelta := TDADelta.Create(dtCustomers); + orddelta := TDADelta.Create(dtOrders); + with DABinDataStreamer do try + // Writes the data + Initialize(stream, aiWrite); + if not cbSkipCustomers.Checked then WriteDelta(dtCustomers); + + if not cbSkipOrders.Checked then WriteDelta(dtOrders); + Finalize; + // End of write data + + // Logging info + Memo.Lines.Add('Stream is now ' + IntToStr(stream.Size) + ' bytes long'); + + Initialize(stream, aiReadFromBeginning); + + // Reads the data + if not cbSkipCustomers.Checked then begin + ReadDelta('dtCustomers', custdelta); + Memo.Lines.Add('Customers delta contains ' + IntToStr(custdelta.Count) + ' changes'); + end; + + if not cbSkipOrders.Checked then begin + ReadDelta('dtOrders', orddelta); + Memo.Lines.Add('Orders delta contains ' + IntToStr(orddelta.Count) + ' changes'); + end; + + Finalize; + + // Logging info + Memo.Lines.Add('The stream contains ' + IntToStr(DatasetCount) + ' datasets and ' + IntToStr(DeltaCount) + ' deltas'); + for i := 0 to (DatasetCount - 1) do Memo.Lines.Add('Dataset -> ' + DatasetNames[i]); + for i := 0 to (DeltaCount - 1) do Memo.Lines.Add('Delta -> ' + DeltaNames[i]); + Memo.Lines.Add(' '); + + finally + stream.Free; + + custdelta.Free; + orddelta.Free; + end; +end; + +procedure TForm1.btn_ClearMemoClick(Sender: TObject); +begin + Memo.Lines.Clear; +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQL.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQL.Sample.html new file mode 100644 index 0000000..c0e0088 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQL.Sample.html @@ -0,0 +1,81 @@ + + + + + + + + + +

+ Dynamic SQL +

+ + +

Purpose

+

+ This demo shows how to retrieve schema and/or data via SQL generated at + runtime. +

+

+ When you compile and run the server, you will see it contains a memo displaying + "SQL details generated for Update will be displayed here". + The + demo does not actually attempt to update server data but merely display + the fields + that would be updated by processing the delta. See the TDynSQLService.UpdateData + code in DynSQLService_Impl to see how the delta is being processed. +

+

+ Having next compiled and run the client, the first thing to try + is clicking + on the Retrieve Schema and Data button and you should then see the + Customers + data displayed in the grid. Changing the text in the memo, e.g. to + Select + * from "Order Details" and clicking the button again results + in the + display of a different dataset with a totally different schema. Any of + the datasets + in the database (Northwind, by default) may be accessed in this manner. +

+

+ Other points of interest: +

+ + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQL.bdsgroup b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQL.bdsgroup new file mode 100644 index 0000000..91866a0 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQL.bdsgroup @@ -0,0 +1,20 @@ + + + + + + + + + + + + + DynSQLServer.bdsproj + DynSQLClient.bdsproj + DynSQLServer.exe DynSQLClient.exe + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQL.bpg b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQL.bpg new file mode 100644 index 0000000..ef95e27 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQL.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = DynSQLServer.exe DynSQLClient.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +DynSQLServer.exe: DynSQLServer.dpr + $(DCC) + +DynSQLClient.exe: DynSQLClient.dpr + $(DCC) + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQL.groupproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQL.groupproj new file mode 100644 index 0000000..a79c349 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQL.groupproj @@ -0,0 +1,40 @@ + + + {67b524b6-f332-475d-8d78-7edde30d8a99} + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLClient.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLClient.bdsproj new file mode 100644 index 0000000..7936d9b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLClient.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + DynSQLClient.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLClient.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLClient.dpr new file mode 100644 index 0000000..81907da --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLClient.dpr @@ -0,0 +1,15 @@ +program DynSQLClient; + +uses + Forms, + DynSQLMainClient in 'DynSQLMainClient.pas' {DynSQLMainClientForm}, + DynSQLLibrary_Intf in 'DynSQLLibrary_Intf.pas'; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'DynSQL Client'; + Application.CreateForm(TDynSQLMainClientForm, DynSQLMainClientForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLClient.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLClient.dproj new file mode 100644 index 0000000..c320b4c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLClient.dproj @@ -0,0 +1,37 @@ + + + {a6ec96d6-69bf-4815-b64d-37174ee1d1be} + DynSQLClient.dpr + Debug + AnyCPU + DCC32 + DynSQLClient.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + +FalseTrueFalseFalseFalse1000FalseFalseFalseFalseFalse105812511.0.0.01.0.0.0DynSQLClient.dpr + + + + + MainSource + + + +
DynSQLMainClientForm
+
+
+
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLClient.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLClient.res new file mode 100644 index 0000000..da01de5 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLClient.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLLibrary.RODL b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLLibrary.RODL new file mode 100644 index 0000000..4e4f4d4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLLibrary.RODL @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLLibrary_Intf.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLLibrary_Intf.pas new file mode 100644 index 0000000..ab41146 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLLibrary_Intf.pas @@ -0,0 +1,104 @@ +unit DynSQLLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf, + {Used RODLs:} DataAbstract4_Intf; + +const + { Library ID } + LibraryUID = '{7DDA8CC1-A876-4A25-9280-3352E8A464EB}'; + TargetNamespace = ''; + + { Service Interface ID's } + IDynSQLService_IID : TGUID = '{02F71273-9E5C-4BD7-81EF-3BD4663EA0AB}'; + + { Event ID's } + +type + { Forward declarations } + IDynSQLService = interface; + + + + + + { Enumerateds } + + { IDynSQLService } + IDynSQLService = interface(IDataAbstractService) + ['{02F71273-9E5C-4BD7-81EF-3BD4663EA0AB}'] + function MyUpdateData(const aTableName: String; const Delta: Binary): Binary; + end; + + { CoDynSQLService } + CoDynSQLService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDynSQLService; + end; + + { TDynSQLService_Proxy } + TDynSQLService_Proxy = class(TDataAbstractService_Proxy, IDynSQLService) + protected + function __GetInterfaceName:string; override; + + function MyUpdateData(const aTableName: String; const Delta: Binary): Binary; + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uROSerializer, uRORes; + +{ CoDynSQLService } + +class function CoDynSQLService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDynSQLService; +begin + result := TDynSQLService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TDynSQLService_Proxy } + +function TDynSQLService_Proxy.__GetInterfaceName:string; +begin + result := 'DynSQLService'; +end; + +function TDynSQLService_Proxy.MyUpdateData(const aTableName: String; const Delta: Binary): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DynSQLLibrary', __InterfaceName, 'MyUpdateData'); + __Message.Write('aTableName', TypeInfo(String), aTableName, []); + __Message.Write('Delta', TypeInfo(Binary), Delta, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +initialization + RegisterProxyClass(IDynSQLService_IID, TDynSQLService_Proxy); + + +finalization + UnregisterProxyClass(IDynSQLService_IID); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLLibrary_Invk.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLLibrary_Invk.pas new file mode 100644 index 0000000..f0118bb --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLLibrary_Invk.pas @@ -0,0 +1,70 @@ +unit DynSQLLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Used RODL Intf's:} DataAbstract4_Intf, + {Used RODL Invk's:} DataAbstract4_Invk, + {Generated:} DynSQLLibrary_Intf; + +type + TDynSQLService_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + procedure Invoke_MyUpdateData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TDynSQLService_Invoker } + +procedure TDynSQLService_Invoker.Invoke_MyUpdateData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function MyUpdateData(const aTableName: String; const Delta: Binary): Binary; } +var + aTableName: String; + Delta: Binary; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + Delta := nil; + lResult := nil; + try + __Message.Read('aTableName', TypeInfo(String), aTableName, []); + __Message.Read('Delta', TypeInfo(Binary), Delta, []); + + lResult := (__Instance as IDynSQLService).MyUpdateData(aTableName, Delta); + + __Message.InitializeResponseMessage(__Transport, 'DynSQLLibrary', 'DynSQLService', 'MyUpdateDataResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(Delta); + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +initialization +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLMainClient.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLMainClient.dfm new file mode 100644 index 0000000..0a4b8b2 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLMainClient.dfm @@ -0,0 +1,248 @@ +object DynSQLMainClientForm: TDynSQLMainClientForm + Left = 466 + Top = 173 + Width = 549 + Height = 406 + BorderWidth = 5 + Caption = 'DynSQL Client' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 8 + Top = 136 + Width = 66 + Height = 13 + Caption = 'Max Records:' + end + object Memo: TMemo + Left = 0 + Top = 0 + Width = 523 + Height = 124 + Align = alTop + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Courier New' + Font.Style = [] + Lines.Strings = ( + 'SELECT * FROM Customers') + ParentFont = False + ScrollBars = ssBoth + TabOrder = 0 + end + object seMaxRecs: TSpinEdit + Left = 80 + Top = 133 + Width = 65 + Height = 22 + MaxValue = 0 + MinValue = 0 + TabOrder = 1 + Value = -1 + end + object RetrieveSchema: TButton + Left = 0 + Top = 160 + Width = 92 + Height = 25 + Caption = 'Retrieve Schema' + TabOrder = 2 + OnClick = RetrieveSchemaClick + end + object Grid: TDBGrid + Left = 0 + Top = 212 + Width = 523 + Height = 148 + Align = alBottom + Anchors = [akLeft, akTop, akRight, akBottom] + DataSource = DADataSource + TabOrder = 3 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object RetrieveData: TButton + Left = 95 + Top = 160 + Width = 92 + Height = 25 + Caption = 'Retrieve Data' + TabOrder = 4 + OnClick = RetrieveDataClick + end + object RetrieveSchemaAndData: TButton + Left = 191 + Top = 160 + Width = 154 + Height = 25 + Caption = 'Retrieve Schema and Data' + TabOrder = 5 + OnClick = RetrieveSchemaAndDataClick + end + object Save: TButton + Left = 349 + Top = 160 + Width = 45 + Height = 25 + Caption = 'Save' + TabOrder = 6 + OnClick = SaveClick + end + object Load: TButton + Left = 398 + Top = 160 + Width = 45 + Height = 25 + Caption = 'Load' + TabOrder = 7 + OnClick = LoadClick + end + object Update: TButton + Left = 446 + Top = 160 + Width = 75 + Height = 25 + Caption = 'Update' + TabOrder = 8 + OnClick = UpdateClick + end + object dbNavigator: TDBNavigator + Left = 151 + Top = 129 + Width = 320 + Height = 25 + DataSource = DADataSource + ParentShowHint = False + ShowHint = True + TabOrder = 9 + end + object cbUpdateviaRDA: TCheckBox + Left = 400 + Top = 192 + Width = 121 + Height = 17 + Caption = 'Update via RDA' + TabOrder = 10 + end + object ROBINMessage: TROBinMessage + Left = 32 + Top = 40 + end + object ROWinInetHTTPChannel1: TROWinInetHTTPChannel + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/BIN' + ServerLocators = <> + DispatchOptions = [] + Left = 64 + Top = 40 + end + object DataStreamer: TDABin2DataStreamer + Left = 128 + Top = 40 + end + object DataTable: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + BeforeRefresh = DataTableBeforeRefresh + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'DynamicDataset' + IndexDefs = <> + Left = 32 + Top = 80 + end + object DADataSource: TDADataSource + DataSet = DataTable.Dataset + DataTable = DataTable + Left = 64 + Top = 80 + end + object svcDynSQLService: TRORemoteService + Message = ROBINMessage + Channel = ROWinInetHTTPChannel1 + ServiceName = 'DynSQLService' + Left = 96 + Top = 40 + end + object DARemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = svcDynSQLService + GetDataCall.RemoteService = svcDynSQLService + GetDataCall.MethodName = 'SQLGetData' + GetDataCall.Params = < + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end + item + Name = 'aSQLText' + DataType = rtString + Flag = fIn + Value = Null + end + item + Name = 'aIncludeSchema' + DataType = rtBoolean + Flag = fIn + Value = Null + end + item + Name = 'aMaxRecords' + DataType = rtInteger + Flag = fIn + Value = Null + end> + GetDataCall.Default = False + GetDataCall.OutgoingTableNamesParameter = 'aTableNameArray' + GetDataCall.OutgoingTableRequestInfosParameter = 'aTableRequestInfoArray' + GetDataCall.IncomingDataParameter = 'Result' + GetDataCall.OutgoingIncludeSchemaParameter = 'aIncludeSchema' + GetDataCall.OutgoingMaxRecordsParameter = 'aMaxRecords' + UpdateDataCall.RemoteService = svcDynSQLService + UpdateDataCall.MethodName = 'MyUpdateData' + UpdateDataCall.Params = < + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end + item + Name = 'aTableName' + DataType = rtString + Flag = fIn + Value = Null + end + item + Name = 'Delta' + DataType = rtBinary + Flag = fIn + Value = Null + end> + UpdateDataCall.Default = False + UpdateDataCall.OutgoingDeltaParameter = 'Delta' + UpdateDataCall.IncomingDeltaParameter = 'Result' + GetScriptsCall.RemoteService = svcDynSQLService + RemoteService = svcDynSQLService + DataStreamer = DataStreamer + Left = 98 + Top = 80 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLMainClient.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLMainClient.pas new file mode 100644 index 0000000..1172ee8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLMainClient.pas @@ -0,0 +1,151 @@ +unit DynSQLMainClient; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uROWinInetHttpChannel, uROClient, + uROBINMessage, StdCtrls, Spin, uDADataTable, + DB, Grids, DBGrids, uRORemoteService, + uDAScriptingProvider, ExtCtrls, DBCtrls, uDARemoteDataAdapter, + uDADataStreamer, uDAInterfaces, uDABin2DataStreamer, + uDAMemDataTable; + +type + TDynSQLMainClientForm = class(TForm) + ROBINMessage: TROBINMessage; + ROWinInetHTTPChannel1: TROWinInetHTTPChannel; + Memo: TMemo; + seMaxRecs: TSpinEdit; + Label1: TLabel; + RetrieveSchema: TButton; + DataStreamer: TDABin2DataStreamer; + DataTable: TDAMemDataTable; + Grid: TDBGrid; + DADataSource: TDADataSource; + svcDynSQLService: TRORemoteService; + RetrieveData: TButton; + RetrieveSchemaAndData: TButton; + Save: TButton; + Load: TButton; + Update: TButton; + dbNavigator: TDBNavigator; + DARemoteDataAdapter: TDARemoteDataAdapter; + cbUpdateviaRDA: TCheckBox; + procedure RetrieveSchemaClick(Sender: TObject); + procedure RetrieveDataClick(Sender: TObject); + procedure RetrieveSchemaAndDataClick(Sender: TObject); + procedure SaveClick(Sender: TObject); + procedure LoadClick(Sender: TObject); + procedure UpdateClick(Sender: TObject); + procedure DataTableBeforeRefresh(DataTable: TDADataTable); + private + { Private declarations } + fSavedTablename: String; + procedure InitRDA(aIncludeSchema: Boolean; AMaxRecords: integer); + public + { Public declarations } + end; + +var + DynSQLMainClientForm: TDynSQLMainClientForm; + +implementation + +uses DynSQLLibrary_Intf, uROTypes, uDARemoteDataAdapterRequests, uRODL; + +{$R *.dfm} + +procedure TDynSQLMainClientForm.RetrieveSchemaClick(Sender: TObject); +begin + InitRDA(True, 0); + DataTable.Close; +end; + +procedure TDynSQLMainClientForm.RetrieveDataClick(Sender: TObject); +begin + InitRDA(False, seMaxRecs.Value); +end; + +procedure TDynSQLMainClientForm.RetrieveSchemaAndDataClick(Sender: TObject); +begin + InitRDA(True, seMaxRecs.Value); +end; + +procedure TDynSQLMainClientForm.SaveClick(Sender: TObject); +begin + DataTable.SaveToFile(ExtractFilePath(Application.ExeName) + 'Data.dat'); +end; + +procedure TDynSQLMainClientForm.LoadClick(Sender: TObject); +begin + DataTable.LoadFromFile(ExtractFilePath(Application.ExeName) + 'Data.dat'); +end; + +procedure TDynSQLMainClientForm.UpdateClick(Sender: TObject); +var + deltadata, r: Binary; + +begin + if not DataTable.Active then begin + ShowMessage('Please open table'); + Exit; + end; + if DataTable.Delta.Count=0 then begin + ShowMessage('No changes are found'); + Exit; + end; + fSavedTablename:=InputBox('Enter table name','Please enter table name.'+sLineBreak+'Use an empty table name for fake update.',fSavedTablename); + + if cbUpdateviaRDA.Checked then begin + DARemoteDataAdapter.UpdateDataCall.ParamByName('aTableName').AsString:= fSavedTablename; + DataTable.ApplyUpdates(); + end + else begin + deltadata := Binary.Create; + try + // Packs the delta of the data table and sends it over. + DataStreamer.Initialize(deltadata, aiWrite); + try + DataStreamer.WriteDelta(DataTable); + finally + DataStreamer.Finalize; + end; + + r:=(svcDynSQLService as IDynSQLService).MyUpdateData(fSavedTablename,deltadata); + try + DataTable.Delta.Clear(); + DataStreamer.Initialize(r, aiReadFromBeginning); + try + DataStreamer.ReadDelta(DataStreamer.DeltaNames[0], DataTable.Delta); + finally + DataStreamer.Finalize; + end; + DataTable.MergeDelta; + finally + r.Free; + end; + finally + deltadata.Free; + end; + end; +end; + +procedure TDynSQLMainClientForm.DataTableBeforeRefresh(DataTable: TDADataTable); +begin + DaRemoteDataAdapter.GetDataCall.ParamByName('aSQLText').AsString := Memo.Lines.Text; +end; + +procedure TDynSQLMainClientForm.InitRDA(aIncludeSchema: Boolean; + AMaxRecords: integer); +begin + with DataTable do begin + Close; + DARemoteDataAdapter.GetDataCall.ParamByName('aSQLText').AsString := Memo.Lines.Text; + MaxRecords := AMaxRecords; + DARemoteDataAdapter.Fill([DataTable], true, aIncludeSchema); + end; +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLServer.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLServer.bdsproj new file mode 100644 index 0000000..233d818 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLServer.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + DynSQLServer.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLServer.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLServer.dpr new file mode 100644 index 0000000..f5094ec --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLServer.dpr @@ -0,0 +1,21 @@ +program DynSQLServer; + +{#ROGEN:DynSQLLibrary.rodl} // RemObjects: Careful, do not remove! + +uses + uROCOMInit, + Forms, + DynSQLServerMain in 'DynSQLServerMain.pas' {DynSQLServerMainForm}, + DynSQLLibrary_Intf in 'DynSQLLibrary_Intf.pas', + DynSQLLibrary_Invk in 'DynSQLLibrary_Invk.pas', + DynSQLService_Impl in 'DynSQLService_Impl.pas' {DynSQLService: TRORemoteDataModule}; + +{$R *.RES} +{$R RODLFile.res} + +begin + Application.Initialize; + Application.Title := 'DynSQL Server'; + Application.CreateForm(TDynSQLServerMainForm, DynSQLServerMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLServer.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLServer.dproj new file mode 100644 index 0000000..789dac4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLServer.dproj @@ -0,0 +1,77 @@ + + + {2d78a543-7091-4d6f-9ce8-69b6915cef48} + DynSQLServer.dpr + Debug + AnyCPU + DCC32 + DynSQLServer.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + DynSQLServer.dpr + + + + + + + MainSource + + + + +
DynSQLServerMainForm
+
+ +
DynSQLService
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLServer.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLServer.res new file mode 100644 index 0000000..7455d6e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLServer.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLServerMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLServerMain.dfm new file mode 100644 index 0000000..0836b67 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLServerMain.dfm @@ -0,0 +1,89 @@ +object DynSQLServerMainForm: TDynSQLServerMainForm + Left = 285 + Top = 181 + AutoScroll = False + BorderWidth = 5 + Caption = 'DynSQL Server' + ClientHeight = 221 + ClientWidth = 413 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Form1' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + OnDestroy = FormDestroy + PixelsPerInch = 96 + TextHeight = 14 + object RoPoweredByRemObjectsButton1: TROPoweredByRemObjectsButton + Left = 0 + Top = 0 + Width = 212 + Height = 48 + Cursor = crHandPoint + end + object Memo: TMemo + Left = 0 + Top = 54 + Width = 413 + Height = 167 + Align = alBottom + Anchors = [akLeft, akTop, akRight, akBottom] + Lines.Strings = ( + 'SQL details generated for Update will be displayed here') + ReadOnly = True + ScrollBars = ssBoth + TabOrder = 0 + end + object Button1: TButton + Left = 336 + Top = 24 + Width = 75 + Height = 25 + Anchors = [akTop, akRight] + Caption = 'Clear' + TabOrder = 1 + OnClick = Button1Click + end + object ROMessage: TROBinMessage + Left = 256 + end + object ROServer: TROIndyHTTPServer + Active = True + Dispatchers = < + item + Name = 'ROMessage' + Message = ROMessage + Enabled = True + PathInfo = 'BIN' + end> + Port = 8099 + Left = 288 + end + object DADriverManager: TDADriverManager + DriverDirectory = '%SYSTEM%\' + TraceActive = False + TraceFlags = [] + Left = 320 + end + object DAConnectionManager: TDAConnectionManager + Connections = < + item + Name = 'ADO' + ConnectionString = + 'ADO?Server=localhost;UserID=sa;AuxDriver=SQLOLEDB.1;Database=Nor' + + 'thwind;password=;' + Description = 'Borland ADOExpress Connection' + Default = True + end> + DriverManager = DADriverManager + PoolingEnabled = True + Left = 384 + end + object DAADODriver: TDAADODriver + Left = 352 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLServerMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLServerMain.pas new file mode 100644 index 0000000..d9ab672 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLServerMain.pas @@ -0,0 +1,73 @@ +unit DynSQLServerMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + StdCtrls, uROClient, uROBINMessage, uROClientIntf, uROServer, uROIndyHTTPServer, + uROIndyTCPServer, uROPoweredByRemObjectsButton, SyncObjs, + uDAClasses, uDADriverManager, uDAEngine, uDAADODriver; + +type + TDynSQLServerMainForm = class(TForm) + ROMessage: TROBINMessage; + ROServer: TROIndyHTTPServer; + RoPoweredByRemObjectsButton1: TRoPoweredByRemObjectsButton; + DADriverManager: TDADriverManager; + DAConnectionManager: TDAConnectionManager; + DAADODriver: TDAADODriver; + Memo: TMemo; + Button1: TButton; + procedure FormCreate(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure Button1Click(Sender: TObject); + private + { Private declarations } + CriticalSection: TCriticalSection; + public + { Public declarations } + procedure LOG(str: string); + end; + +var + DynSQLServerMainForm: TDynSQLServerMainForm; + +implementation + +{$R *.dfm} + +{ TDynSQLServerMainForm } + +procedure TDynSQLServerMainForm.LOG(str: string); +begin + CriticalSection.Enter; + try + Memo.Lines.Add(str); + finally + CriticalSection.Leave; + end; +end; + +procedure TDynSQLServerMainForm.FormCreate(Sender: TObject); +begin + CriticalSection := TCriticalSection.Create; + Button1Click(Self); +end; + +procedure TDynSQLServerMainForm.FormDestroy(Sender: TObject); +begin + CriticalSection.Free; +end; + +procedure TDynSQLServerMainForm.Button1Click(Sender: TObject); +begin + CriticalSection.Enter; + try + Memo.Clear; + finally + CriticalSection.Leave; + end; +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLService_Impl.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLService_Impl.dfm new file mode 100644 index 0000000..46e9d93 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLService_Impl.dfm @@ -0,0 +1,51 @@ +object DynSQLService: TDynSQLService + OldCreateOrder = True + ServiceSchema = Schema + ServiceDataStreamer = DataStreamer + AllowExecuteSQL = True + ExportedDataTables = <> + Left = 430 + Top = 70 + Height = 300 + Width = 300 + object DataStreamer: TDABin2DataStreamer + Left = 24 + Top = 72 + end + object Schema: TDASchema + ConnectionManager = DynSQLServerMainForm.DAConnectionManager + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'ADO' + Default = True + Name = 'ADO' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'ReferencedDataset' + Fields = <> + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = <> + RelationShips = <> + UpdateRules = <> + Version = 0 + Left = 24 + Top = 16 + end + object BusinessProcessor: TDABusinessProcessor + OnAfterProcessChange = BusinessProcessorAfterProcessChange + OnProcessError = BusinessProcessorProcessError + OnGenerateSQL = BusinessProcessorGenerateSQL + Schema = Schema + ReferencedDataset = 'ReferencedDataset' + ProcessorOptions = [poAutoGenerateInsert, poAutoGenerateUpdate, poAutoGenerateDelete, poAutoGenerateRefreshDataset, poPrepareCommands] + UpdateMode = updWhereAll + Left = 24 + Top = 120 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLService_Impl.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLService_Impl.pas new file mode 100644 index 0000000..d14d724 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLService_Impl.pas @@ -0,0 +1,165 @@ +unit DynSQLService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, uDAInterfaces, + {Generated:} DynSQLLibrary_Intf, uDAClasses, uDADelta, + uDABin2DataStreamer, uDADataStreamer, uDAScriptingProvider, + uDABusinessProcessor; + +type + { TDynSQLService } + TDynSQLService = class(TDataAbstractService, IDynSQLService) + DataStreamer: TDABin2DataStreamer; + BusinessProcessor: TDABusinessProcessor; + Schema: TDASchema; + procedure BusinessProcessorGenerateSQL(Sender: TDABusinessProcessor; + ChangeType: TDAChangeType; const ReferencedStatement: TDAStatement; + const aDelta: IDADelta; var SQL: String); + procedure BusinessProcessorProcessError(Sender: TDABusinessProcessor; + aChangeType: TDAChangeType; aChange: TDADeltaChange; + const aCommand: IDASQLCommand; var CanRemoveFromDelta: Boolean; + Error: Exception); + procedure BusinessProcessorAfterProcessChange( + Sender: TDABusinessProcessor; aChange: TDADeltaChange; + Processed: Boolean; var CanRemoveFromDelta: Boolean); + private + procedure Log(aStr: string); + function _GetConnection: IDAConnection; + protected + function MyUpdateData(const aTableName: String; const Delta: Binary): Binary; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} DynSQLLibrary_Invk, DynSQLServerMain, Dialogs, TypInfo; + +procedure Create_DynSQLService(out anInstance: IUnknown); +begin + anInstance := TDynSQLService.Create(nil); +end; + +{ TDynSQLService } + +function TDynSQLService._GetConnection: IDAConnection; +begin + Result := DynSQLServerMainForm.DAConnectionManager.NewConnection('ADO'); +end; + +procedure TDynSQLService.Log(aStr: string); +begin + DynSQLServerMainForm.Log(aStr); +end; + +function TDynSQLService.MyUpdateData(const aTableName: String; const Delta: Binary): Binary; +var + conn: IDAConnection; + realdelta: IDADelta; + i: integer; + sql: string; + fOldDeltaname: string; +begin + Log(''); + Log(''); + // Opens a connection + conn := _GetConnection; + + // Creates a delta object + realdelta := NewDelta('tempDelta'); + + // Converts the binary stream we just received. + DataStreamer.Initialize(Delta, aiReadFromBeginning); + try + fOldDeltaname:=DataStreamer.DeltaNames[0]; + DataStreamer.ReadDelta(DataStreamer.DeltaNames[0], realdelta); + finally + DataStreamer.Finalize; + end; + + if (aTableName = '') or (realdelta.Count=0) then begin + // Builds a fake SQL string for updating and displays it + sql := 'Updating query "' + DataStreamer.DeltaNames[0] + '", fields '; + + for i := 0 to (realdelta.LoggedFieldCount - 1) do + sql := sql + realdelta.LoggedFieldNames[i] + '(' + GetEnumName(TypeInfo(TDADataType), Ord(realdelta.LoggedFieldTypes[i])) + '), '; + + sql := Copy(sql, 1, Length(sql) - 2); + + Log(sql); + end + else begin + realDelta.LogicalName:= aTableName; + // setup of ReferencedDataset used in BP.ProcessDelta + with Schema.Datasets.DatasetByName(BusinessProcessor.ReferencedDataset),Statements[0] do begin + TargetTable:=aTableName; + ColumnMappings.Clear; + Fields.Clear; + for i:=0 to realdelta.LoggedFieldCount-1 do begin + Fields.Add(realdelta.LoggedFieldNames[i],realdelta.LoggedFieldTypes[i]); + with ColumnMappings.Add do begin + DatasetField:= realdelta.LoggedFieldNames[i]; + TableField:= realdelta.LoggedFieldNames[i]; + SQLOrigin:= realdelta.LoggedFieldNames[i]; + end; + end; + end; + BusinessProcessor.ProcessDelta(conn,realdelta); + end; + + Result:=Binary.Create; + realdelta.LogicalName:=fOldDeltaname; + DataStreamer.Initialize(Result, aiWrite); + try + DataStreamer.WriteDelta(realdelta); + finally + DataStreamer.Finalize; + end; +end; + +procedure TDynSQLService.BusinessProcessorGenerateSQL( + Sender: TDABusinessProcessor; ChangeType: TDAChangeType; + const ReferencedStatement: TDAStatement; const aDelta: IDADelta; + var SQL: String); +begin + Log('Generated SQL: '+SQL); +end; + +procedure TDynSQLService.BusinessProcessorProcessError( + Sender: TDABusinessProcessor; aChangeType: TDAChangeType; + aChange: TDADeltaChange; const aCommand: IDASQLCommand; + var CanRemoveFromDelta: Boolean; Error: Exception); +begin + Log('Error during processing change (RecID=' + IntToStr(aChange.RecID)+')'); + Log(Error.Message); +end; + +procedure TDynSQLService.BusinessProcessorAfterProcessChange( + Sender: TDABusinessProcessor; aChange: TDADeltaChange; + Processed: Boolean; var CanRemoveFromDelta: Boolean); +begin + if Processed then + Log('Change (RecID=' + IntToStr(aChange.RecID) +') is processed') + else + Log('Change (RecID=' + IntToStr(aChange.RecID) +') isn''t processed'); +end; + +initialization + TROClassFactory.Create('DynSQLService', Create_DynSQLService, TDynSQLService_Invoker); + +finalization + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/RODLFILE.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/RODLFILE.res new file mode 100644 index 0000000..746553e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic SQL/RODLFILE.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere.Sample.html new file mode 100644 index 0000000..da1066f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere.Sample.html @@ -0,0 +1,30 @@ + + + + + + + + +
+

+ Dynamic Where Sample +

+ +
+

Purpose

+

+ This example illustrates how work with the Dynamic Where.

+

+ +

Getting Started

+ + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere.bpg b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere.bpg new file mode 100644 index 0000000..0a914f1 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = DynWhere_Server.exe DynWhere_Client.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +DynWhere_Server.exe: DynWhere_Server.dpr + $(DCC) + +DynWhere_Client.exe: DynWhere_Client.dpr + $(DCC) + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere.groupproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere.groupproj new file mode 100644 index 0000000..7b0c875 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere.groupproj @@ -0,0 +1,44 @@ + + + {efdbc0b3-3cba-4a73-9888-3efa9fa82a97} + + + + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Client.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Client.dpr new file mode 100644 index 0000000..d7403c8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Client.dpr @@ -0,0 +1,20 @@ +program DynWhere_Client; + +uses + uROComInit, + Forms, + MidasLib, + DynWhere_ClientMain in 'DynWhere_ClientMain.pas' {DynWhere_ClientForm}, + DynWhere_ClientData in 'DynWhere_ClientData.pas' {DynWhere_ClientDataForm: TDAClientDataModule}, + memoForm in 'memoForm.pas' {frmMemo}, + WhereExpression in 'WhereExpression.pas' {WhereExpressionForm}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'Dynamic Where - Client'; + Application.CreateForm(TDynWhere_ClientDataForm, DynWhere_ClientDataForm); + Application.CreateForm(TDynWhere_ClientForm, DynWhere_ClientForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Client.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Client.dproj new file mode 100644 index 0000000..d6cc0bb --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Client.dproj @@ -0,0 +1,219 @@ + + + {32915d98-851f-4ad4-b94c-2f0ce6942b73} + DynWhere_Client.dpr + Debug + AnyCPU + DCC32 + DynWhere_Client.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1049 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Core Lab Data Access GUI related Components + Core Lab Data Access Components + Data Access Components for MySQL + MySQL Data Access GUI related Components + Oracle Data Access Components + Oracle Data Access GUI related Components + SQL Server Data Access Components + SQL Server Data Access GUI related Components + RemObjects Data Abstract - InterBase Express Driver + RemObjects Data Abstract - Scripting Integration Library + RemObjects Data Abstract - dbExpress Driver + RemObjects Data Abstract - SQLite Driver + RemObjects Data Abstract - DBISAM Driver + RemObjects Data Abstract - ElevateDB Driver + RemObjects Data Abstract - FIBPlus Driver + RemObjects Data Abstract - CoreLabs IBDAC Driver + RemObjects Data Abstract - CoreLabs MyDAC Driver + Data Abstract - NexusDB Driver + RemObjects Data Abstract - CoreLabs ODAC Driver + RemObjects Data Abstract - MicroOlap PostgresDAC Driver + RemObjects Data Abstract - 'Rosetta' + RemObjects Data Abstract - CoreLabs SDAC Driver + CodeGear C++Builder Office XP Servers Package + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + Core Lab InterBase Data Access Components + Data Access Components for MySQL - TMySQLMonitor + + + DynWhere_Client.dpr + + + + + + + MainSource + + +
DynWhere_ClientDataForm
+ TDAClientDataModule +
+ +
DynWhere_ClientForm
+
+ +
frmMemo
+
+ +
WhereExpressionForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Client.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Client.res new file mode 100644 index 0000000..cc22935 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Client.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ClientData.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ClientData.dfm new file mode 100644 index 0000000..63c6f90 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ClientData.dfm @@ -0,0 +1,60 @@ +object DynWhere_ClientDataForm: TDynWhere_ClientDataForm + OldCreateOrder = True + OnCreate = DataModuleCreate + Left = 439 + Top = 220 + Height = 300 + Width = 300 + object Channel: TROWinInetHTTPChannel + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/BIN' + ServerLocators = <> + DispatchOptions = [] + Left = 40 + Top = 8 + end + object Message: TROBinMessage + Left = 40 + Top = 52 + end + object RemoteService: TRORemoteService + Message = Message + Channel = Channel + ServiceName = 'DynWhere_Service' + Left = 40 + Top = 96 + end + object DataStreamer: TDABin2DataStreamer + Left = 40 + Top = 140 + end + object RemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RemoteService + GetDataCall.RemoteService = RemoteService + UpdateDataCall.RemoteService = RemoteService + GetScriptsCall.RemoteService = RemoteService + RemoteService = RemoteService + DataStreamer = DataStreamer + Left = 40 + Top = 184 + end + object tbl_Data: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = RemoteDataAdapter + LocalDataStreamer = DataStreamer + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Employees' + Left = 136 + Top = 24 + end + object ds_Data: TDADataSource + DataSet = tbl_Data.Dataset + DataTable = tbl_Data + Left = 136 + Top = 80 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ClientData.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ClientData.pas new file mode 100644 index 0000000..5dec311 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ClientData.pas @@ -0,0 +1,39 @@ +unit DynWhere_ClientData; + +interface + +uses + {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROWinInetHTTPChannel, + {Data Abstract:} uDADataTable, uDABin2DataStreamer, uDAInterfaces, uDARemoteDataAdapter, + uDADataStreamer, uDAScriptingProvider, uDAMemDataTable; + +type + TDynWhere_ClientDataForm = class(TDataModule) + Message: TROBinMessage; + Channel: TROWinInetHTTPChannel; + RemoteService: TRORemoteService; + DataStreamer: TDABin2DataStreamer; + RemoteDataAdapter: TDARemoteDataAdapter; + tbl_Data: TDAMemDataTable; + ds_Data: TDADataSource; + procedure DataModuleCreate(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + DynWhere_ClientDataForm: TDynWhere_ClientDataForm; + +implementation + +{$R *.dfm} + +procedure TDynWhere_ClientDataForm.DataModuleCreate(Sender: TObject); +begin + RemoteDataAdapter.SetupDefaultRequest; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ClientMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ClientMain.dfm new file mode 100644 index 0000000..0a95281 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ClientMain.dfm @@ -0,0 +1,641 @@ +object DynWhere_ClientForm: TDynWhere_ClientForm + Left = 329 + Top = 175 + AutoScroll = False + Caption = 'Dynamic Where Client' + ClientHeight = 442 + ClientWidth = 700 + Color = clBtnFace + Constraints.MinHeight = 478 + Constraints.MinWidth = 640 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 700 + Height = 201 + Align = alTop + BevelOuter = bvNone + TabOrder = 0 + object Panel2: TPanel + Left = 0 + Top = 0 + Width = 233 + Height = 201 + Align = alLeft + BevelOuter = bvNone + TabOrder = 1 + object DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton + Left = 8 + Top = 8 + Width = 212 + Height = 48 + Cursor = crHandPoint + end + object btnOpenClose: TButton + Left = 16 + Top = 72 + Width = 75 + Height = 25 + Caption = 'Open' + TabOrder = 0 + OnClick = btnOpenCloseClick + end + object btnXML: TButton + Left = 16 + Top = 112 + Width = 75 + Height = 25 + Caption = 'Show XML' + TabOrder = 1 + Visible = False + OnClick = btnXMLClick + end + object btnDelphi: TButton + Left = 16 + Top = 152 + Width = 75 + Height = 25 + Caption = 'Delphi Code' + TabOrder = 2 + Visible = False + OnClick = btnDelphiClick + end + end + object Pan_Cond: TPanel + Left = 233 + Top = 0 + Width = 467 + Height = 201 + Align = alClient + BevelOuter = bvNone + TabOrder = 0 + Visible = False + object panSet: TPanel + Left = 0 + Top = 0 + Width = 467 + Height = 25 + Align = alTop + BevelOuter = bvNone + Caption = + 'Set Values for appropriated fields and click Open/Refresh button' + + ':' + TabOrder = 0 + end + object Panel4: TPanel + Left = 0 + Top = 25 + Width = 467 + Height = 151 + Align = alClient + BevelOuter = bvNone + TabOrder = 1 + object lbOper: TListBox + Left = 0 + Top = 0 + Width = 416 + Height = 151 + Align = alClient + ItemHeight = 13 + TabOrder = 0 + OnClick = lbOperClick + OnDblClick = lbOperDblClick + OnKeyDown = lbOperKeyDown + end + object Panel5: TPanel + Left = 416 + Top = 0 + Width = 51 + Height = 151 + Align = alRight + BevelOuter = bvNone + TabOrder = 1 + object ToolBar1: TToolBar + Left = 0 + Top = 0 + Width = 27 + Height = 151 + Align = alLeft + AutoSize = True + ButtonHeight = 24 + Caption = 'ToolBar1' + EdgeInner = esNone + EdgeOuter = esNone + Images = ImageList1 + Indent = 4 + ParentShowHint = False + ShowHint = True + TabOrder = 0 + Wrapable = False + object tbCondNew: TToolButton + Left = 4 + Top = 2 + Action = aCondNew + Wrap = True + end + object TToolButton + Left = 4 + Top = 26 + Action = aCondEdit + Wrap = True + end + object TToolButton + Left = 4 + Top = 50 + Action = aCondDelete + Wrap = True + end + object TToolButton + Left = 4 + Top = 74 + Action = aCondUp + Wrap = True + end + object TToolButton + Left = 4 + Top = 98 + Action = aCondDown + Wrap = True + end + end + end + end + object Panel6: TPanel + Left = 0 + Top = 176 + Width = 467 + Height = 25 + Align = alBottom + BevelOuter = bvNone + Caption = 'All logical operators have equal precedence!' + TabOrder = 2 + end + end + end + object DBGrid: TDBGrid + Left = 0 + Top = 201 + Width = 700 + Height = 241 + Align = alClient + DataSource = DynWhere_ClientDataForm.ds_Data + TabOrder = 1 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object CondActionList: TActionList + Images = ImageList1 + Left = 337 + Top = 49 + object aCondEdit: TAction + Caption = 'Edit' + Hint = 'Edit' + ImageIndex = 2 + OnExecute = aCondEditExecute + end + object aCondNew: TAction + Caption = 'aCondNew' + Hint = 'New' + ImageIndex = 0 + OnExecute = aCondNewExecute + end + object aCondDelete: TAction + Caption = 'aCondDelete' + Hint = 'Delete' + ImageIndex = 1 + OnExecute = aCondDeleteExecute + end + object aCondUp: TAction + Caption = 'aCondUp' + Hint = 'Up' + ImageIndex = 3 + OnExecute = aCondUpExecute + end + object aCondDown: TAction + Caption = 'aCondDown' + Hint = 'Down' + ImageIndex = 4 + OnExecute = aCondDownExecute + end + end + object ImageList1: TImageList + Left = 425 + Top = 57 + Bitmap = { + 494C010108000900040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000003000000001002000000000000030 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000848400000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000084840000848400008484000000000000000000000000 + 0000000000000000000000000000000000000000000000000000808080000000 + 000000000000808000000000000000000000C0C0C00000000000000000000000 + 000080808000000000000000000000000000008080000000000000000000C0C0 + C000000000000000000000000000000000008080800000000000000000000000 + 00000000000000000000000000000080800000000000C0C0C00000000000C0C0 + C000000000000000000080808000000000000000000080800000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000008484000084840000848400008484000084840000000000000000 + 00000000000000000000000000000000000000000000C0C0C000000000000000 + 00000000000000000000C0C0C00000000000C0C0C00000000000000000000000 + 000000000000000000000000000000000000C0C0C00000000000000000000000 + 0000C0C0C0000000000000000000C0C0C00000000000C0C0C000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C0C0C00000000000000000000000000000000000C0C0C0000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000848400008484000084840000848400008484000084840000848400000000 + 0000000000000000000000000000000000000000000000000000C0C0C0000000 + 000000000000C0C0C0000000000000000000C0C0C00000000000000000000000 + 0000C0C0C0000000000000000000000000000000000000000000C0C0C0000000 + 000000000000000000000000000000000000C0C0C000C0C0C000000000000000 + 00000000000000000000000000000000000000000000C0C0C00000000000C0C0 + C0000000000000000000C0C0C0000000000000000000C0C0C000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000084840000848400008484000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0C0C0000000 + 000000000000C0C0C0000000000000000000C0C0C00000000000000000000000 + 0000800000000000000000000000000000000000000080808000000000008080 + 80000000000000000000000000008080800000000000C0C0C000000000000000 + 00000000000000000000000000000080800000000000C0C0C00080008000C0C0 + C0000000000000000000C0C0C0000000000000000000C0C0C000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000084840000848400008484000000000000000000000000 + 00000000000000000000000000000000000000000000C0C0C000000000000000 + 00000000000000000000C0C0C00000000000C0C0C00000000000000000000000 + 000000000000C0C0C000000000000000000000000000C0C0C00000000000C0C0 + C0000000000000000000000000000000000000000000C0C0C000000000000000 + 0000000000000000000000000000000000000000000000000000C0C0C0000000 + 000000000000C0C0C00000000000000000000000000000000000C0C0C0000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000084840000848400008484000000000000000000000000 + 0000000000000000000000000000000000000000000000000000808080000000 + 000000000000808000000000000000000000C0C0C00000000000000000000000 + 0000800000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000008080800000000000C0C0 + C000000000000000000080808000000000000000000080800000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000084840000848400008484000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484000000000000000000848484008484 + 8400848484008484840084848400848484008484840084848400848484008484 + 8400848484008484840084848400848484000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000848484000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000008484840000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF0000FF + FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00000000000000 + 0000FFFFFF0000FFFF0000000000848484000000000000000000FFFFFF0000FF + FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00000000000000 + 0000FFFFFF0000FFFF00000000008484840000000000FFFFFF00000000000000 + 0000FFFFFF000000000000000000000000000000000000000000FFFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000FFFF00FFFF + FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000000000C6C6 + C60000000000FFFFFF000000000084848400848484000000000000FFFF00FFFF + FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000000000C6C6 + C60000000000FFFFFF00000000008484840000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF0000FF + FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF000000000000FF + FF00C6C6C6000000000000000000848484000000840000000000FFFFFF0000FF + FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF000000000000FF + FF00C6C6C60000000000000000008484840000000000FFFFFF00000000000000 + 0000FFFFFF000000000000000000000000000000000000000000FFFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000084840000848400008484000000000000000000000000 + 000000000000000000000000000000000000000000000000000000FFFF00FFFF + FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000000000 + 000000000000000000000000000084848400000084000000840000FFFF00FFFF + FF0000FFFF00FFFFFF00848484000000840000FFFF00FFFFFF00000000000000 + 00000000000000000000000000008484840000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000084840000848400008484000000000000000000000000 + 000000000000000000000000000000000000FFFFFF0000000000FFFFFF008484 + 840000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF0000FFFF00FFFFFF0000FF + FF00FFFFFF0000FFFF00000000008484840084848400000084008484840000FF + FF00FFFFFF00848484000000840084848400FFFFFF0000FFFF00FFFFFF0000FF + FF00FFFFFF0000FFFF00000000008484840000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000084840000848400008484000000000000000000000000 + 0000000000000000000000000000000000008484840000FFFF0000FFFF008484 + 8400FFFFFF0000FFFF008484840000FFFF00FFFFFF00FFFFFF0000FFFF00FFFF + FF0000FFFF00FFFFFF0000000000848484000000000000008400000084008484 + 840000FFFF000000840000008400FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF + FF0000FFFF00FFFFFF00000000008484840000000000FFFFFF00000000000000 + 0000FFFFFF00FFFFFF00FFFFFF0000000000C6C6C60000000000FFFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000084840000848400008484000000000000000000000000 + 0000000000000000000000000000000000000000000084848400FFFFFF008484 + 840000FFFF008484840000FFFF00FFFFFF0000FFFF0000FFFF00FFFFFF0000FF + FF00FFFFFF0000FFFF0000000000848484000000000084848400000084000000 + 84000000840000008400FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF + FF00FFFFFF0000FFFF00000000008484840000000000FFFFFF0000000000C6C6 + C60000000000FFFFFF0000000000C6C6C60000000000C6C6C600000000000000 + 0000000000000000000084000000840000000000000000000000000000000000 + 0000848400008484000084840000848400008484000084840000848400000000 + 000000000000000000000000000000000000848484008484840084848400FFFF + FF0084848400FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF + FF0000FFFF00FFFFFF0000000000848484000000000084848400000084000000 + 840000008400FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF + FF0000FFFF00FFFFFF00000000008484840000000000FFFFFF00FFFFFF000000 + 0000C6C6C60000000000C6C6C60000000000C6C6C60000000000C6C6C600C6C6 + C600C6C6C6000000000084000000840000000000000000000000000000000000 + 0000000000008484000084840000848400008484000084840000000000000000 + 000000000000000000000000000000000000FFFFFF0000FFFF008484840000FF + FF00FFFFFF008484840084848400848484008484840000000000000000000000 + 0000000000000000000000000000000000008484840000008400000084000000 + 8400000084008484840000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000C6C6C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60084000000840000000000000000000000000000000000 + 0000000000000000000084840000848400008484000000000000000000000000 + 000000000000000000000000000000000000000000008484840000FFFF008484 + 840000FFFF008484840000FFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000840000008400848484000000 + 0000000084000000840084848400000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C600C6C6C60084000000840000000000000000000000000000000000 + 0000000000000000000000000000848400000000000000000000000000000000 + 0000000000000000000000000000000000008484840000FFFF00000000008484 + 8400FFFFFF00000000008484840000FFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000840000008400848484000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600C6C6C6000000000084000000840000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000FFFF0000000000000000008484 + 840000FFFF000000000000000000848484000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000008400000084008484840000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000084000000840000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008484 + 8400FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000040000000300000000100010000000000800100000000000000000000 + 000000000000000000000000FFFFFF0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC7FFFFF7591FFFF + F83FC33325162436F01F99370416A996E00F99278C168995C00799078C968991 + F83F99338D918996F83FC307FFFF2431F83FFFFFFFFFFFFFF83FFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000C000000FFFFF + 80008000000FFFFF80008000000FFFFF80000000000FF83F80000000000FF83F + 80000000000FF83F00000000000FF83F00008000000FC007800080000004E00F + 000080000000F01F000100010000F83F81FF11FFF800FC7F24FFF8FFFC00FEFF + 66FFFC7FFE04FFFFE7FFFFFFFFFFFFFF00000000000000000000000000000000 + 000000000000} + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ClientMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ClientMain.pas new file mode 100644 index 0000000..c5400c1 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ClientMain.pas @@ -0,0 +1,498 @@ +unit DynWhere_ClientMain; + +interface + +uses + Forms, StdCtrls, Controls, Grids, DBGrids, Classes, ExtCtrls, + ActnList, Buttons, ImgList, ComCtrls, ToolWin, Menus, + uROPoweredByRemObjectsButton, + uDAPoweredByDataAbstractButton, + uDAInterfaces + ; + +type + TFldOperator = record + FldName: string; + LogOper: TDABinaryOperator; + Oper: TDABinaryOperator; + Value: variant; + end; + + TDynWhere_ClientForm = class(TForm) + Panel1: TPanel; + DBGrid: TDBGrid; + Panel2: TPanel; + DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton; + btnOpenClose: TButton; + Pan_Cond: TPanel; + panSet: TPanel; + btnXML: TButton; + Panel4: TPanel; + lbOper: TListBox; + Panel5: TPanel; + Panel6: TPanel; + CondActionList: TActionList; + aCondEdit: TAction; + aCondNew: TAction; + aCondDelete: TAction; + aCondUp: TAction; + ImageList1: TImageList; + ToolBar1: TToolBar; + aCondDown: TAction; + tbCondNew: TToolButton; + btnDelphi: TButton; + procedure btnXMLClick(Sender: TObject); + procedure btnOpenCloseClick(Sender: TObject); + procedure lbOperDblClick(Sender: TObject); + procedure aCondEditExecute(Sender: TObject); + procedure aCondNewExecute(Sender: TObject); + procedure aCondDeleteExecute(Sender: TObject); + procedure aCondUpExecute(Sender: TObject); + procedure aCondDownExecute(Sender: TObject); + procedure lbOperKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); + procedure btnDelphiClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure lbOperClick(Sender: TObject); + private + { Private declarations } + fExpression: array of TFldOperator; + fXML: string; + fDelphiCode: string; + procedure CheckEditButtons(); + procedure RebuildCondList(); + function GetXML(): string; + public + { Public declarations } + end; + +var + DynWhere_ClientForm: TDynWhere_ClientForm; + +implementation + +uses + Windows, SysUtils, Variants, TypInfo, + uDADataTable, uDASQL92QueryBuilder, + DynWhere_ClientData, memoForm, WhereExpression; + +{$R *.dfm} + +const + c_Invalid_XML = '*'; + +procedure TDynWhere_ClientForm.FormCreate(Sender: TObject); +begin + fXML := c_Invalid_XML; + ActiveControl := btnOpenClose; +end; + +procedure TDynWhere_ClientForm.btnOpenCloseClick(Sender: TObject); +var + Tbl: TDADataTable; + OldCur: TCursor; + XML: string; +begin + OldCur := Screen.Cursor; + + try + Screen.Cursor := crHourGlass; + Tbl := DynWhere_ClientDataForm.tbl_Data; + + if Pan_Cond.Visible then + begin + Tbl.Active := False; + XML := GetXML(); + + if XML = '' then + Tbl.DynamicWhere.Clear() + else + Tbl.DynamicWhere.Xml := GetXML(); + + Tbl.Active := True; + end + else + begin + Tbl.Active := True; + Pan_Cond.Visible := True; + btnOpenClose.Caption := 'Refresh'; + btnXML.Visible := True; + btnDelphi.Visible := True; + end; + + ActiveControl := lbOper; + CheckEditButtons(); + finally + Screen.Cursor := OldCur; + end; +end; + +procedure TDynWhere_ClientForm.btnXMLClick(Sender: TObject); +begin + TfrmMemo.Execute('XML pass to Server', GetXML(), True); +end; + +procedure TDynWhere_ClientForm.lbOperDblClick(Sender: TObject); +begin + aCondEdit.Execute(); +end; + +procedure TDynWhere_ClientForm.lbOperClick(Sender: TObject); +begin + CheckEditButtons(); +end; + +procedure TDynWhere_ClientForm.aCondEditExecute(Sender: TObject); +var + i: integer; +begin + i := integer(lbOper.Items.Objects[lbOper.ItemIndex]); + + if TWhereExpressionForm.Execute(DynWhere_ClientDataForm.tbl_Data.Fields, + fExpression[i].FldName, fExpression[i].LogOper, + fExpression[i].Oper, fExpression[i].Value) then + RebuildCondList(); +end; + +procedure TDynWhere_ClientForm.aCondNewExecute(Sender: TObject); +var + FldName: string; + LogOper, Oper: TDABinaryOperator; + Value: variant; + i: integer; +begin + if TWhereExpressionForm.Execute(DynWhere_ClientDataForm.tbl_Data.Fields, + FldName, LogOper, Oper, Value) then + begin + SetLength(fExpression, Length(fExpression) + 1); + i := High(fExpression); + fExpression[i].FldName := FldName; + fExpression[i].LogOper := LogOper; + fExpression[i].Oper := Oper; + fExpression[i].Value := Value; + RebuildCondList(); + lbOper.ItemIndex := lbOper.Items.Count - 1; + CheckEditButtons(); + end; +end; + +procedure TDynWhere_ClientForm.aCondDeleteExecute(Sender: TObject); +var + i, ii: integer; +begin + ii := lbOper.ItemIndex; + + if ii >= 0 then + begin + ii := integer(lbOper.Items.Objects[ii]); + + for i := ii + 1 to High(fExpression) do + fExpression[i - 1] := fExpression[i]; + + SetLength(fExpression, Length(fExpression) - 1); + RebuildCondList(); + end; +end; + +procedure TDynWhere_ClientForm.aCondUpExecute(Sender: TObject); +var + i: integer; + Oper: TFldOperator; +begin + i := integer(lbOper.Items.Objects[lbOper.ItemIndex]); + Oper := fExpression[i]; + fExpression[i] := fExpression[i - 1]; + fExpression[i - 1] := Oper; + lbOper.ItemIndex := i - 1; + RebuildCondList(); +end; + +procedure TDynWhere_ClientForm.aCondDownExecute(Sender: TObject); +var + i: integer; + Oper: TFldOperator; +begin + i := integer(lbOper.Items.Objects[lbOper.ItemIndex]); + Oper := fExpression[i]; + fExpression[i] := fExpression[i + 1]; + fExpression[i + 1] := Oper; + lbOper.ItemIndex := i + 1; + RebuildCondList(); +end; + +procedure TDynWhere_ClientForm.CheckEditButtons(); +var + ii: integer; +begin + ii := lbOper.ItemIndex; + aCondUp.Enabled := (ii > 0); + aCondDown.Enabled := (ii >= 0) and (ii < (lbOper.Items.Count - 1)); + aCondEdit.Enabled := (ii >= 0); + aCondDelete.Enabled := (ii >= 0); + btnXML.Enabled := (lbOper.Items.Count > 0); +end; + +procedure TDynWhere_ClientForm.RebuildCondList(); + function Val2Str(const FldName: string; const Val: variant; IsList: Boolean): string; + var + DT: TDADataType; + Lst: TStrings; + i: integer; + begin + if IsList then + begin + Result := ''; + Lst := TStringList.Create(); + + try + Lst.CommaText := string(Val); + for i := 0 to Lst.Count - 1 do + if Result = '' then + Result := Val2Str(FldName, Lst[i], False) + else + Result := Result + ',' + Val2Str(FldName, Lst[i], False); + finally + Lst.Free(); + end; + end + else + begin + DT := DynWhere_ClientDataForm.tbl_Data.FieldByName(FldName).DataType; + + if DT = datDateTime then + if VarType(Val) = varString then + Result := '''' + Val + '''' + else + Result := '''' + DateTimeToStr(Val) + '''' + else + if DT in [datString, datWideString, datMemo, datWideMemo] then + Result := '''' + Val + '''' + else + Result := Val; + end; + end; +const + c_Oper: array[TDABinaryOperator] of string = + ('AND', 'OR', 'XOR', '<', '<=', '>', '>=', '!=', '=', 'like', 'in', '+', '-', '*', '/'); +var + i, ii: integer; + sOper, sValue: string; +begin + fXML := c_Invalid_XML; + ii := lbOper.ItemIndex; + lbOper.Items.BeginUpdate; + + try + lbOper.Items.Clear; + + for i := Low(fExpression) to High(fExpression) do + begin + if fExpression[i].Oper = dboIn then + sValue := Format('in (%s)', [Val2Str(fExpression[i].FldName, fExpression[i].Value, True)]) + else + if VarIsNULL(fExpression[i].Value) then + if fExpression[i].Oper = dboEqual then + sValue := 'is NULL' + else + sValue := 'is not NULL' + else + sValue := c_Oper[fExpression[i].Oper] + ' ' + + Val2Str(fExpression[i].FldName, fExpression[i].Value, False); + + sOper := c_Oper[fExpression[i].LogOper]; + + if lbOper.Items.Count = 0 then + sOper := '/* ' + sOper + ' */'; + + lbOper.Items.AddObject(Format('%s %s %s', + [sOper, fExpression[i].FldName, sValue]), + TObject(i)); + end; + finally + lbOper.Items.EndUpdate; + end; + + if ii >= lbOper.Items.Count then + ii := lbOper.Items.Count - 1; + + lbOper.ItemIndex := ii; + CheckEditButtons(); +end; + +procedure TDynWhere_ClientForm.lbOperKeyDown(Sender: TObject; + var Key: Word; Shift: TShiftState); +begin + if Key = VK_INSERT then + aCondNew.Execute() + else if Key = VK_DELETE then + aCondDelete.Execute() + else if (Key = VK_F2) or (Key = VK_RETURN) then + aCondEdit.Execute() + else if (Shift = [ssCtrl]) and (Key = VK_UP) then + aCondUp.Execute() + else if (Shift = [ssCtrl]) and (Key = VK_DOWN) then + aCondDown.Execute(); +end; + +procedure TDynWhere_ClientForm.btnDelphiClick(Sender: TObject); +begin + GetXML(); + TfrmMemo.Execute('Delphi Code', fDelphiCode, False); +end; + +function TDynWhere_ClientForm.GetXML(): string; +var + i, j: integer; + L, R, Where, Expr: TDAWhereExpression; + Lst: TStrings; + aExpr: array of TDAWhereExpression; + DT: TDADataType; + NeedNot: Boolean; + LogOper: TDABinaryOperator; + WB: TDAWhereBuilder; + Log: TStrings; + S: string; + + function sMake_Const(const V: variant): string; + begin + if VarIsNULL(V) then + Result := 'NewNull()' + else + begin + if DT = datDateTime then + if VarType(V) = varString then + Result := Format('StrToDateTime(''%s'')', [string(V)]) + else + Result := Format('StrToDateTime(''%s'')', [DateToStr(V)]) + else + if DT in [datString, datWideString, datMemo, datWideMemo] then + Result := Format('''%s''', [string(V)]) + else + Result := V; + + Result := Format('NewConstant(%s, %s)', + [Result, GetEnumName(TypeInfo(TDADataType), integer(DT))]); + end; + end; + +begin + if fXML = c_Invalid_XML then + begin + WB := nil; + Where := nil; + Log := TStringList.Create; + + try + Log.Add('procedure Make_DynamicWhere;'); + Log.Add('var'); + Log.Add(' L, R, Expr: TDAWhereExpression;'); + Log.Add('begin'); + Log.Add(' DADataTable.Close();'); + Log.Add(''); + Log.Add(' with DADataTable.DynamicWhere do'); + Log.Add(' begin'); + Log.Add(' Clear();'); + + for i := Low(fExpression) to High(fExpression) do + begin + if WB = nil then + WB := TDAWhereBuilder.Create(); + + NeedNot := False; + LogOper := fExpression[i].Oper; + DT := DynWhere_ClientDataForm.tbl_Data.FieldByName(fExpression[i].FldName).DataType; + + if LogOper = dboIn then + begin + Lst := TStringList.Create(); + + try + Lst.CommaText := fExpression[i].Value; + SetLength(aExpr, Lst.Count); + S := ''; + + for j := 0 to Lst.Count - 1 do + begin + if DT = datDateTime then + aExpr[j] := WB.NewConstant(StrToDateTime(Lst[j]), DT) + else + aExpr[j] := WB.NewConstant(Lst[j], DT); + + if S = '' then + S := sMake_Const(Lst[j]) + else + S := Format('%s, %s', [S, sMake_Const(Lst[j])]); + end; + finally + Lst.Free; + end; + + R := WB.NewList(aExpr); + Log.Add(Format(' R := NewList([%s]);', [S])); + end + else + begin + if VarIsNULL(fExpression[i].Value) then + begin + R := WB.NewNull(); + + if LogOper = dboNotEqual then + begin + LogOper := dboEqual; + NeedNot := True; + end; + end + else + R := WB.NewConstant(fExpression[i].Value, DT); + end; + + Log.Add(Format(' R := %s;', [sMake_Const(fExpression[i].Value)])); + L := WB.NewField('', fExpression[i].FldName); + Log.Add(Format(' L := NewField('''', ''%s'');', [fExpression[i].FldName])); + Expr := WB.NewBinaryExpression(L, R, LogOper); + Log.Add(Format(' Expr := NewBinaryExpression(L, R, %s);', + [GetEnumName(TypeInfo(TDABinaryOperator), integer(LogOper))])); + + if NeedNot then + begin + Expr := WB.NewUnaryExpression(Expr, duoNot); + Log.Add(' Expr := NewUnaryExpression(Expr, duoNot);'); + end; + + if Assigned(Where) then + begin + Where := WB.NewBinaryExpression(Where, Expr, fExpression[i].LogOper); + Log.Add(Format(' Expression := NewBinaryExpression(Expression, Expr, %s);', + [GetEnumName(TypeInfo(TDABinaryOperator), integer(fExpression[i].LogOper))])); + end + else + begin + Where := Expr; + Log.Add(' Expression := Expr;'); + end; + end; + + if Assigned(WB) then + begin + WB.Expression := Where; + fXML := WB.XML; + end + else + fXML := ''; + + Log.Add(' end;'); + Log.Add(''); + Log.Add(' DADataTable.Open();'); + Log.Add('end;'); + fDelphiCode := Log.Text; + finally + WB.Free; + Log.Free; + end; + end; + + Result := fXML; +end; + + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Library.rodl b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Library.rodl new file mode 100644 index 0000000..ddc076a --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Library.rodl @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Library_Intf.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Library_Intf.pas new file mode 100644 index 0000000..28cc52f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Library_Intf.pas @@ -0,0 +1,82 @@ +unit DynWhere_Library_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf, + {Used RODLs:} DataAbstract4_Intf; + +const + { Library ID } + LibraryUID = '{6FE385D0-259A-47F4-933C-9626A169FB88}'; + TargetNamespace = ''; + + { Service Interface ID's } + IDynWhere_Service_IID : TGUID = '{55D412A7-8A48-4BD1-B557-BCA976C2AF80}'; + + { Event ID's } + +type + { Forward declarations } + IDynWhere_Service = interface; + + + + + + { Enumerateds } + + { IDynWhere_Service } + IDynWhere_Service = interface(IDataAbstractService) + ['{55D412A7-8A48-4BD1-B557-BCA976C2AF80}'] + end; + + { CoDynWhere_Service } + CoDynWhere_Service = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDynWhere_Service; + end; + + { TDynWhere_Service_Proxy } + TDynWhere_Service_Proxy = class(TDataAbstractService_Proxy, IDynWhere_Service) + protected + function __GetInterfaceName:string; override; + + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uROSerializer, uRORes; + +{ CoDynWhere_Service } + +class function CoDynWhere_Service.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDynWhere_Service; +begin + result := TDynWhere_Service_Proxy.Create(aMessage, aTransportChannel); +end; + +function TDynWhere_Service_Proxy.__GetInterfaceName:string; +begin + result := 'DynWhere_Service'; +end; + +initialization + RegisterProxyClass(IDynWhere_Service_IID, TDynWhere_Service_Proxy); + + +finalization + UnregisterProxyClass(IDynWhere_Service_IID); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Library_Invk.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Library_Invk.pas new file mode 100644 index 0000000..519605e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Library_Invk.pas @@ -0,0 +1,35 @@ +unit DynWhere_Library_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Used RODL Intf's:} DataAbstract4_Intf, + {Used RODL Invk's:} DataAbstract4_Invk, + {Generated:} DynWhere_Library_Intf; + +type + TDynWhere_Service_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +initialization +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Server.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Server.dpr new file mode 100644 index 0000000..782bc8b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Server.dpr @@ -0,0 +1,30 @@ +program DynWhere_Server; + +{#ROGEN:DynWhere_Library.RODL} // RemObjects SDK: Careful, do not remove! + +uses + uROComInit, + uROComboService, + Forms, + DynWhere_ServerMain in 'DynWhere_ServerMain.pas' {ServerForm}, + DynWhere_ServerData in 'DynWhere_ServerData.pas' {ServerDataModule: TDataModule}, + DynWhere_Library_Intf in 'DynWhere_Library_Intf.pas', + DynWhere_Library_Invk in 'DynWhere_Library_Invk.pas', + DynWhere_Service_Impl in 'DynWhere_Service_Impl.pas' {DynWhere_Service: TDataAbstractService}; + +{$R *.res} +{$R RODLFile.res} + +begin + if ROStartService('DynWhere', 'DynWhere') then begin + ROService.CreateForm(TServerDataModule, ServerDataModule); + ROService.Run; + Exit; + end; + + Application.Initialize; + Application.Title := 'Dynamic Where - Server'; + Application.CreateForm(TServerDataModule, ServerDataModule); + Application.CreateForm(TServerForm, ServerForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Server.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Server.dproj new file mode 100644 index 0000000..0ee5b0a --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Server.dproj @@ -0,0 +1,219 @@ + + + {d7530199-da63-4dbd-b1b3-7f797bcb5316} + DynWhere_Server.dpr + Debug + AnyCPU + DCC32 + DynWhere_Server.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1049 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Core Lab Data Access GUI related Components + Core Lab Data Access Components + Data Access Components for MySQL + MySQL Data Access GUI related Components + Oracle Data Access Components + Oracle Data Access GUI related Components + SQL Server Data Access Components + SQL Server Data Access GUI related Components + RemObjects Data Abstract - InterBase Express Driver + RemObjects Data Abstract - Scripting Integration Library + RemObjects Data Abstract - dbExpress Driver + RemObjects Data Abstract - SQLite Driver + RemObjects Data Abstract - DBISAM Driver + RemObjects Data Abstract - ElevateDB Driver + RemObjects Data Abstract - FIBPlus Driver + RemObjects Data Abstract - CoreLabs IBDAC Driver + RemObjects Data Abstract - CoreLabs MyDAC Driver + Data Abstract - NexusDB Driver + RemObjects Data Abstract - CoreLabs ODAC Driver + RemObjects Data Abstract - MicroOlap PostgresDAC Driver + RemObjects Data Abstract - 'Rosetta' + RemObjects Data Abstract - CoreLabs SDAC Driver + CodeGear C++Builder Office XP Servers Package + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + Core Lab InterBase Data Access Components + Data Access Components for MySQL - TMySQLMonitor + + + DynWhere_Server.dpr + + + + + + + MainSource + + + + +
ServerDataModule
+ TDataModule +
+ +
ServerForm
+
+ +
DynWhere_Service
+ TDataAbstractService +
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Server.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Server.res new file mode 100644 index 0000000..7c48bdb Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Server.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ServerData.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ServerData.dfm new file mode 100644 index 0000000..f46aae9 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ServerData.dfm @@ -0,0 +1,63 @@ +object ServerDataModule: TServerDataModule + OldCreateOrder = False + OnCreate = DataModuleCreate + Left = 362 + Top = 208 + Height = 207 + Width = 352 + object Server: TROIndyHTTPServer + Dispatchers = < + item + Name = 'Message' + Message = Message + Enabled = True + PathInfo = 'Bin' + end> + Port = 8099 + Left = 32 + Top = 8 + end + object Message: TROBinMessage + Left = 32 + Top = 56 + end + object ConnectionManager: TDAConnectionManager + Connections = < + item + Name = 'ADO Connection to Northwind' + ConnectionString = + 'ADO?AuxDriver=SQLOLEDB.1;Server=localhost;Database=Northwind;Int' + + 'egrated Security=SSPI;' + ConnectionType = 'MSSQL' + Default = True + end> + DriverManager = DriverManager + PoolingEnabled = True + Left = 136 + Top = 56 + end + object DriverManager: TDADriverManager + DriverDirectory = '%SYSTEM%\' + TraceActive = False + TraceFlags = [] + Left = 136 + Top = 10 + end + object ADODriver: TDAADODriver + Left = 256 + Top = 8 + end + object IBXDriver: TDAIBXDriver + Left = 256 + Top = 56 + end + object DataDictionary: TDADataDictionary + Fields = <> + Left = 32 + Top = 104 + end + object SessionManager: TROInMemorySessionManager + Left = 136 + Top = 104 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ServerData.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ServerData.pas new file mode 100644 index 0000000..b987dda --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ServerData.pas @@ -0,0 +1,42 @@ +unit DynWhere_ServerData; + +interface + +uses + SysUtils, Classes, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, + uROBinMessage, uROIndyHTTPServer, + uDAEngine, uDADriverManager, uDAClasses, uROSessions, + uDAIBXDriver, uDAADODriver, uROIndyTCPServer; + +type + TServerDataModule = class(TDataModule) + Server: TROIndyHTTPServer; + Message: TROBinMessage; + ConnectionManager: TDAConnectionManager; + DriverManager: TDADriverManager; + ADODriver: TDAADODriver; + IBXDriver: TDAIBXDriver; + DataDictionary: TDADataDictionary; + SessionManager: TROInMemorySessionManager; + + procedure DataModuleCreate(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + ServerDataModule: TServerDataModule; + +implementation + +{$R *.dfm} + +procedure TServerDataModule.DataModuleCreate(Sender: TObject); +begin + Server.Active := true; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ServerMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ServerMain.dfm new file mode 100644 index 0000000..a687bf9 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ServerMain.dfm @@ -0,0 +1,25 @@ +object ServerForm: TServerForm + Left = 372 + Top = 277 + BorderStyle = bsDialog + Caption = 'Dynamic Where Server' + ClientHeight = 64 + ClientWidth = 228 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object DAPoweredByDataAbstractButton: TDAPoweredByDataAbstractButton + Left = 8 + Top = 8 + Width = 212 + Height = 48 + Cursor = crHandPoint + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ServerMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ServerMain.pas new file mode 100644 index 0000000..198c6ec --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_ServerMain.pas @@ -0,0 +1,26 @@ +unit DynWhere_ServerMain; + +interface + +uses + Forms, Classes, Controls, + uROPoweredByRemObjectsButton, uDAPoweredByDataAbstractButton + ; + +type + TServerForm = class(TForm) + DAPoweredByDataAbstractButton: TDAPoweredByDataAbstractButton; + private + { Private declarations } + public + { Public declarations } + end; + +var + ServerForm: TServerForm; + +implementation + +{$R *.dfm} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Service_Impl.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Service_Impl.dfm new file mode 100644 index 0000000..756742d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Service_Impl.dfm @@ -0,0 +1,318 @@ +object DynWhere_Service: TDynWhere_Service + OldCreateOrder = True + SessionManager = ServerDataModule.SessionManager + ServiceSchema = Schema + ServiceDataStreamer = DataStreamer + ExportedDataTables = <> + Left = 400 + Top = 232 + Height = 300 + Width = 300 + object Schema: TDASchema + ConnectionManager = ServerDataModule.ConnectionManager + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'ADO Connection to Northwind' + ConnectionType = 'MSSQL' + Default = True + TargetTable = 'Employees' + Name = 'ADO Connection to Northwind' + StatementType = stAutoSQL + ColumnMappings = < + item + DatasetField = 'EmployeeID' + TableField = 'EmployeeID' + end + item + DatasetField = 'LastName' + TableField = 'LastName' + end + item + DatasetField = 'FirstName' + TableField = 'FirstName' + end + item + DatasetField = 'Title' + TableField = 'Title' + end + item + DatasetField = 'TitleOfCourtesy' + TableField = 'TitleOfCourtesy' + end + item + DatasetField = 'BirthDate' + TableField = 'BirthDate' + end + item + DatasetField = 'HireDate' + TableField = 'HireDate' + end + item + DatasetField = 'Address' + TableField = 'Address' + end + item + DatasetField = 'City' + TableField = 'City' + end + item + DatasetField = 'Region' + TableField = 'Region' + end + item + DatasetField = 'PostalCode' + TableField = 'PostalCode' + end + item + DatasetField = 'Country' + TableField = 'Country' + end + item + DatasetField = 'HomePhone' + TableField = 'HomePhone' + end + item + DatasetField = 'Extension' + TableField = 'Extension' + end + item + DatasetField = 'Photo' + TableField = 'Photo' + end + item + DatasetField = 'Notes' + TableField = 'Notes' + end + item + DatasetField = 'ReportsTo' + TableField = 'ReportsTo' + end + item + DatasetField = 'PhotoPath' + TableField = 'PhotoPath' + end> + end> + Name = 'Employees' + Fields = < + item + Name = 'EmployeeID' + DataType = datAutoInc + GeneratorName = 'Employees' + Required = True + InPrimaryKey = True + end + item + Name = 'LastName' + DataType = datWideString + Size = 20 + Required = True + end + item + Name = 'FirstName' + DataType = datWideString + Size = 10 + Required = True + end + item + Name = 'Title' + DataType = datWideString + Size = 30 + end + item + Name = 'TitleOfCourtesy' + DataType = datWideString + Size = 25 + end + item + Name = 'BirthDate' + DataType = datDateTime + end + item + Name = 'HireDate' + DataType = datDateTime + end + item + Name = 'Address' + DataType = datWideString + Size = 60 + end + item + Name = 'City' + DataType = datWideString + Size = 15 + end + item + Name = 'Region' + DataType = datWideString + Size = 15 + end + item + Name = 'PostalCode' + DataType = datWideString + Size = 10 + end + item + Name = 'Country' + DataType = datWideString + Size = 15 + end + item + Name = 'HomePhone' + DataType = datWideString + Size = 24 + end + item + Name = 'Extension' + DataType = datWideString + Size = 4 + end + item + Name = 'Photo' + DataType = datBlob + end + item + Name = 'Notes' + DataType = datMemo + end + item + Name = 'ReportsTo' + DataType = datInteger + end + item + Name = 'PhotoPath' + DataType = datWideString + Size = 255 + end> + end + item + Params = <> + Statements = < + item + Connection = 'ADO Connection to Northwind' + Default = True + TargetTable = 'Customers' + StatementType = stAutoSQL + ColumnMappings = < + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'CompanyName' + TableField = 'CompanyName' + end + item + DatasetField = 'ContactName' + TableField = 'ContactName' + end + item + DatasetField = 'ContactTitle' + TableField = 'ContactTitle' + end + item + DatasetField = 'Address' + TableField = 'Address' + end + item + DatasetField = 'City' + TableField = 'City' + end + item + DatasetField = 'Region' + TableField = 'Region' + end + item + DatasetField = 'PostalCode' + TableField = 'PostalCode' + end + item + DatasetField = 'Country' + TableField = 'Country' + end + item + DatasetField = 'Phone' + TableField = 'Phone' + end + item + DatasetField = 'Fax' + TableField = 'Fax' + end> + end> + Name = 'Customers' + Fields = < + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + Required = True + InPrimaryKey = True + end + item + Name = 'CompanyName' + DataType = datWideString + Size = 40 + Required = True + end + item + Name = 'ContactName' + DataType = datWideString + Size = 30 + end + item + Name = 'ContactTitle' + DataType = datWideString + Size = 30 + end + item + Name = 'Address' + DataType = datWideString + Size = 60 + end + item + Name = 'City' + DataType = datWideString + Size = 15 + end + item + Name = 'Region' + DataType = datWideString + Size = 15 + end + item + Name = 'PostalCode' + DataType = datWideString + Size = 10 + end + item + Name = 'Country' + DataType = datWideString + Size = 15 + end + item + Name = 'Phone' + DataType = datWideString + Size = 24 + end + item + Name = 'Fax' + DataType = datWideString + Size = 24 + end> + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = <> + RelationShips = <> + UpdateRules = <> + Version = 0 + Left = 32 + Top = 24 + end + object DataStreamer: TDABin2DataStreamer + Left = 32 + Top = 72 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Service_Impl.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Service_Impl.pas new file mode 100644 index 0000000..51bad03 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/DynWhere_Service_Impl.pas @@ -0,0 +1,50 @@ +unit DynWhere_Service_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROXMLIntf, uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} DynWhere_Library_Intf, uDAClasses, uDADataStreamer, + uDABin2DataStreamer; + +type + { TDynWhere_Service } + TDynWhere_Service = class(TDataAbstractService, IDynWhere_Service) + DataStreamer: TDABin2DataStreamer; + Schema: TDASchema; + private + protected + { IDynWhere_Service methods } + end; + +implementation + +{$R *.dfm} +uses + {Generated:} DynWhere_Library_Invk, DynWhere_ServerData; + +procedure Create_DynWhere_Service(out anInstance : IUnknown); +begin + anInstance := TDynWhere_Service.Create(nil); +end; + +{ DynWhere_Service } +initialization + TROClassFactory.Create('DynWhere_Service', Create_DynWhere_Service, TDynWhere_Service_Invoker); + +finalization + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/RODLFILE.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/RODLFILE.res new file mode 100644 index 0000000..5b009d0 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/RODLFILE.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/WhereExpression.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/WhereExpression.dfm new file mode 100644 index 0000000..da18d4c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/WhereExpression.dfm @@ -0,0 +1,155 @@ +object WhereExpressionForm: TWhereExpressionForm + Left = 299 + Top = 154 + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = 'Single Expresion' + ClientHeight = 147 + ClientWidth = 519 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 519 + Height = 106 + Align = alClient + BevelOuter = bvNone + TabOrder = 0 + object Label1: TLabel + Left = 72 + Top = 16 + Width = 53 + Height = 13 + Caption = 'Field Name' + end + object Label2: TLabel + Left = 216 + Top = 16 + Width = 46 + Height = 13 + Caption = 'Operation' + end + object lbValue: TLabel + Left = 304 + Top = 16 + Width = 27 + Height = 13 + Caption = 'Value' + Visible = False + end + object cmbFldName: TComboBox + Left = 72 + Top = 32 + Width = 137 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 0 + OnClick = cmbFldNameClick + OnKeyPress = cmbFldNameKeyPress + end + object cmbOper: TComboBox + Left = 216 + Top = 32 + Width = 81 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 1 + OnClick = cmbOperClick + OnKeyPress = cmbOperKeyPress + end + object edtValue: TEdit + Left = 304 + Top = 32 + Width = 209 + Height = 21 + TabOrder = 2 + Visible = False + OnChange = edtValueChange + end + object dtValue: TDateTimePicker + Left = 304 + Top = 32 + Width = 97 + Height = 21 + Date = 39354.876083981480000000 + Time = 39354.876083981480000000 + TabOrder = 3 + Visible = False + OnChange = edtValueChange + end + object emValue: TRichEdit + Left = 304 + Top = 32 + Width = 209 + Height = 65 + ScrollBars = ssBoth + TabOrder = 4 + Visible = False + WordWrap = False + OnChange = edtValueChange + end + object cmbLogOper: TComboBox + Left = 8 + Top = 32 + Width = 57 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + ItemIndex = 0 + TabOrder = 5 + Text = 'AND' + OnClick = cmbLogOperClick + OnKeyPress = cmbLogOperKeyPress + Items.Strings = ( + 'AND' + 'OR' + 'XOR') + end + end + object Panel2: TPanel + Left = 0 + Top = 106 + Width = 519 + Height = 41 + Align = alBottom + BevelOuter = bvNone + TabOrder = 1 + DesignSize = ( + 519 + 41) + object btnOK: TButton + Left = 330 + Top = 0 + Width = 75 + Height = 25 + Anchors = [akTop, akRight] + Caption = 'OK' + Default = True + ModalResult = 1 + TabOrder = 0 + OnClick = btnOKClick + end + object btnCancel: TButton + Left = 426 + Top = 0 + Width = 75 + Height = 25 + Anchors = [akTop, akRight] + Cancel = True + Caption = 'Cancel' + ModalResult = 2 + TabOrder = 1 + end + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/WhereExpression.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/WhereExpression.pas new file mode 100644 index 0000000..f255710 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/WhereExpression.pas @@ -0,0 +1,417 @@ +unit WhereExpression; + +interface + +uses + Forms, Controls, StdCtrls, Classes, ExtCtrls, + uDAInterfaces, ComCtrls + ; + +type + TWhereExpressionForm = class(TForm) + Panel1: TPanel; + Panel2: TPanel; + btnOK: TButton; + btnCancel: TButton; + Label1: TLabel; + cmbFldName: TComboBox; + Label2: TLabel; + cmbOper: TComboBox; + lbValue: TLabel; + edtValue: TEdit; + dtValue: TDateTimePicker; + emValue: TRichEdit; + cmbLogOper: TComboBox; + procedure cmbOperKeyPress(Sender: TObject; var Key: Char); + procedure cmbOperClick(Sender: TObject); + procedure cmbFldNameClick(Sender: TObject); + procedure cmbFldNameKeyPress(Sender: TObject; var Key: Char); + procedure edtValueChange(Sender: TObject); + procedure btnOKClick(Sender: TObject); + procedure cmbLogOperClick(Sender: TObject); + procedure cmbLogOperKeyPress(Sender: TObject; var Key: Char); + private + { Private declarations } + fFlds: TDAFieldCollection; + fDT: TDADataType; + procedure CheckOper(); + procedure CheckButtons(); + function CheckExpresion(): Boolean; + public + { Public declarations } + function ExecuteEx(AFlds: TDAFieldCollection; + var FldName: string; var LogOper, Oper: TDABinaryOperator; var Value: variant): Boolean; + class function Execute(AFlds: TDAFieldCollection; + var FldName: string; var LogOper, Oper: TDABinaryOperator; var Value: variant): Boolean; + end; + + +implementation + +uses + SysUtils, Variants, Dialogs + ; + +{$R *.dfm} + +const + c_is_NULL = -2; + c_is_not_NULL = -3; + +var + Frm: TWhereExpressionForm = nil; + +class function TWhereExpressionForm.Execute(AFlds: TDAFieldCollection; + var FldName: string; var LogOper, Oper: TDABinaryOperator; var Value: variant): Boolean; +begin + if not Assigned(Frm) then + Frm := TWhereExpressionForm.Create(Application); + + Result := Frm.ExecuteEx(AFlds, FldName, LogOper, Oper, Value); +end; + +function TWhereExpressionForm.ExecuteEx(AFlds: TDAFieldCollection; + var FldName: string; var LogOper, Oper: TDABinaryOperator; var Value: variant): Boolean; +var + i, ii: integer; +begin + Result := False; + fFlds := AFlds; + ii := -1; + fDT := datUnknown; + lbValue.Visible := False; + emValue.Visible := False; + dtValue.Visible := False; + edtValue.Visible := False; + + for i := 0 to fFlds.Count - 1 do + begin + cmbFldName.Items.AddObject(fFlds[i].Name, TObject(fFlds[i].DataType)); + + if AnsiSameText(FldName, fFlds[i].Name) then + ii := i; + end; + + emValue.Lines.Clear(); + edtValue.Clear(); + cmbFldName.ItemIndex := ii; + CheckOper(); + + if ii >= 0 then + begin + if VarIsNULL(Value) then + if Oper = dboEqual then + ii := c_is_NULL + else + ii := c_is_not_NULL + else + ii := integer(Oper); + + if LogOper = dboAnd then + cmbLogOper.ItemIndex := 0 + else + if LogOper = dboOr then + cmbLogOper.ItemIndex := 1 + else + if LogOper = dboXor then + cmbLogOper.ItemIndex := 2; + + for i := 0 to cmbOper.Items.Count - 1 do + if integer(cmbOper.Items.Objects[i]) = ii then + begin + cmbOper.ItemIndex := i; + cmbOperClick(cmbOper); + + if emValue.Visible then + emValue.Lines.CommaText := Value + else + if dtValue.Visible then + dtValue.Date := Value + else + if edtValue.Visible then + edtValue.Text := Value; + + break; + end; + end + else + cmbLogOper.ItemIndex := 0; + + btnOK.Enabled := False; + + if ShowModal = mrOK then + begin + FldName := cmbFldName.Items[cmbFldName.ItemIndex]; + ii := integer(cmbOper.Items.Objects[cmbOper.ItemIndex]); + + if ii = c_is_NULL then + begin + Oper := dboEqual; + Value := NULL; + end + else + if ii = c_is_not_NULL then + begin + Oper := dboNotEqual; + Value := NULL; + end + else + begin + if emValue.Visible then + begin + for i := emValue.Lines.Count - 1 downto 0 do + if Trim(emValue.Lines[i]) = '' then + emValue.Lines.Delete(i); + + if emValue.Lines.Count > 0 then + Value := Trim(emValue.Lines.CommaText) + else + begin + Result := False; + exit; + end; + end + else + if dtValue.Visible then + Value := VarFromDateTime(Trunc(dtValue.Date)) + else + if edtValue.Visible then + Value := Trim(edtValue.Text); + + Oper := TDABinaryOperator(ii); + end; + + if cmbLogOper.ItemIndex = 0 then + LogOper := dboAnd + else + if cmbLogOper.ItemIndex = 1 then + LogOper := dboOr + else + if cmbLogOper.ItemIndex = 2 then + LogOper := dboXor; + + Result := True; + end; +end; + +procedure TWhereExpressionForm.cmbOperClick(Sender: TObject); +begin + if cmbOper.DroppedDown + or (cmbOper.ItemIndex < 0) then + exit; + + if integer(cmbOper.Items.Objects[cmbOper.ItemIndex]) < 0 then + begin + lbValue.Visible := False; + emValue.Visible := False; + dtValue.Visible := False; + edtValue.Visible := False; + end + else + begin + lbValue.Visible := True; + + if TDABinaryOperator(cmbOper.Items.Objects[cmbOper.ItemIndex]) = dboIn then + begin + emValue.Visible := True; + dtValue.Visible := False; + edtValue.Visible := False; + end + else + begin + emValue.Visible := False; + + if TDADataType(cmbFldName.Items.Objects[cmbFldName.ItemIndex]) = datDateTime then + begin + dtValue.Visible := True; + edtValue.Visible := False; + end + else + begin + dtValue.Visible := False; + edtValue.Visible := True; + end; + end; + end; + + CheckButtons(); +end; + +procedure TWhereExpressionForm.cmbOperKeyPress(Sender: TObject; + var Key: Char); +begin + if Key = #13 then + begin + if cmbOper.DroppedDown then + cmbOper.DroppedDown := False; + + cmbOperClick(Sender); + Key := #0; + end; +end; + +procedure TWhereExpressionForm.cmbFldNameClick(Sender: TObject); +begin + if cmbFldName.DroppedDown + or (cmbFldName.ItemIndex < 0) then + exit; + + CheckOper(); +end; + +procedure TWhereExpressionForm.cmbFldNameKeyPress(Sender: TObject; + var Key: Char); +begin + if Key = #13 then + begin + if cmbFldName.DroppedDown then + cmbFldName.DroppedDown := False; + + cmbFldNameClick(Sender); + Key := #0; + end; +end; + +procedure TWhereExpressionForm.cmbLogOperClick(Sender: TObject); +begin + if cmbLogOper.DroppedDown + or (cmbLogOper.ItemIndex < 0) then + exit; + + CheckButtons(); +end; + +procedure TWhereExpressionForm.cmbLogOperKeyPress(Sender: TObject; + var Key: Char); +begin + if Key = #13 then + begin + if cmbLogOper.DroppedDown then + cmbLogOper.DroppedDown := False; + + cmbLogOperClick(Sender); + Key := #0; + end; +end; + +procedure TWhereExpressionForm.CheckOper(); + procedure Add_CmbOper(const Oper: array of TDABinaryOperator; + const Txt: array of string); + var + i: integer; + begin + cmbOper.Items.Clear; + + for i := Low(Oper) to High(Oper) do + cmbOper.Items.AddObject(Txt[i], TObject(integer(Oper[i]))); + + cmbOper.Items.AddObject('in', TObject(dboIn)); + cmbOper.Items.AddObject('is NULL', TObject(c_is_NULL)); + cmbOper.Items.AddObject('is not NULL', TObject(c_is_not_NULL)); + cmbOper.ItemIndex := 0; + end; + +var + DT: TDADataType; +begin + cmbOper.Enabled := (cmbFldName.ItemIndex >= 0); + + if cmbOper.Enabled then + begin + DT := TDADataType(cmbFldName.Items.Objects[cmbFldName.ItemIndex]); + + if fDT <> DT then + begin + if DT in [datString, datWideString, datMemo, datWideMemo] then + Add_CmbOper([dboLike, dboEqual, dboNotEqual], ['like', '=', '!=']) + else + Add_CmbOper([dboEqual, dboNotEqual, dboGreater, dboGreaterOrEqual, dboLess, dboLessOrEqual], + ['=', '!=', '>', '>=', '<', '<=']); + fDT := DT; + end; + end + else + cmbOper.Items.Clear; + + cmbOperClick(cmbOper); + CheckButtons(); +end; + +procedure TWhereExpressionForm.CheckButtons(); +begin + btnOK.Enabled := (cmbFldName.ItemIndex >= 0) + and (cmbOper.ItemIndex >= 0); + + if btnOK.Enabled then + if integer(cmbOper.Items.Objects[cmbOper.ItemIndex]) >= 0 then + begin + if emValue.Visible then + btnOK.Enabled := (Trim(emValue.Text) <> '') + else + if dtValue.Visible then + btnOK.Enabled := dtValue.Date > 0 + else + if edtValue.Visible then + btnOK.Enabled := (Trim(edtValue.Text) <> '') + else + btnOK.Enabled := False; + end; +end; + +procedure TWhereExpressionForm.edtValueChange(Sender: TObject); +begin + CheckButtons(); +end; + +procedure TWhereExpressionForm.btnOKClick(Sender: TObject); +begin + if CheckExpresion() then + ModalResult := mrOK + else + ModalResult := mrNone; +end; + +function TWhereExpressionForm.CheckExpresion(): Boolean; + function CheckData(const S: string): Boolean; + begin + Result := False; + + try + if S = '' then + else + if fDT in [datFloat, datCurrency, datDecimal, datSingleFloat] then + StrToFloat(S) + else + if fDT in [datAutoInc, datInteger, datLargeInt, datLargeAutoInc, + datShortInt, datWord, datSmallInt, datCardinal, datLargeUInt] then + StrToInt(S) + else + if fDT = datDateTime then + StrToDateTime(S); + + Result := True; + except + MessageDlg(Format('"%s" is not valid field value', [S]), mtError, [mbOK], 0); + end; + end; + +var + i: integer; +begin + Result := True; + + if emValue.Visible then + begin + for i := 0 to emValue.Lines.Count - 1 do + if not CheckData(Trim(emValue.Lines[i])) then + begin + Result := False; + break; + end; + end + else + if edtValue.Visible then + Result := CheckData(Trim(edtValue.Text)); +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/memoForm.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/memoForm.dfm new file mode 100644 index 0000000..fee68e2 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/memoForm.dfm @@ -0,0 +1,61 @@ +object frmMemo: TfrmMemo + Left = 385 + Top = 215 + AutoScroll = False + BorderIcons = [biSystemMenu] + ClientHeight = 442 + ClientWidth = 632 + Color = clBtnFace + Constraints.MinHeight = 480 + Constraints.MinWidth = 640 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + KeyPreview = True + OldCreateOrder = False + Position = poScreenCenter + OnKeyDown = FormKeyDown + PixelsPerInch = 96 + TextHeight = 13 + object Panel1: TPanel + Left = 0 + Top = 401 + Width = 632 + Height = 41 + Align = alBottom + BevelOuter = bvNone + TabOrder = 0 + DesignSize = ( + 632 + 41) + object btnOK: TButton + Left = 544 + Top = 8 + Width = 75 + Height = 25 + Anchors = [akTop, akRight] + Caption = 'OK' + Default = True + TabOrder = 0 + OnClick = btnOKClick + end + end + object edtMemo: TRichEdit + Left = 0 + Top = 0 + Width = 632 + Height = 401 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Courier New' + Font.Style = [] + ParentFont = False + ReadOnly = True + ScrollBars = ssBoth + TabOrder = 1 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/memoForm.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/memoForm.pas new file mode 100644 index 0000000..8262a42 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Dynamic Where/memoForm.pas @@ -0,0 +1,61 @@ +unit memoForm; + +interface + +uses + Forms, StdCtrls, ComCtrls, Classes, Controls, ExtCtrls + ; + +type + TfrmMemo = class(TForm) + Panel1: TPanel; + edtMemo: TRichEdit; + btnOK: TButton; + procedure FormKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); + procedure btnOKClick(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + class procedure Execute(const ACaption: string; const Memos: string; WordWrap: Boolean); + end; + +implementation + +uses + Windows + ; + +{$R *.dfm} + +class procedure TfrmMemo.Execute(const ACaption: string; const Memos: string; + WordWrap: Boolean); +var + Frm: TfrmMemo; +begin + Frm := TfrmMemo.Create(Application); + + try + Frm.Caption := ACaption; + Frm.edtMemo.WordWrap := WordWrap; + Frm.edtMemo.Lines.Text := Memos; + Frm.ShowModal(); + finally + Frm.Release(); + end; +end; + +procedure TfrmMemo.FormKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); +begin + if (Shift = []) and (Key = VK_ESCAPE) then + Close(); +end; + +procedure TfrmMemo.btnOKClick(Sender: TObject); +begin + Close(); +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesClient.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesClient.dpr new file mode 100644 index 0000000..fd9e269 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesClient.dpr @@ -0,0 +1,17 @@ +program ExportedDataTablesClient; + +uses + uROComInit, + Forms, + MidasLib, + ExportedDataTablesClientMain in 'ExportedDataTablesClientMain.pas' {ExportedDataTablesClientMainForm}, + ExportedDataTablesClientData in 'ExportedDataTablesClientData.pas' {ExportedDataTablesClientDataModule: TDAClientDataModule}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TExportedDataTablesClientDataModule, ExportedDataTablesClientDataModule); + Application.CreateForm(TExportedDataTablesClientMainForm, ExportedDataTablesClientMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesClient.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesClient.dproj new file mode 100644 index 0000000..f3a7404 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesClient.dproj @@ -0,0 +1,213 @@ + + + {7f0aaa6f-1cc7-4281-bb0d-802a09720390} + ExportedDataTablesClient.dpr + Debug + AnyCPU + DCC32 + ExportedDataTablesClient.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1049 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Core Lab Data Access GUI related Components + Core Lab Data Access Components + Data Access Components for MySQL + MySQL Data Access GUI related Components + Oracle Data Access Components + Oracle Data Access GUI related Components + SQL Server Data Access Components + SQL Server Data Access GUI related Components + RemObjects Data Abstract - InterBase Express Driver + RemObjects Data Abstract - Scripting Integration Library + RemObjects Data Abstract - dbExpress Driver + RemObjects Data Abstract - SQLite Driver + RemObjects Data Abstract - DBISAM Driver + RemObjects Data Abstract - ElevateDB Driver + RemObjects Data Abstract - FIBPlus Driver + RemObjects Data Abstract - CoreLabs IBDAC Driver + RemObjects Data Abstract - CoreLabs MyDAC Driver + Data Abstract - NexusDB Driver + RemObjects Data Abstract - CoreLabs ODAC Driver + RemObjects Data Abstract - MicroOlap PostgresDAC Driver + RemObjects Data Abstract - 'Rosetta' + RemObjects Data Abstract - CoreLabs SDAC Driver + CodeGear C++Builder Office XP Servers Package + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + Core Lab InterBase Data Access Components + Data Access Components for MySQL - TMySQLMonitor + + + ExportedDataTablesClient.dpr + + + + + + + MainSource + + +
ExportedDataTablesClientDataModule
+ TDAClientDataModule +
+ +
ExportedDataTablesClientMainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesClient.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesClient.res new file mode 100644 index 0000000..a8142cb Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesClient.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesClientData.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesClientData.dfm new file mode 100644 index 0000000..5511710 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesClientData.dfm @@ -0,0 +1,78 @@ +object ExportedDataTablesClientDataModule: TExportedDataTablesClientDataModule + OldCreateOrder = True + Left = 439 + Top = 220 + Height = 300 + Width = 300 + object Channel: TROWinInetHTTPChannel + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/BIN' + ServerLocators = <> + DispatchOptions = [] + Left = 40 + Top = 8 + end + object Message: TROBinMessage + Left = 40 + Top = 52 + end + object RemoteService: TRORemoteService + Message = Message + Channel = Channel + ServiceName = 'ExportedDataTablesService' + Left = 40 + Top = 96 + end + object DataStreamer: TDABin2DataStreamer + Left = 40 + Top = 140 + end + object RemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RemoteService + GetDataCall.RemoteService = RemoteService + UpdateDataCall.RemoteService = RemoteService + GetScriptsCall.RemoteService = RemoteService + RemoteService = RemoteService + DataStreamer = DataStreamer + Left = 40 + Top = 184 + end + object tbl_Customers: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = RemoteDataAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Customers' + IndexDefs = <> + Left = 128 + Top = 120 + end + object ds_Customers: TDADataSource + DataSet = tbl_Customers.Dataset + DataTable = tbl_Customers + Left = 136 + Top = 128 + end + object tbl_Region: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = RemoteDataAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Region' + IndexDefs = <> + Left = 144 + Top = 136 + end + object ds_Region: TDADataSource + DataSet = tbl_Region.Dataset + DataTable = tbl_Region + Left = 152 + Top = 144 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesClientData.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesClientData.pas new file mode 100644 index 0000000..a719cf3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesClientData.pas @@ -0,0 +1,35 @@ +unit ExportedDataTablesClientData; + +interface + +uses + {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROWinInetHTTPChannel, + {Data Abstract:} uDADataTable, uDABin2DataStreamer, uDAInterfaces, uDARemoteDataAdapter, + uDAScriptingProvider, uDAMemDataTable, uDADataStreamer; + +type + TExportedDataTablesClientDataModule = class(TDataModule) + Message: TROBinMessage; + Channel: TROWinInetHTTPChannel; + RemoteService: TRORemoteService; + DataStreamer: TDABin2DataStreamer; + RemoteDataAdapter: TDARemoteDataAdapter; + tbl_Customers: TDAMemDataTable; + ds_Customers: TDADataSource; + tbl_Region: TDAMemDataTable; + ds_Region: TDADataSource; + private + { Private declarations } + public + { Public declarations } + end; + +var + ExportedDataTablesClientDataModule: TExportedDataTablesClientDataModule; + +implementation + +{$R *.dfm} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesClientMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesClientMain.dfm new file mode 100644 index 0000000..f1840b6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesClientMain.dfm @@ -0,0 +1,81 @@ +object ExportedDataTablesClientMainForm: TExportedDataTablesClientMainForm + Left = 431 + Top = 315 + AutoScroll = False + Caption = 'Exported DataTables - Client' + ClientHeight = 287 + ClientWidth = 494 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object Splitter1: TSplitter + Left = 0 + Top = 163 + Width = 494 + Height = 3 + Cursor = crVSplit + Align = alBottom + end + object DBGrid1: TDBGrid + Left = 0 + Top = 41 + Width = 494 + Height = 122 + Align = alClient + DataSource = ExportedDataTablesClientDataModule.ds_Customers + TabOrder = 0 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object DBGrid2: TDBGrid + Left = 0 + Top = 166 + Width = 494 + Height = 121 + Align = alBottom + DataSource = ExportedDataTablesClientDataModule.ds_Region + TabOrder = 1 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 494 + Height = 41 + Align = alTop + BevelOuter = bvNone + TabOrder = 2 + object Button1: TButton + Left = 8 + Top = 8 + Width = 75 + Height = 25 + Caption = 'Open/Close' + TabOrder = 0 + OnClick = Button1Click + end + object Button2: TButton + Left = 96 + Top = 8 + Width = 75 + Height = 25 + Caption = 'ApplyUpdate' + TabOrder = 1 + OnClick = Button2Click + end + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesClientMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesClientMain.pas new file mode 100644 index 0000000..ed9b152 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesClientMain.pas @@ -0,0 +1,50 @@ +unit ExportedDataTablesClientMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROClientIntf, uRORemoteService, uROBinMessage, ExtCtrls, + Grids, DBGrids; + +type + TExportedDataTablesClientMainForm = class(TForm) + DBGrid1: TDBGrid; + DBGrid2: TDBGrid; + Splitter1: TSplitter; + Panel1: TPanel; + Button1: TButton; + Button2: TButton; + procedure Button1Click(Sender: TObject); + procedure Button2Click(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + ExportedDataTablesClientMainForm: TExportedDataTablesClientMainForm; + +implementation + +uses + ExportedDataTablesClientData, uDADataTable; + +{$R *.dfm} + +procedure TExportedDataTablesClientMainForm.Button1Click(Sender: TObject); +begin + with ExportedDataTablesClientDataModule.tbl_Customers do + Active:= not Active; + with ExportedDataTablesClientDataModule.tbl_Region do + Active:= not Active; +end; + +procedure TExportedDataTablesClientMainForm.Button2Click(Sender: TObject); +begin + with ExportedDataTablesClientDataModule do + RemoteDataAdapter.ApplyUpdates([tbl_Customers,tbl_Region]); +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesGroup.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesGroup.Sample.html new file mode 100644 index 0000000..cae2130 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesGroup.Sample.html @@ -0,0 +1,33 @@ + + + + + + + + +
+

+ Exported DataTables Sample +

+ +
+

Purpose

+

+ This example illustrates the functionality of Exported Datatables. + Usually Exported Datatables can be used for working with Direct Access Components which currently isn't supported by DataAbstract + or for working with shared tables. + This sample shows how to receive and update data with TDataset and TDADataTable. + Exported Datatables don't need to declared in the ServiceSchema. + In this example, TADOTable and TDAMemDataTable are used as Exported Datatables. +

+ +

Getting Started

+ + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesGroup.bpg b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesGroup.bpg new file mode 100644 index 0000000..bc11f5a --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesGroup.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = ExportedDataTablesServer.exe ExportedDataTablesClient.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +ExportedDataTablesServer.exe: ExportedDataTablesServer.dpr + $(DCC) + +ExportedDataTablesClient.exe: ExportedDataTablesClient.dpr + $(DCC) + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesGroup.groupproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesGroup.groupproj new file mode 100644 index 0000000..b6ce3e5 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesGroup.groupproj @@ -0,0 +1,44 @@ + + + {1b923e1d-5c1f-42e1-8cf0-86e40fcf6cc9} + + + + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesLibrary.rodl b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesLibrary.rodl new file mode 100644 index 0000000..cc54180 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesLibrary.rodl @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesLibrary_Intf.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesLibrary_Intf.pas new file mode 100644 index 0000000..ea56cba --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesLibrary_Intf.pas @@ -0,0 +1,82 @@ +unit ExportedDataTablesLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf, + {Used RODLs:} DataAbstract4_Intf; + +const + { Library ID } + LibraryUID = '{8B75A505-94E9-4210-B49C-129C6622B98E}'; + TargetNamespace = ''; + + { Service Interface ID's } + IExportedDataTablesService_IID : TGUID = '{A76BB708-BF1F-4514-AC45-960F5E6199FA}'; + + { Event ID's } + +type + { Forward declarations } + IExportedDataTablesService = interface; + + + + + + { Enumerateds } + + { IExportedDataTablesService } + IExportedDataTablesService = interface(IDataAbstractService) + ['{A76BB708-BF1F-4514-AC45-960F5E6199FA}'] + end; + + { CoExportedDataTablesService } + CoExportedDataTablesService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IExportedDataTablesService; + end; + + { TExportedDataTablesService_Proxy } + TExportedDataTablesService_Proxy = class(TDataAbstractService_Proxy, IExportedDataTablesService) + protected + function __GetInterfaceName:string; override; + + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uROSerializer, uRORes; + +{ CoExportedDataTablesService } + +class function CoExportedDataTablesService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IExportedDataTablesService; +begin + result := TExportedDataTablesService_Proxy.Create(aMessage, aTransportChannel); +end; + +function TExportedDataTablesService_Proxy.__GetInterfaceName:string; +begin + result := 'ExportedDataTablesService'; +end; + +initialization + RegisterProxyClass(IExportedDataTablesService_IID, TExportedDataTablesService_Proxy); + + +finalization + UnregisterProxyClass(IExportedDataTablesService_IID); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesLibrary_Invk.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesLibrary_Invk.pas new file mode 100644 index 0000000..1f911fc --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesLibrary_Invk.pas @@ -0,0 +1,35 @@ +unit ExportedDataTablesLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Used RODL Intf's:} DataAbstract4_Intf, + {Used RODL Invk's:} DataAbstract4_Invk, + {Generated:} ExportedDataTablesLibrary_Intf; + +type + TExportedDataTablesService_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +initialization +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesServer.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesServer.dpr new file mode 100644 index 0000000..7a68dff --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesServer.dpr @@ -0,0 +1,29 @@ +program ExportedDataTablesServer; + +{#ROGEN:ExportedDataTablesLibrary.RODL} // RemObjects SDK: Careful, do not remove! + +uses + uROComInit, + uROComboService, + Forms, + ExportedDataTablesServerMain in 'ExportedDataTablesServerMain.pas' {ExportedDataTablesServerMainForm}, + ExportedDataTablesServerData in 'ExportedDataTablesServerData.pas' {ExportedDataTablesServerDataModule: TDataModule}, + ExportedDataTablesLibrary_Intf in 'ExportedDataTablesLibrary_Intf.pas', + ExportedDataTablesLibrary_Invk in 'ExportedDataTablesLibrary_Invk.pas', + ExportedDataTablesService_Impl in 'ExportedDataTablesService_Impl.pas' {ExportedDataTablesService: TDataAbstractService}; + +{$R *.res} +{$R RODLFile.res} + +begin + if ROStartService('ExportedDataTables', 'ExportedDataTables') then begin + ROService.CreateForm(TExportedDataTablesServerDataModule, ExportedDataTablesServerDataModule); + ROService.Run; + Exit; + end; + + Application.Initialize; + Application.CreateForm(TExportedDataTablesServerDataModule, ExportedDataTablesServerDataModule); + Application.CreateForm(TExportedDataTablesServerMainForm, ExportedDataTablesServerMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesServer.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesServer.dproj new file mode 100644 index 0000000..ea29d95 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesServer.dproj @@ -0,0 +1,219 @@ + + + {aac31484-1919-4f53-b725-ac72b8534f54} + ExportedDataTablesServer.dpr + Debug + AnyCPU + DCC32 + ExportedDataTablesServer.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1049 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Core Lab Data Access GUI related Components + Core Lab Data Access Components + Data Access Components for MySQL + MySQL Data Access GUI related Components + Oracle Data Access Components + Oracle Data Access GUI related Components + SQL Server Data Access Components + SQL Server Data Access GUI related Components + RemObjects Data Abstract - InterBase Express Driver + RemObjects Data Abstract - Scripting Integration Library + RemObjects Data Abstract - dbExpress Driver + RemObjects Data Abstract - SQLite Driver + RemObjects Data Abstract - DBISAM Driver + RemObjects Data Abstract - ElevateDB Driver + RemObjects Data Abstract - FIBPlus Driver + RemObjects Data Abstract - CoreLabs IBDAC Driver + RemObjects Data Abstract - CoreLabs MyDAC Driver + Data Abstract - NexusDB Driver + RemObjects Data Abstract - CoreLabs ODAC Driver + RemObjects Data Abstract - MicroOlap PostgresDAC Driver + RemObjects Data Abstract - 'Rosetta' + RemObjects Data Abstract - CoreLabs SDAC Driver + CodeGear C++Builder Office XP Servers Package + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + Core Lab InterBase Data Access Components + Data Access Components for MySQL - TMySQLMonitor + + + ExportedDataTablesServer.dpr + + + + + + + MainSource + + + + +
ExportedDataTablesServerDataModule
+ TDataModule +
+ +
ExportedDataTablesServerMainForm
+
+ +
ExportedDataTablesService
+ TDataAbstractService +
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesServer.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesServer.res new file mode 100644 index 0000000..dc22e33 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesServer.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesServerData.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesServerData.dfm new file mode 100644 index 0000000..de789cb --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesServerData.dfm @@ -0,0 +1,106 @@ +object ExportedDataTablesServerDataModule: TExportedDataTablesServerDataModule + OldCreateOrder = False + OnCreate = DataModuleCreate + Left = 411 + Top = 233 + Height = 251 + Width = 352 + object Server: TROIndyHTTPServer + Dispatchers = < + item + Name = 'Message' + Message = Message + Enabled = True + PathInfo = 'Bin' + end> + Port = 8099 + Left = 32 + Top = 8 + end + object Message: TROBinMessage + Left = 32 + Top = 56 + end + object ConnectionManager: TDAConnectionManager + Connections = < + item + Name = 'Northwind' + ConnectionString = + 'ADO?AuxDriver=SQLOLEDB.1;Server=localhost;Database=Northwind;Int' + + 'egrated Security=SSPI' + Description = 'Microsoft SQL Server 2000, localhost' + ConnectionType = 'MSSQL' + Default = True + end> + DriverManager = DriverManager + PoolingEnabled = True + Left = 136 + Top = 56 + end + object DriverManager: TDADriverManager + DriverDirectory = '%SYSTEM%\' + TraceActive = False + TraceFlags = [] + Left = 136 + Top = 10 + end + object ADODriver: TDAADODriver + Left = 256 + Top = 8 + end + object DataDictionary: TDADataDictionary + Fields = <> + Left = 32 + Top = 104 + end + object SessionManager: TROInMemorySessionManager + Left = 136 + Top = 104 + end + object Schema: TDASchema + ConnectionManager = ConnectionManager + DataDictionary = DataDictionary + Datasets = < + item + Params = <> + Statements = < + item + ConnectionType = 'MSSQL' + Default = True + TargetTable = 'Region' + StatementType = stAutoSQL + ColumnMappings = < + item + DatasetField = 'RegionID' + TableField = 'RegionID' + end + item + DatasetField = 'RegionDescription' + TableField = 'RegionDescription' + end> + end> + Name = 'Region' + Fields = < + item + Name = 'RegionID' + DataType = datInteger + Required = True + InPrimaryKey = True + end + item + Name = 'RegionDescription' + DataType = datWideString + Size = 50 + Required = True + end> + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = <> + RelationShips = <> + UpdateRules = <> + Version = 0 + Left = 256 + Top = 56 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesServerData.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesServerData.pas new file mode 100644 index 0000000..19b381b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesServerData.pas @@ -0,0 +1,44 @@ +unit ExportedDataTablesServerData; + +interface + +uses + SysUtils, Classes, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, + uROBinMessage, uROIndyHTTPServer, + uDAEngine, uDADriverManager, uDAClasses, uROSessions, + uDAIBXDriver, uDAADODriver, uROIndyTCPServer, uDADataStreamer, + uDABin2DataStreamer, DB, ADODB, uDAScriptingProvider, uDADataTable, + uDAMemDataTable; + +type + TExportedDataTablesServerDataModule = class(TDataModule) + Server: TROIndyHTTPServer; + Message: TROBinMessage; + ConnectionManager: TDAConnectionManager; + DriverManager: TDADriverManager; + ADODriver: TDAADODriver; + SessionManager: TROInMemorySessionManager; + Schema: TDASchema; + DataDictionary: TDADataDictionary; + + procedure DataModuleCreate(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + ExportedDataTablesServerDataModule: TExportedDataTablesServerDataModule; + +implementation + +{$R *.dfm} + +procedure TExportedDataTablesServerDataModule.DataModuleCreate(Sender: TObject); +begin + Server.Active := true; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesServerMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesServerMain.dfm new file mode 100644 index 0000000..e27aba1 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesServerMain.dfm @@ -0,0 +1,25 @@ +object ExportedDataTablesServerMainForm: TExportedDataTablesServerMainForm + Left = 372 + Top = 277 + BorderStyle = bsDialog + Caption = 'Exported DataTables - Server' + ClientHeight = 64 + ClientWidth = 228 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton + Left = 8 + Top = 8 + Width = 212 + Height = 48 + Cursor = crHandPoint + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesServerMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesServerMain.pas new file mode 100644 index 0000000..3666032 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesServerMain.pas @@ -0,0 +1,25 @@ +unit ExportedDataTablesServerMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uDAPoweredByDataAbstractButton, uROPoweredByRemObjectsButton; + +type + TExportedDataTablesServerMainForm = class(TForm) + DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton; + private + { Private declarations } + public + { Public declarations } + end; + +var + ExportedDataTablesServerMainForm: TExportedDataTablesServerMainForm; + +implementation + +{$R *.dfm} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesService_Impl.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesService_Impl.dfm new file mode 100644 index 0000000..e5648b2 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesService_Impl.dfm @@ -0,0 +1,50 @@ +object ExportedDataTablesService: TExportedDataTablesService + OldCreateOrder = True + SessionManager = ExportedDataTablesServerDataModule.SessionManager + ServiceDataStreamer = DataStreamer + ExportedDataTables = < + item + DataTable = MemDataTable + LogicalName = 'Region' + end + item + DataTable = ADOTable + LogicalName = 'Customers' + end> + Left = 432 + Top = 189 + Height = 164 + Width = 244 + object DataStreamer: TDABin2DataStreamer + Left = 32 + Top = 8 + end + object MemDataTable: TDAMemDataTable + RemoteUpdatesOptions = [ruoOnPost] + Fields = <> + Params = <> + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + LocalSchema = ExportedDataTablesServerDataModule.Schema + LocalDataStreamer = DABin2DataStreamer1 + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Region' + IndexDefs = <> + Left = 32 + Top = 56 + end + object ADOTable: TADOTable + ConnectionString = + 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security In' + + 'fo=False;Initial Catalog=Northwind;Data Source=localhost' + CursorType = ctStatic + TableName = 'Customers' + Left = 136 + Top = 56 + end + object DABin2DataStreamer1: TDABin2DataStreamer + Left = 136 + Top = 8 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesService_Impl.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesService_Impl.pas new file mode 100644 index 0000000..412a5ea --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/ExportedDataTablesService_Impl.pas @@ -0,0 +1,53 @@ +unit ExportedDataTablesService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROXMLIntf, uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} ExportedDataTablesLibrary_Intf, uDADataStreamer, + uDABin2DataStreamer, uDAClasses, uDAScriptingProvider, uDADataTable, + uDAMemDataTable, DB, ADODB; + +type + { TExportedDataTablesService } + TExportedDataTablesService = class(TDataAbstractService, IExportedDataTablesService) + DataStreamer: TDABin2DataStreamer; + MemDataTable: TDAMemDataTable; + ADOTable: TADOTable; + DABin2DataStreamer1: TDABin2DataStreamer; + private + protected + { IExportedDataTablesService methods } + end; + +implementation + +{$R *.dfm} +uses + {Generated:} ExportedDataTablesLibrary_Invk,ExportedDataTablesServerData; + +procedure Create_ExportedDataTablesService(out anInstance : IUnknown); +begin + anInstance := TExportedDataTablesService.Create(nil); +end; + +{ ExportedDataTablesService } +initialization + TROClassFactory.Create('ExportedDataTablesService', Create_ExportedDataTablesService, TExportedDataTablesService_Invoker); + +finalization + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/RODLFILE.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/RODLFILE.res new file mode 100644 index 0000000..84655a5 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Exported DataTables/RODLFILE.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/Fetch.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/Fetch.Sample.html new file mode 100644 index 0000000..c101fc0 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/Fetch.Sample.html @@ -0,0 +1,61 @@ + + + + + + + + + +

+ Fetch +

+ + +

Purpose

+

+ This demo shows how to fetch paged orders and also master/detail via single + server call. See the + DA04 + + article for a discussion on Dynamic Method Binding using this + sample as its example.

+

Getting Started

+

+ When you compile and run both projects you will see the client present you + with two tabbed pages: +

+ + +

Examine the Code

+

+ The following methods are worth examining: +

+ + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/Fetch.bdsgroup b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/Fetch.bdsgroup new file mode 100644 index 0000000..d2590a9 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/Fetch.bdsgroup @@ -0,0 +1,20 @@ + + + + + + + + + + + + + FetchServer.bdsproj + FetchClient.bdsproj + FetchServer.exe FetchClient.exe + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/Fetch.bpg b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/Fetch.bpg new file mode 100644 index 0000000..2469b7d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/Fetch.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = FetchServer.exe FetchClient.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +FetchServer.exe: FetchServer.dpr + $(DCC) + +FetchClient.exe: FetchClient.dpr + $(DCC) + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/Fetch.groupproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/Fetch.groupproj new file mode 100644 index 0000000..deb928a --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/Fetch.groupproj @@ -0,0 +1,44 @@ + + + {b6910b17-afe5-4bb5-af6f-cf820851de91} + + + + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClient.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClient.bdsproj new file mode 100644 index 0000000..87209ab --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClient.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + FetchClient.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClient.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClient.dpr new file mode 100644 index 0000000..f5f7e44 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClient.dpr @@ -0,0 +1,18 @@ +program FetchClient; + +uses + uROComInit, + Forms, + MidasLib, + FetchClientMain in 'FetchClientMain.pas' {FetchClientMainForm}, + FetchClientData in 'FetchClientData.pas' {FetchClientDataModule: TDAClientDataModule}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'Fetch Client'; + Application.CreateForm(TFetchClientDataModule, FetchClientDataModule); + Application.CreateForm(TFetchClientMainForm, FetchClientMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClient.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClient.dproj new file mode 100644 index 0000000..47c8158 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClient.dproj @@ -0,0 +1,44 @@ + + + {3ef0f4e0-3dde-4abb-b2e8-8b555c0f23dc} + FetchClient.dpr + Debug + AnyCPU + DCC32 + FetchClient.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + False + $(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10;D:\Jenya\DLIB\jcl\lib\d11\debug + $(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10;D:\Jenya\DLIB\jcl\lib\d11\debug + $(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10;D:\Jenya\DLIB\jcl\lib\d11\debug + $(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10;D:\Jenya\DLIB\jcl\lib\d11\debug + + + Delphi.Personality + + +FalseTrueFalseFalseFalse1000FalseFalseFalseFalseFalse103312521.0.0.01.0.0.0FetchClient.dpr + + + + + MainSource + + +
FetchClientDataModule
+
+ +
FetchClientMainForm
+
+
+
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClient.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClient.res new file mode 100644 index 0000000..da01de5 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClient.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClientData.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClientData.dfm new file mode 100644 index 0000000..836db84 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClientData.dfm @@ -0,0 +1,30 @@ +object FetchClientDataModule: TFetchClientDataModule + OldCreateOrder = True + Height = 300 + Width = 300 + object Channel: TROWinInetHTTPChannel + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/BIN' + ServerLocators = <> + DispatchOptions = [] + Left = 40 + Top = 8 + end + object Message: TROBinMessage + Left = 40 + Top = 52 + end + object RemoteService: TRORemoteService + Message = Message + Channel = Channel + ServiceName = 'FetchService' + Left = 40 + Top = 96 + end + object DataStreamer: TDABin2DataStreamer + BufferSize = 262144 + SendReducedDelta = False + Left = 40 + Top = 140 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClientData.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClientData.pas new file mode 100644 index 0000000..c80a7c8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClientData.pas @@ -0,0 +1,32 @@ +unit FetchClientData; + +interface + +uses + {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROWinInetHTTPChannel, + {Data Abstract:} uDABin2DataStreamer, uDADataStreamer; + +type + TFetchClientDataModule = class(TDataModule) + Message: TROBinMessage; + Channel: TROWinInetHTTPChannel; + RemoteService: TRORemoteService; + DataStreamer: TDABin2DataStreamer; + private + { Private declarations } + public + { Public declarations } + + end; + +var + FetchClientDataModule: TFetchClientDataModule; + +implementation + +uses + FetchClientMain; +{$R *.dfm} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClientMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClientMain.dfm new file mode 100644 index 0000000..a79df0e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClientMain.dfm @@ -0,0 +1,926 @@ +object FetchClientMainForm: TFetchClientMainForm + Left = 353 + Top = 279 + Caption = 'Fetch Client' + ClientHeight = 406 + ClientWidth = 447 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poDesigned + PixelsPerInch = 96 + TextHeight = 13 + object PageControl1: TPageControl + Left = 0 + Top = 0 + Width = 447 + Height = 406 + ActivePage = TabSheet2 + Align = alClient + TabOrder = 0 + object TabSheet1: TTabSheet + BorderWidth = 5 + Caption = 'Paged Orders' + object Label1: TLabel + Left = 0 + Top = 9 + Width = 115 + Height = 13 + Caption = 'Max Records Per Fetch:' + end + object lbFetchedRecs: TLabel + Left = 222 + Top = 9 + Width = 117 + Height = 13 + Caption = 'No records fetched yet...' + end + object gPagedOrders: TDBGrid + Left = 2 + Top = 51 + Width = 429 + Height = 207 + Align = alCustom + Anchors = [akLeft, akTop, akRight, akBottom] + DataSource = ds_PagedOrders + TabOrder = 0 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object seMaxRecords: TSpinEdit + Left = 126 + Top = 4 + Width = 81 + Height = 22 + MaxValue = 0 + MinValue = 0 + TabOrder = 1 + Value = 40 + end + object bFetchPagedOrders: TButton + Left = 354 + Top = 3 + Width = 75 + Height = 25 + Anchors = [akTop, akRight] + Caption = 'Open/Close' + TabOrder = 2 + OnClick = bFetchPagedOrdersClick + end + object gPagedOrderDetails: TDBGrid + Left = 0 + Top = 264 + Width = 429 + Height = 104 + Align = alBottom + DataSource = ds_PagedOrderDetails + TabOrder = 3 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object Panel1: TPanel + Left = 0 + Top = 259 + Width = 429 + Height = 5 + Align = alBottom + BevelOuter = bvNone + TabOrder = 4 + end + end + object TabSheet2: TTabSheet + BorderWidth = 5 + Caption = 'Fetch All' + ImageIndex = 1 + object Label2: TLabel + Left = 0 + Top = 3 + Width = 65 + Height = 13 + Caption = 'Start OrderID:' + end + object Label3: TLabel + Left = 0 + Top = 27 + Width = 62 + Height = 13 + Caption = 'End OrderID:' + end + object gOrders: TDBGrid + Left = 2 + Top = 51 + Width = 427 + Height = 207 + Align = alCustom + Anchors = [akLeft, akTop, akRight, akBottom] + DataSource = ds_Orders + TabOrder = 0 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object gOrderDetails: TDBGrid + Left = 0 + Top = 264 + Width = 429 + Height = 104 + Align = alBottom + DataSource = ds_OrderDetails + TabOrder = 1 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object bFetchAll: TButton + Left = 354 + Top = 3 + Width = 75 + Height = 25 + Anchors = [akTop, akRight] + Caption = 'Open/Close' + TabOrder = 2 + OnClick = bFetchAllClick + end + object seStart: TSpinEdit + Left = 72 + Top = 0 + Width = 76 + Height = 22 + MaxValue = 0 + MinValue = 0 + TabOrder = 3 + Value = 10248 + end + object seEnd: TSpinEdit + Left = 72 + Top = 24 + Width = 76 + Height = 22 + MaxValue = 0 + MinValue = 0 + TabOrder = 4 + Value = 10300 + end + object Panel2: TPanel + Left = 0 + Top = 259 + Width = 429 + Height = 5 + Align = alBottom + BevelOuter = bvNone + TabOrder = 5 + end + end + end + object daPaged: TDARemoteDataAdapter + GetSchemaCall.RemoteService = FetchClientDataModule.RemoteService + GetDataCall.RemoteService = FetchClientDataModule.RemoteService + UpdateDataCall.RemoteService = FetchClientDataModule.RemoteService + GetScriptsCall.RemoteService = FetchClientDataModule.RemoteService + RemoteService = FetchClientDataModule.RemoteService + DataStreamer = FetchClientDataModule.DataStreamer + FailureBehavior = fbBoth + Left = 117 + Top = 143 + end + object tbl_OrderDetails: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'OrderID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ProductID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UnitPrice' + DataType = datFloat + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Quantity' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Discount' + DataType = datFloat + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + Params = < + item + Name = 'StartingOrderID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Value = '' + ParamType = daptInput + end + item + Name = 'EndingOrderID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Value = '' + ParamType = daptInput + end> + MasterMappingMode = mmWhere + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + RemoteDataAdapter = daFetchAll + ReadOnly = False + MasterSource = ds_Orders + MasterFields = 'OrderID' + DetailFields = 'OrderID' + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'OrderDetails' + Left = 269 + Top = 157 + end + object ds_OrderDetails: TDADataSource + DataSet = tbl_OrderDetails.Dataset + DataTable = tbl_OrderDetails + Left = 297 + Top = 157 + end + object tbl_Orders: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'OrderID' + DataType = datAutoInc + BlobType = dabtUnknown + GeneratorName = 'Orders' + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EmployeeID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OrderDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RequiredDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShippedDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipVia' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Freight' + DataType = datFloat + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipName' + DataType = datWideString + Size = 40 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipAddress' + DataType = datWideString + Size = 60 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCity' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipRegion' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipPostalCode' + DataType = datWideString + Size = 10 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCountry' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + Params = < + item + Name = 'StartingOrderID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Value = '' + ParamType = daptInput + end + item + Name = 'EndingOrderID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Value = '' + ParamType = daptInput + end> + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = daFetchAll + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates, moAllInOneFetch] + LogicalName = 'Orders' + Left = 269 + Top = 129 + end + object ds_Orders: TDADataSource + DataSet = tbl_Orders.Dataset + DataTable = tbl_Orders + Left = 297 + Top = 129 + end + object tbl_PagedOrderDetails: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'OrderID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ProductID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UnitPrice' + DataType = datFloat + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Quantity' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Discount' + DataType = datFloat + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmWhere + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = daPaged + ReadOnly = False + MasterSource = ds_PagedOrders + MasterFields = 'OrderID' + DetailFields = 'OrderID' + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'PagedOrderDetails' + Left = 61 + Top = 157 + end + object ds_PagedOrderDetails: TDADataSource + DataSet = tbl_PagedOrderDetails.Dataset + DataTable = tbl_PagedOrderDetails + Left = 89 + Top = 157 + end + object tbl_PagedOrders: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'OrderID' + DataType = datAutoInc + BlobType = dabtUnknown + GeneratorName = 'Orders' + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EmployeeID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OrderDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RequiredDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShippedDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipVia' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Freight' + DataType = datFloat + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipName' + DataType = datWideString + Size = 40 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipAddress' + DataType = datWideString + Size = 60 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCity' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipRegion' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipPostalCode' + DataType = datWideString + Size = 10 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCountry' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + Params = < + item + Name = 'StartingOrderID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Value = '' + ParamType = daptInput + end> + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = daPaged + AfterScroll = tbl_PagedOrdersAfterScroll + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'PagedOrders' + Left = 61 + Top = 129 + end + object ds_PagedOrders: TDADataSource + DataSet = tbl_PagedOrders.Dataset + DataTable = tbl_PagedOrders + Left = 89 + Top = 129 + end + object daFetchAll: TDARemoteDataAdapter + GetSchemaCall.RemoteService = FetchClientDataModule.RemoteService + GetDataCall.RemoteService = FetchClientDataModule.RemoteService + GetDataCall.MethodName = 'GetOrdersAndDetails' + GetDataCall.Params = < + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end + item + Name = 'StartOrderID' + DataType = rtInteger + Flag = fIn + Value = Null + end + item + Name = 'EndOrderID' + DataType = rtInteger + Flag = fIn + Value = Null + end> + GetDataCall.Default = False + GetDataCall.OutgoingTableNamesParameter = 'aTableNameArray' + GetDataCall.OutgoingTableRequestInfosParameter = 'aTableRequestInfoArray' + GetDataCall.IncomingDataParameter = 'Result' + UpdateDataCall.RemoteService = FetchClientDataModule.RemoteService + GetScriptsCall.RemoteService = FetchClientDataModule.RemoteService + RemoteService = FetchClientDataModule.RemoteService + DataStreamer = FetchClientDataModule.DataStreamer + FailureBehavior = fbBoth + Left = 325 + Top = 143 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClientMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClientMain.pas new file mode 100644 index 0000000..1be4b4e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchClientMain.pas @@ -0,0 +1,121 @@ +unit FetchClientMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROClientIntf, uRORemoteService, uROBinMessage, ExtCtrls, Spin, + Grids, DBGrids, ComCtrls, DB, uDAInterfaces, uDADataTable, + uDAScriptingProvider, uDAMemDataTable, uDARemoteDataAdapter; + +type + TFetchClientMainForm = class(TForm) + PageControl1: TPageControl; + TabSheet1: TTabSheet; + Label1: TLabel; + lbFetchedRecs: TLabel; + gPagedOrders: TDBGrid; + seMaxRecords: TSpinEdit; + bFetchPagedOrders: TButton; + gPagedOrderDetails: TDBGrid; + Panel1: TPanel; + TabSheet2: TTabSheet; + Label2: TLabel; + Label3: TLabel; + gOrders: TDBGrid; + gOrderDetails: TDBGrid; + bFetchAll: TButton; + seStart: TSpinEdit; + seEnd: TSpinEdit; + Panel2: TPanel; + daPaged: TDARemoteDataAdapter; + tbl_OrderDetails: TDAMemDataTable; + ds_OrderDetails: TDADataSource; + tbl_Orders: TDAMemDataTable; + ds_Orders: TDADataSource; + tbl_PagedOrderDetails: TDAMemDataTable; + ds_PagedOrderDetails: TDADataSource; + tbl_PagedOrders: TDAMemDataTable; + ds_PagedOrders: TDADataSource; + daFetchAll: TDARemoteDataAdapter; + procedure bFetchPagedOrdersClick(Sender: TObject); + procedure bFetchAllClick(Sender: TObject); + procedure tbl_PagedOrdersAfterScroll(DataTable: TDADataTable); + private + { Private declarations } + fFetchRequired: boolean; + public + { Public declarations } + end; + +var + FetchClientMainForm: TFetchClientMainForm; + +implementation + +uses + FetchClientData; + +{$R *.dfm} + +procedure TFetchClientMainForm.bFetchAllClick(Sender: TObject); +begin + { Sets the filtering options for the server method so we only retrieve the selected + records. It's good advice to always filter data like this to minimize network trafic. + + The server method is defined as: + + function GetOrdersAndDetails(const StartOrderID: Integer; + const EndOrderID: Integer): Binary; + + The Binary returned by the server contains a stream with all the orders and all the details } + + daFetchAll.GetDataCall.ParamByName('StartOrderID').AsInteger := seStart.Value; + daFetchAll.GetDataCall.ParamByName('EndOrderID').AsInteger := seEnd.Value; + tbl_Orders.Active :=not tbl_Orders.Active; +end; + +procedure TFetchClientMainForm.bFetchPagedOrdersClick(Sender: TObject); +begin + lbFetchedRecs.Caption := 'No records fetched yet...'; + if not tbl_PagedOrders.Active then begin + tbl_PagedOrders.ParamByName('StartingOrderID').AsInteger := 0; + tbl_PagedOrders.MaxRecords := seMaxRecords.Value; + lbFetchedRecs.Caption := 'No records fetched yet...'; + // fFetchedRequired is a flag that we set to FALSE when the last page is fetched + fFetchRequired := True; + end; + tbl_PagedOrders.Active := not tbl_PagedOrders.Active +end; + +procedure TFetchClientMainForm.tbl_PagedOrdersAfterScroll( + DataTable: TDADataTable); +var + lrecordcount: integer; +begin + { This is the core of the paging process. When we reach the last record in the current + set we want to issue a new request to the server to get the next packet. If the requested + records is different than the returned amount it means there's nothing more to fetch and + we're done with the paging. + + By doing paging this way we have full control on what happens server side and what SQL statements + are generated. This is only one of the many possible paging implementations you could do using + Data Abstract. The control is in your hands! } + + if fFetchRequired and DataTable.EOF and not DataTable.Fetching then + with DataTable do begin + ParamByName('StartingOrderID').AsInteger := FieldByName('OrderID').AsInteger; + MaxRecords := seMaxRecords.Value; + lrecordcount := DataTable.RecordCount; + LoadFromRemoteSource(True); + lrecordcount := RecordCount-lrecordcount; + + lbFetchedRecs.Caption := IntTostr(lrecordcount) + ' records retrieved'; + fFetchRequired := lrecordcount = MaxRecords; + if not fFetchRequired then + MessageDlg(Format('Done fetching!!! Expected %d rows but only got %d ', + [MaxRecords, lrecordcount]), mtInformation, [mbOK], 0); + end; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchLibrary.RODL b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchLibrary.RODL new file mode 100644 index 0000000..8f79f9a --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchLibrary.RODL @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchLibrary_Intf.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchLibrary_Intf.pas new file mode 100644 index 0000000..874a513 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchLibrary_Intf.pas @@ -0,0 +1,104 @@ +unit FetchLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf, + {Used RODLs:} DataAbstract4_Intf; + +const + { Library ID } + LibraryUID = '{02C22018-F060-4159-A052-DDFAECD3EA97}'; + TargetNamespace = ''; + + { Service Interface ID's } + IFetchService_IID : TGUID = '{E70F3537-38F1-4C4E-AB64-6935C9C9CF69}'; + + { Event ID's } + +type + { Forward declarations } + IFetchService = interface; + + + + + + { Enumerateds } + + { IFetchService } + IFetchService = interface(IDataAbstractService) + ['{E70F3537-38F1-4C4E-AB64-6935C9C9CF69}'] + function GetOrdersAndDetails(const StartOrderID: Integer; const EndOrderID: Integer): Binary; + end; + + { CoFetchService } + CoFetchService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IFetchService; + end; + + { TFetchService_Proxy } + TFetchService_Proxy = class(TDataAbstractService_Proxy, IFetchService) + protected + function __GetInterfaceName:string; override; + + function GetOrdersAndDetails(const StartOrderID: Integer; const EndOrderID: Integer): Binary; + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uROSerializer, uRORes; + +{ CoFetchService } + +class function CoFetchService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IFetchService; +begin + result := TFetchService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TFetchService_Proxy } + +function TFetchService_Proxy.__GetInterfaceName:string; +begin + result := 'FetchService'; +end; + +function TFetchService_Proxy.GetOrdersAndDetails(const StartOrderID: Integer; const EndOrderID: Integer): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'FetchLibrary', __InterfaceName, 'GetOrdersAndDetails'); + __Message.Write('StartOrderID', TypeInfo(Integer), StartOrderID, []); + __Message.Write('EndOrderID', TypeInfo(Integer), EndOrderID, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +initialization + RegisterProxyClass(IFetchService_IID, TFetchService_Proxy); + + +finalization + UnregisterProxyClass(IFetchService_IID); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchLibrary_Invk.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchLibrary_Invk.pas new file mode 100644 index 0000000..00626d4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchLibrary_Invk.pas @@ -0,0 +1,69 @@ +unit FetchLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Used RODL Intf's:} DataAbstract4_Intf, + {Used RODL Invk's:} DataAbstract4_Invk, + {Generated:} FetchLibrary_Intf; + +type + {$M+} + TFetchService_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + procedure Invoke_GetOrdersAndDetails(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + {$M-} + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TFetchService_Invoker } + +procedure TFetchService_Invoker.Invoke_GetOrdersAndDetails(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetOrdersAndDetails(const StartOrderID: Integer; const EndOrderID: Integer): Binary; } +var + StartOrderID: Integer; + EndOrderID: Integer; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('StartOrderID', TypeInfo(Integer), StartOrderID, []); + __Message.Read('EndOrderID', TypeInfo(Integer), EndOrderID, []); + + lResult := (__Instance as IFetchService).GetOrdersAndDetails(StartOrderID, EndOrderID); + + __Message.InitializeResponseMessage(__Transport, 'FetchLibrary', 'FetchService', 'GetOrdersAndDetailsResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServer.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServer.bdsproj new file mode 100644 index 0000000..b800b9e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServer.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + FetchServer.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServer.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServer.dpr new file mode 100644 index 0000000..4d702b2 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServer.dpr @@ -0,0 +1,24 @@ +program FetchServer; + +{#ROGEN:FetchLibrary.RODL} // RemObjects SDK: Careful, do not remove! + +uses + uROComInit, + uROComboService, + Forms, + FetchServerMain in 'FetchServerMain.pas' {FetchServerMainForm}, + FetchServerData in 'FetchServerData.pas' {FetchServerDataModule: TDataModule}, + FetchLibrary_Intf in 'FetchLibrary_Intf.pas', + FetchLibrary_Invk in 'FetchLibrary_Invk.pas', + FetchService_Impl in 'FetchService_Impl.pas' {FetchService: TDataAbstractService}; + +{$R *.res} +{$R RODLFile.res} + +begin + Application.Initialize; + Application.Title := 'Fetch Server'; + Application.CreateForm(TFetchServerDataModule, FetchServerDataModule); + Application.CreateForm(TFetchServerMainForm, FetchServerMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServer.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServer.dproj new file mode 100644 index 0000000..7708464 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServer.dproj @@ -0,0 +1,44 @@ + + + {c960438c-973c-4609-85d8-f600fec539dc} + FetchServer.dpr + Debug + AnyCPU + DCC32 + FetchServer.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + + +FalseTrueFalseFalseFalse1000FalseFalseFalseFalseFalse103312521.0.0.01.0.0.0FetchServer.dpr + + + + + MainSource + + + + +
FetchServerDataModule
+
+ +
FetchServerMainForm
+
+ +
FetchService
+
+
+
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServer.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServer.res new file mode 100644 index 0000000..7455d6e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServer.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServerData.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServerData.dfm new file mode 100644 index 0000000..06b3c89 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServerData.dfm @@ -0,0 +1,58 @@ +object FetchServerDataModule: TFetchServerDataModule + OldCreateOrder = False + OnCreate = DataModuleCreate + Height = 207 + Width = 352 + object Server: TROIndyHTTPServer + Dispatchers = < + item + Name = 'Message' + Message = Message + Enabled = True + PathInfo = 'Bin' + end> + Port = 8099 + Left = 32 + Top = 8 + end + object Message: TROBinMessage + Left = 32 + Top = 56 + end + object ConnectionManager: TDAConnectionManager + Connections = < + item + Name = 'Northwind' + ConnectionString = + 'ADO?AuxDriver=SQLOLEDB.1;Server=localhost;Database=Northwind;Int' + + 'egrated Security=SSPI' + Description = 'Microsoft SQL Server 2000, localhost' + Default = True + Tag = 0 + end> + DriverManager = DriverManager + PoolingEnabled = True + Left = 136 + Top = 56 + end + object DriverManager: TDADriverManager + DriverDirectory = '%SYSTEM%\' + TraceActive = False + TraceFlags = [] + Left = 136 + Top = 10 + end + object ADODriver: TDAADODriver + Left = 256 + Top = 8 + end + object DataDictionary: TDADataDictionary + Fields = <> + Left = 32 + Top = 104 + end + object SessionManager: TROInMemorySessionManager + Left = 136 + Top = 104 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServerData.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServerData.pas new file mode 100644 index 0000000..d7ad9cb --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServerData.pas @@ -0,0 +1,41 @@ +unit FetchServerData; + +interface + +uses + SysUtils, Classes, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, + uROBinMessage, uROIndyHTTPServer, + uDAEngine, uDADriverManager, uDAClasses, uROSessions, + uDAADODriver, uROIndyTCPServer; + +type + TFetchServerDataModule = class(TDataModule) + Server: TROIndyHTTPServer; + Message: TROBinMessage; + ConnectionManager: TDAConnectionManager; + DriverManager: TDADriverManager; + ADODriver: TDAADODriver; + SessionManager: TROInMemorySessionManager; + DataDictionary: TDADataDictionary; + + procedure DataModuleCreate(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + FetchServerDataModule: TFetchServerDataModule; + +implementation + +{$R *.dfm} + +procedure TFetchServerDataModule.DataModuleCreate(Sender: TObject); +begin + Server.Active := true; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServerMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServerMain.dfm new file mode 100644 index 0000000..bdeb43b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServerMain.dfm @@ -0,0 +1,25 @@ +object FetchServerMainForm: TFetchServerMainForm + Left = 372 + Top = 277 + BorderStyle = bsDialog + Caption = 'Fetch Server' + ClientHeight = 64 + ClientWidth = 228 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton + Left = 8 + Top = 8 + Width = 212 + Height = 48 + Cursor = crHandPoint + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServerMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServerMain.pas new file mode 100644 index 0000000..6d39b86 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchServerMain.pas @@ -0,0 +1,25 @@ +unit FetchServerMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uDAPoweredByDataAbstractButton, uROPoweredByRemObjectsButton; + +type + TFetchServerMainForm = class(TForm) + DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton; + private + { Private declarations } + public + { Public declarations } + end; + +var + FetchServerMainForm: TFetchServerMainForm; + +implementation + +{$R *.dfm} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchService_Impl.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchService_Impl.dfm new file mode 100644 index 0000000..2d46bb3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchService_Impl.dfm @@ -0,0 +1,857 @@ +object FetchService: TFetchService + OldCreateOrder = True + SessionManager = FetchServerDataModule.SessionManager + ServiceSchema = Schema + ServiceDataStreamer = DataStreamer + ExportedDataTables = <> + Height = 300 + Width = 300 + object Schema: TDASchema + ConnectionManager = FetchServerDataModule.ConnectionManager + DataDictionary = FetchServerDataModule.DataDictionary + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'Northwind' + TargetTable = 'Order Details' + StatementType = stAutoSQL + ColumnMappings = < + item + DatasetField = 'OrderID' + TableField = 'OrderID' + end + item + DatasetField = 'ProductID' + TableField = 'ProductID' + end + item + DatasetField = 'UnitPrice' + TableField = 'UnitPrice' + end + item + DatasetField = 'Quantity' + TableField = 'Quantity' + end + item + DatasetField = 'Discount' + TableField = 'Discount' + end> + end> + Name = 'PagedOrderDetails' + Fields = < + item + Name = 'OrderID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ProductID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UnitPrice' + DataType = datFloat + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Quantity' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Discount' + DataType = datFloat + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'StartingOrderID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Value = '' + ParamType = daptInput + end + item + Name = 'EndingOrderID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'Northwind' + TargetTable = 'Order Details' + SQL = + 'SELECT '#10' OrderID, ProductID, UnitPrice, Quantity, Discount'#10'FR' + + 'OM'#10' [Order Details]'#10'WHERE'#10' OrderID >= :StartingOrderID an' + + 'd'#10' OrderID <= :EndingOrderID and'#10' {Where}'#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'OrderID' + TableField = 'OrderID' + end + item + DatasetField = 'ProductID' + TableField = 'ProductID' + end + item + DatasetField = 'UnitPrice' + TableField = 'UnitPrice' + end + item + DatasetField = 'Quantity' + TableField = 'Quantity' + end + item + DatasetField = 'Discount' + TableField = 'Discount' + end> + end> + Name = 'OrderDetails' + Fields = < + item + Name = 'OrderID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ProductID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UnitPrice' + DataType = datFloat + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Quantity' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Discount' + DataType = datFloat + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'StartingOrderID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Value = '' + ParamType = daptInput + end + item + Name = 'EndingOrderID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'Northwind' + TargetTable = 'Orders' + SQL = + 'SELECT '#10' OrderID, CustomerID, EmployeeID, OrderDate, Required' + + 'Date, '#10' ShippedDate, ShipVia, Freight, ShipName, ShipAddress,' + + ' '#10' ShipCity, ShipRegion, ShipPostalCode, ShipCountry'#10'FROM'#10' ' + + ' Orders'#10'WHERE'#10' OrderID >= :StartingOrderID and'#10' OrderID ' + + '<= :EndingOrderID and'#10' {Where}'#10' '#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'OrderID' + TableField = 'OrderID' + end + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'EmployeeID' + TableField = 'EmployeeID' + end + item + DatasetField = 'OrderDate' + TableField = 'OrderDate' + end + item + DatasetField = 'RequiredDate' + TableField = 'RequiredDate' + end + item + DatasetField = 'ShippedDate' + TableField = 'ShippedDate' + end + item + DatasetField = 'ShipVia' + TableField = 'ShipVia' + end + item + DatasetField = 'Freight' + TableField = 'Freight' + end + item + DatasetField = 'ShipName' + TableField = 'ShipName' + end + item + DatasetField = 'ShipAddress' + TableField = 'ShipAddress' + end + item + DatasetField = 'ShipCity' + TableField = 'ShipCity' + end + item + DatasetField = 'ShipRegion' + TableField = 'ShipRegion' + end + item + DatasetField = 'ShipPostalCode' + TableField = 'ShipPostalCode' + end + item + DatasetField = 'ShipCountry' + TableField = 'ShipCountry' + end> + end> + Name = 'Orders' + Fields = < + item + Name = 'OrderID' + DataType = datAutoInc + BlobType = dabtUnknown + GeneratorName = 'Orders' + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EmployeeID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OrderDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RequiredDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShippedDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipVia' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Freight' + DataType = datFloat + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipName' + DataType = datWideString + Size = 40 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipAddress' + DataType = datWideString + Size = 60 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCity' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipRegion' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipPostalCode' + DataType = datWideString + Size = 10 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCountry' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'StartingOrderID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'Northwind' + TargetTable = 'Orders' + SQL = + 'SELECT '#10' OrderID, CustomerID, EmployeeID, OrderDate, Required' + + 'Date, '#10' ShippedDate, ShipVia, Freight, ShipName, ShipAddress,' + + ' '#10' ShipCity, ShipRegion, ShipPostalCode, ShipCountry'#10'FROM'#10' ' + + ' Orders'#10'WHERE'#10' OrderID > :StartingOrderID and'#10' {Where}'#10'ORD' + + 'ER BY'#10' OrderID'#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'OrderID' + TableField = 'OrderID' + end + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'EmployeeID' + TableField = 'EmployeeID' + end + item + DatasetField = 'OrderDate' + TableField = 'OrderDate' + end + item + DatasetField = 'RequiredDate' + TableField = 'RequiredDate' + end + item + DatasetField = 'ShippedDate' + TableField = 'ShippedDate' + end + item + DatasetField = 'ShipVia' + TableField = 'ShipVia' + end + item + DatasetField = 'Freight' + TableField = 'Freight' + end + item + DatasetField = 'ShipName' + TableField = 'ShipName' + end + item + DatasetField = 'ShipAddress' + TableField = 'ShipAddress' + end + item + DatasetField = 'ShipCity' + TableField = 'ShipCity' + end + item + DatasetField = 'ShipRegion' + TableField = 'ShipRegion' + end + item + DatasetField = 'ShipPostalCode' + TableField = 'ShipPostalCode' + end + item + DatasetField = 'ShipCountry' + TableField = 'ShipCountry' + end> + end> + Name = 'PagedOrders' + Fields = < + item + Name = 'OrderID' + DataType = datAutoInc + BlobType = dabtUnknown + GeneratorName = 'Orders' + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EmployeeID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OrderDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RequiredDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShippedDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipVia' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Freight' + DataType = datFloat + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipName' + DataType = datWideString + Size = 40 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipAddress' + DataType = datWideString + Size = 60 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCity' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipRegion' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipPostalCode' + DataType = datWideString + Size = 10 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCountry' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = <> + RelationShips = <> + UpdateRules = <> + Version = 0 + Left = 32 + Top = 56 + end + object DataStreamer: TDABin2DataStreamer + BufferSize = 262144 + SendReducedDelta = False + Left = 32 + Top = 8 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchService_Impl.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchService_Impl.pas new file mode 100644 index 0000000..945d08d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/FetchService_Impl.pas @@ -0,0 +1,74 @@ +unit FetchService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROXMLIntf, uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} FetchLibrary_Intf, uDADataStreamer, uDABin2DataStreamer, + uDAClasses, FetchServerData, uDAInterfaces; + +type + { TFetchService } + TFetchService = class(TDataAbstractService, IFetchService) + DataStreamer: TDABin2DataStreamer; + Schema: TDASchema; + private + protected + { IFetchService methods } + function GetOrdersAndDetails(const StartOrderID: Integer; const EndOrderID: Integer): Binary; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FetchLibrary_Invk; + +procedure Create_FetchService(out anInstance : IUnknown); +begin + anInstance := TFetchService.Create(nil); +end; + +{ FetchService } +function TFetchService.GetOrdersAndDetails(const StartOrderID: Integer; const EndOrderID: Integer): Binary; + + procedure ProcessDataset(aDataset: IDADataset); + begin + aDataset.ParamByName('StartingOrderID').AsInteger := StartOrderID; + aDataset.ParamByName('EndingOrderID').AsInteger := EndOrderID; + aDataset.Open; + DataStreamer.WriteDataset(aDataset, [woRows], -1); + end; + +begin + result := Binary.Create; + DataStreamer.Initialize(result, aiWrite); + try + // writing orders + ProcessDataset(Schema.NewDataset(Connection, 'Orders')); + // writing order details + ProcessDataset(Schema.NewDataset(Connection, 'OrderDetails')); + finally + DataStreamer.Finalize; + end; +end; + +initialization + TROClassFactory.Create('FetchService', Create_FetchService, TFetchService_Invoker); + +finalization + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/RODLFILE.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/RODLFILE.res new file mode 100644 index 0000000..be37b0d Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Fetch/RODLFILE.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSample.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSample.Sample.html new file mode 100644 index 0000000..02a861a --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSample.Sample.html @@ -0,0 +1,42 @@ + + + + + + + + +
+

+ First Sample +

+ +
+

Purpose

+

+ This example illustrates the basic functionality of Data Abstract from RemObjects Software.

+ The application shows how to receive data from a remote database. +

+ +

Getting Started

+ +

Examine the Code

+ + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSample.bdsgroup b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSample.bdsgroup new file mode 100644 index 0000000..3121f9f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSample.bdsgroup @@ -0,0 +1,20 @@ + + + + + + + + + + + + + FirstSampleServer.bdsproj + FirstSampleClient.bdsproj + FirstSampleServer.exe FirstSampleClient.exe + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSample.bpg b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSample.bpg new file mode 100644 index 0000000..1de9e53 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSample.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = FirstSampleServer.exe FirstSampleClient.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +FirstSampleServer.exe: FirstSampleServer.dpr + $(DCC) + +FirstSampleClient.exe: FirstSampleClient.dpr + $(DCC) + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSample.groupproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSample.groupproj new file mode 100644 index 0000000..26658df --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSample.groupproj @@ -0,0 +1,40 @@ + + + {7122486e-398e-464f-b75b-a8169350c11e} + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleClient.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleClient.bdsproj new file mode 100644 index 0000000..df27704 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleClient.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + FirstSampleClient.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleClient.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleClient.dpr new file mode 100644 index 0000000..7477e94 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleClient.dpr @@ -0,0 +1,18 @@ +program FirstSampleClient; + +uses + uROComInit, + Forms, + MidasLib, + FirstSampleclientMain in 'FirstSampleclientMain.pas' {FirstSampleclientMainForm}, + FirstSampleClientData in 'FirstSampleClientData.pas' {FirstSampleClientDataModule: TDAClientDataModule}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'First Sample Client'; + Application.CreateForm(TFirstSampleClientDataModule, FirstSampleClientDataModule); + Application.CreateForm(TFirstSampleclientMainForm, FirstSampleclientMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleClient.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleClient.dproj new file mode 100644 index 0000000..d05ce2b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleClient.dproj @@ -0,0 +1,75 @@ + + + {2ac631a8-06a9-4df5-8645-51b6996e3f52} + FirstSampleClient.dpr + Debug + AnyCPU + DCC32 + FirstSampleClient.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + FirstSampleClient.dpr + + + + + + + MainSource + + +
FirstSampleClientDataModule
+
+ +
FirstSampleclientMainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleClient.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleClient.res new file mode 100644 index 0000000..da01de5 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleClient.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleClientData.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleClientData.dfm new file mode 100644 index 0000000..30dab50 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleClientData.dfm @@ -0,0 +1,191 @@ +object FirstSampleClientDataModule: TFirstSampleClientDataModule + OldCreateOrder = True + Left = 139 + Top = 77 + Height = 300 + Width = 300 + object Channel: TROWinInetHTTPChannel + ServerLocators = <> + DispatchOptions = [] + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/BIN' + Left = 40 + Top = 8 + end + object Message: TROBinMessage + Left = 40 + Top = 52 + end + object RemoteService: TRORemoteService + Message = Message + Channel = Channel + ServiceName = 'FirstSampleService' + Left = 40 + Top = 96 + end + object DataStreamer: TDABinDataStreamer + Left = 40 + Top = 140 + end + object RemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RemoteService + GetDataCall.RemoteService = RemoteService + UpdateDataCall.RemoteService = RemoteService + GetScriptsCall.RemoteService = RemoteService + RemoteService = RemoteService + DataStreamer = DataStreamer + Left = 40 + Top = 184 + end + object tbl_Customers: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CompanyName' + DataType = datWideString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactName' + DataType = datWideString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactTitle' + DataType = datWideString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Address' + DataType = datWideString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Region' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PostalCode' + DataType = datWideString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Country' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Phone' + DataType = datWideString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Fax' + DataType = datWideString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = RemoteDataAdapter + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Customers' + IndexDefs = <> + Left = 130 + Top = 117 + end + object ds_Customers: TDADataSource + DataTable = tbl_Customers + Left = 138 + Top = 125 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleClientData.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleClientData.pas new file mode 100644 index 0000000..45c6a8b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleClientData.pas @@ -0,0 +1,34 @@ +unit FirstSampleClientData; + +interface + +uses + {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROWinInetHTTPChannel, + {Data Abstract:} uDADataTable, uDABINAdapter, uDAInterfaces, + uDADataStreamer, uDARemoteDataAdapter, uDAScriptingProvider, + uDACDSDataTable; + +type + TFirstSampleClientDataModule = class(TDataModule) + Message: TROBinMessage; + Channel: TROWinInetHTTPChannel; + RemoteService: TRORemoteService; + DataStreamer: TDABinDataStreamer; + RemoteDataAdapter: TDARemoteDataAdapter; + tbl_Customers: TDACDSDataTable; + ds_Customers: TDADataSource; + private + { Private declarations } + public + { Public declarations } + end; + +var + FirstSampleClientDataModule: TFirstSampleClientDataModule; + +implementation + +{$R *.dfm} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleLibrary.RODL b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleLibrary.RODL new file mode 100644 index 0000000..b83e242 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleLibrary.RODL @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleLibrary_Intf.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleLibrary_Intf.pas new file mode 100644 index 0000000..3b688bc --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleLibrary_Intf.pas @@ -0,0 +1,76 @@ +unit FirstSampleLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROClasses, uROClient, uROTypes, uROClientIntf, + {Used RODLs:} DataAbstract4_Intf; + +const + { Library ID } + LibraryUID = '{668FD1CF-765E-4C72-86E1-5BB53EA5CE34}'; + + { Service Interface ID's } + IFirstSampleService_IID : TGUID = '{58D29079-CADF-4D12-B78C-F1403B2BBF34}'; + + { Event ID's } + +type + { Forward declarations } + IFirstSampleService = interface; + + + + + { IFirstSampleService } + IFirstSampleService = interface(IDataAbstractService) + ['{58D29079-CADF-4D12-B78C-F1403B2BBF34}'] + end; + + { CoFirstSampleService } + CoFirstSampleService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IFirstSampleService; + end; + + { TFirstSampleService_Proxy } + TFirstSampleService_Proxy = class(TDataAbstractService_Proxy, IFirstSampleService) + protected + function __GetInterfaceName:string; override; + + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uRORes; + +{ CoFirstSampleService } + +class function CoFirstSampleService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IFirstSampleService; +begin + result := TFirstSampleService_Proxy.Create(aMessage, aTransportChannel); +end; + +function TFirstSampleService_Proxy.__GetInterfaceName:string; +begin + result := 'FirstSampleService'; +end; + +initialization + RegisterProxyClass(IFirstSampleService_IID, TFirstSampleService_Proxy); + + +finalization + UnregisterProxyClass(IFirstSampleService_IID); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleLibrary_Invk.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleLibrary_Invk.pas new file mode 100644 index 0000000..d4eb2fb --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleLibrary_Invk.pas @@ -0,0 +1,32 @@ +unit FirstSampleLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Used RODL Intf's:} DataAbstract4_Intf, + {Used RODL Invk's:} DataAbstract4_Invk, + {Generated:} FirstSampleLibrary_Intf; + +type + TFirstSampleService_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServer.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServer.bdsproj new file mode 100644 index 0000000..fa88e8c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServer.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + FirstSampleServer.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServer.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServer.dpr new file mode 100644 index 0000000..d8d551d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServer.dpr @@ -0,0 +1,30 @@ +program FirstSampleServer; + +{#ROGEN:FirstSampleLibrary.RODL} // RemObjects SDK: Careful, do not remove! + +uses + uROComInit, + uROComboService, + Forms, + FirstSampleServerMain in 'FirstSampleServerMain.pas' {FirstSampleServerMainForm}, + FirstSampleService_Impl in 'FirstSampleService_Impl.pas' {FirstSampleService: TDARemoteService}, + FirstSampleServerData in 'FirstSampleServerData.pas' {FirstSampleServerDataModule: TDataModule}, + FirstSampleLibrary_Intf in 'FirstSampleLibrary_Intf.pas', + FirstSampleLibrary_Invk in 'FirstSampleLibrary_Invk.pas'; + +{$R *.res} +{$R RODLFile.res} + +begin + if ROStartService('FirstSample', 'FirstSample') then begin + ROService.CreateForm(TFirstSampleServerDataModule, FirstSampleServerDataModule); + ROService.Run; + Exit; + end; + + Application.Initialize; + Application.Title := 'First Sample Server'; + Application.CreateForm(TFirstSampleServerDataModule, FirstSampleServerDataModule); + Application.CreateForm(TFirstSampleServerMainForm, FirstSampleServerMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServer.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServer.dproj new file mode 100644 index 0000000..f5ec2f7 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServer.dproj @@ -0,0 +1,80 @@ + + + {4845004a-289d-4c48-baea-2a580444e3a9} + FirstSampleServer.dpr + Debug + AnyCPU + DCC32 + FirstSampleServer.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + FirstSampleServer.dpr + + + + + + + MainSource + + + + +
FirstSampleServerDataModule
+
+ +
FirstSampleServerMainForm
+
+ +
FirstSampleService
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServer.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServer.res new file mode 100644 index 0000000..7455d6e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServer.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServerData.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServerData.dfm new file mode 100644 index 0000000..e3abc09 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServerData.dfm @@ -0,0 +1,69 @@ +object FirstSampleServerDataModule: TFirstSampleServerDataModule + OldCreateOrder = False + OnCreate = DataModuleCreate + Left = 74 + Top = 68 + Height = 207 + Width = 352 + object Server: TROIndyHTTPServer + Dispatchers = < + item + Name = 'Message' + Message = Message + Enabled = True + PathInfo = 'Bin' + end> + Port = 8099 + Left = 32 + Top = 8 + end + object Message: TROBinMessage + Left = 32 + Top = 56 + end + object ConnectionManager: TDAConnectionManager + MaxPoolSize = 10 + PoolTimeoutSeconds = 60 + PoolBehaviour = pbWait + WaitIntervalSeconds = 1 + Connections = < + item + Name = 'Northwind' + ConnectionString = + 'ADO?AuxDriver=SQLOLEDB.1;Server=localhost;Database=Northwind;Use' + + 'rID=sa;Password=;' + Description = 'Microsoft SQL Server 2000, localhost' + Default = True + Tag = 0 + end> + DriverManager = DriverManager + PoolingEnabled = True + Left = 136 + Top = 56 + end + object DriverManager: TDADriverManager + DriverDirectory = '%SYSTEM%\' + AutoLoad = False + TraceActive = False + TraceFlags = [] + Left = 136 + Top = 10 + end + object ADODriver: TDAADODriver + Left = 256 + Top = 8 + end + object IBXDriver: TDAIBXDriver + Left = 256 + Top = 56 + end + object DataDictionary: TDADataDictionary + Fields = <> + Left = 32 + Top = 104 + end + object SessionManager: TROInMemorySessionManager + Left = 136 + Top = 104 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServerData.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServerData.pas new file mode 100644 index 0000000..f093cee --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServerData.pas @@ -0,0 +1,42 @@ +unit FirstSampleServerData; + +interface + +uses + SysUtils, Classes, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, + uROBinMessage, uROIndyHTTPServer, + uDAEngine, uDADriverManager, uDAClasses, uROSessions, + uDAIBXDriver, uDAADODriver, uROIndyTCPServer; + +type + TFirstSampleServerDataModule = class(TDataModule) + Server: TROIndyHTTPServer; + Message: TROBinMessage; + ConnectionManager: TDAConnectionManager; + DriverManager: TDADriverManager; + ADODriver: TDAADODriver; + IBXDriver: TDAIBXDriver; + DataDictionary: TDADataDictionary; + SessionManager: TROInMemorySessionManager; + + procedure DataModuleCreate(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + FirstSampleServerDataModule: TFirstSampleServerDataModule; + +implementation + +{$R *.dfm} + +procedure TFirstSampleServerDataModule.DataModuleCreate(Sender: TObject); +begin + Server.Active := true; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServerMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServerMain.dfm new file mode 100644 index 0000000..c62db54 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServerMain.dfm @@ -0,0 +1,25 @@ +object FirstSampleServerMainForm: TFirstSampleServerMainForm + Left = 109 + Top = 97 + BorderStyle = bsDialog + Caption = 'First Sample Server' + ClientHeight = 64 + ClientWidth = 228 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton + Left = 8 + Top = 8 + Width = 212 + Height = 48 + Cursor = crHandPoint + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServerMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServerMain.pas new file mode 100644 index 0000000..bcaeffa --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleServerMain.pas @@ -0,0 +1,25 @@ +unit FirstSampleServerMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uDAPoweredByDataAbstractButton, uROPoweredByRemObjectsButton; + +type + TFirstSampleServerMainForm = class(TForm) + DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton; + private + { Private declarations } + public + { Public declarations } + end; + +var + FirstSampleServerMainForm: TFirstSampleServerMainForm; + +implementation + +{$R *.dfm} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleService_Impl.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleService_Impl.dfm new file mode 100644 index 0000000..ebb253c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleService_Impl.dfm @@ -0,0 +1,227 @@ +object FirstSampleService: TFirstSampleService + OldCreateOrder = True + SessionManager = FirstSampleServerDataModule.SessionManager + AcquireConnection = True + ServiceSchema = Schema + ServiceDataStreamer = DataStreamer + ExportedDataTables = <> + Left = 69 + Top = 46 + Height = 212 + Width = 216 + object DataStreamer: TDABinDataStreamer + Left = 32 + Top = 8 + end + object Schema: TDASchema + ConnectionManager = FirstSampleServerDataModule.ConnectionManager + DataDictionary = FirstSampleServerDataModule.DataDictionary + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'Northwind' + TargetTable = 'Customers' + SQL = + 'SELECT '#10' CustomerID, CompanyName, ContactName, ContactTitle, ' + + #10' Address, City, Region, PostalCode, Country, Phone, '#10' Fax' + + #10' FROM'#10' Customers'#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'CompanyName' + TableField = 'CompanyName' + end + item + DatasetField = 'ContactName' + TableField = 'ContactName' + end + item + DatasetField = 'ContactTitle' + TableField = 'ContactTitle' + end + item + DatasetField = 'Address' + TableField = 'Address' + end + item + DatasetField = 'City' + TableField = 'City' + end + item + DatasetField = 'Region' + TableField = 'Region' + end + item + DatasetField = 'PostalCode' + TableField = 'PostalCode' + end + item + DatasetField = 'Country' + TableField = 'Country' + end + item + DatasetField = 'Phone' + TableField = 'Phone' + end + item + DatasetField = 'Fax' + TableField = 'Fax' + end> + end> + Name = 'Customers' + Fields = < + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CompanyName' + DataType = datWideString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactName' + DataType = datWideString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactTitle' + DataType = datWideString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Address' + DataType = datWideString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Region' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PostalCode' + DataType = datWideString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Country' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Phone' + DataType = datWideString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Fax' + DataType = datWideString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = <> + RelationShips = < + item + Name = 'FK_Employees_Employees' + MasterDatasetName = 'Customers' + MasterFields = 'EmployeeID' + DetailDatasetName = 'Customers' + DetailFields = 'ReportsTo' + end> + UpdateRules = <> + Left = 32 + Top = 56 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleService_Impl.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleService_Impl.pas new file mode 100644 index 0000000..e5d0c19 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleService_Impl.pas @@ -0,0 +1,37 @@ +unit FirstSampleService_Impl; + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Data Abstract:} uDAClasses, uDADataTable, uDABinAdapter, uDAInterfaces, uDADataStreamer, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} FirstSampleLibrary_Intf; + +type + { TFirstSampleService } + TFirstSampleService = class(TDataAbstractService, IFirstSampleService) + DataStreamer: TDABinDataStreamer; + Schema: TDASchema; + private + protected + { IFirstSampleService methods } + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FirstSampleLibrary_Invk, FirstSampleServerData; + +procedure Create_FirstSampleService(out anInstance: IUnknown); +begin + anInstance := TFirstSampleService.Create(nil); +end; + +initialization + TROClassFactory.Create('FirstSampleService', Create_FirstSampleService, TFirstSampleService_Invoker); +finalization +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleclientMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleclientMain.dfm new file mode 100644 index 0000000..238b333 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleclientMain.dfm @@ -0,0 +1,59 @@ +object FirstSampleclientMainForm: TFirstSampleclientMainForm + Left = 31 + Top = 80 + AutoScroll = False + Caption = 'First Sample Client' + ClientHeight = 411 + ClientWidth = 615 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -14 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 120 + TextHeight = 16 + object DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton + Left = 2 + Top = 5 + Width = 212 + Height = 48 + Cursor = crHandPoint + ApplicationType = atClient + end + object FillButton: TButton + Left = 384 + Top = 20 + Width = 92 + Height = 30 + Caption = '&Fill' + TabOrder = 0 + OnClick = FillButtonClick + end + object UpdateButton: TButton + Left = 512 + Top = 20 + Width = 92 + Height = 30 + Caption = '&Update' + Enabled = False + TabOrder = 1 + OnClick = UpdateButtonClick + end + object DBGrid1: TDBGrid + Left = 2 + Top = 70 + Width = 609 + Height = 336 + Anchors = [akLeft, akTop, akRight, akBottom] + DataSource = FirstSampleClientDataModule.ds_Customers + TabOrder = 2 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -14 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleclientMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleclientMain.pas new file mode 100644 index 0000000..22e50b7 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/FirstSampleclientMain.pas @@ -0,0 +1,45 @@ +unit FirstSampleclientMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROClientIntf, uRORemoteService, uROBinMessage, Grids, + DBGrids, uROPoweredByRemObjectsButton, uDAPoweredByDataAbstractButton; + +type + TFirstSampleclientMainForm = class(TForm) + DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton; + FillButton: TButton; + UpdateButton: TButton; + DBGrid1: TDBGrid; + procedure FillButtonClick(Sender: TObject); + procedure UpdateButtonClick(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + FirstSampleclientMainForm: TFirstSampleclientMainForm; + +implementation + +uses + FirstSampleClientData; + +{$R *.dfm} + +procedure TFirstSampleclientMainForm.FillButtonClick(Sender: TObject); +begin + FirstSampleClientDataModule.tbl_Customers.Open; + UpdateButton.Enabled:=True; +end; + +procedure TFirstSampleclientMainForm.UpdateButtonClick(Sender: TObject); +begin + FirstSampleClientDataModule.tbl_Customers.ApplyUpdates; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/RODLFILE.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/RODLFILE.res new file mode 100644 index 0000000..f3eeb87 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/First Sample/RODLFILE.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Local Schema/LocalSchema.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/Local Schema/LocalSchema.Sample.html new file mode 100644 index 0000000..6e6c2e4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Local Schema/LocalSchema.Sample.html @@ -0,0 +1,70 @@ + + + + + + + + + +

+ Local Schema Sample +

+ + +

Purpose

+

+ A simple demo showing the use of several Data Abstract components to select/update + a range of Customer records. +

+

Examine the Code

+

+ The Data Abstract components on the form are: +

+ +

+   +

+

+   +

+ + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Local Schema/LocalSchema.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Local Schema/LocalSchema.bdsproj new file mode 100644 index 0000000..0010851 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Local Schema/LocalSchema.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + LocalSchema.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Local Schema/LocalSchema.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Local Schema/LocalSchema.dpr new file mode 100644 index 0000000..ca77be5 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Local Schema/LocalSchema.dpr @@ -0,0 +1,14 @@ +program LocalSchema; + +uses + Forms, + LocalSchemaMain in 'LocalSchemaMain.pas' {LocalSchemaMainForm}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'Manual DataTable fill'; + Application.CreateForm(TLocalSchemaMainForm, LocalSchemaMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Local Schema/LocalSchema.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Local Schema/LocalSchema.dproj new file mode 100644 index 0000000..2b86fe9 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Local Schema/LocalSchema.dproj @@ -0,0 +1,72 @@ + + + {836cc650-b903-40cd-bf94-647e264ddc3c} + LocalSchema.dpr + Debug + AnyCPU + DCC32 + LocalSchema.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + LocalSchema.dpr + + + + + + + MainSource + + +
LocalSchemaMainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Local Schema/LocalSchema.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Local Schema/LocalSchema.res new file mode 100644 index 0000000..b946fbb Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Local Schema/LocalSchema.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Local Schema/LocalSchemaMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Local Schema/LocalSchemaMain.dfm new file mode 100644 index 0000000..87b6722 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Local Schema/LocalSchemaMain.dfm @@ -0,0 +1,759 @@ +object LocalSchemaMainForm: TLocalSchemaMainForm + Left = 140 + Top = 73 + AutoScroll = False + BorderWidth = 5 + Caption = 'Local Schema Sample' + ClientHeight = 317 + ClientWidth = 502 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 0 + Top = 4 + Width = 84 + Height = 13 + Caption = 'From CustomerID:' + end + object Label2: TLabel + Left = 217 + Top = 4 + Width = 74 + Height = 13 + Caption = 'To CustomerID:' + end + object DBGrid1: TDBGrid + Left = 0 + Top = 25 + Width = 502 + Height = 262 + Align = alBottom + Anchors = [akLeft, akTop, akRight, akBottom] + DataSource = DataSource + TabOrder = 0 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object eCust1: TEdit + Left = 88 + Top = 0 + Width = 121 + Height = 21 + TabOrder = 1 + Text = 'ALFKI' + end + object eCust2: TEdit + Left = 296 + Top = 0 + Width = 121 + Height = 21 + TabOrder = 2 + Text = 'BOTTM' + end + object Panel1: TPanel + Left = 0 + Top = 287 + Width = 502 + Height = 30 + Align = alBottom + BevelOuter = bvNone + TabOrder = 3 + DesignSize = ( + 502 + 30) + object DBNavigator1: TDBNavigator + Left = 0 + Top = 5 + Width = 230 + Height = 25 + DataSource = DataSource + Anchors = [akLeft] + TabOrder = 0 + end + object bOpenClose: TButton + Left = 240 + Top = 5 + Width = 75 + Height = 25 + Anchors = [akLeft] + Caption = 'Open/Close' + TabOrder = 1 + OnClick = bOpenCloseClick + end + object bApplyUpdates: TButton + Left = 315 + Top = 5 + Width = 97 + Height = 25 + Anchors = [akLeft] + Caption = 'Apply Updates' + TabOrder = 2 + OnClick = bApplyUpdatesClick + end + end + object ConnectionManager: TDAConnectionManager + MaxPoolSize = 10 + PoolTimeoutSeconds = 60 + PoolBehaviour = pbWait + WaitIntervalSeconds = 1 + Connections = < + item + Name = 'ADO' + ConnectionString = + 'ADO?Server=localhost;Database=Northwind;UserID=sa;Password=;AuxD' + + 'river=SQLOLEDB.1' + Default = True + Tag = 0 + end> + DriverManager = DriverManager + PoolingEnabled = True + Left = 24 + Top = 152 + end + object DriverManager: TDADriverManager + DriverDirectory = 'C:\Dev\DataAbstract\Bin\' + AutoLoad = False + TraceActive = False + TraceFlags = [] + Left = 56 + Top = 152 + end + object ADODriver: TDAADODriver + Left = 88 + Top = 152 + end + object BINAdapter: TDABinDataStreamer + Left = 120 + Top = 152 + end + object DataSource: TDADataSource + DataTable = DataTable + Left = 72 + Top = 200 + end + object DataTable: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CompanyName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactName' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactTitle' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Address' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Region' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Country' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Phone' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Fax' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = < + item + Name = 'CustA' + DataType = datString + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'CustB' + DataType = datString + BlobType = dabtUnknown + ParamType = daptInput + end> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + ReadOnly = False + LocalSchema = DASchema + LocalDataStreamer = BINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Customers' + IndexDefs = <> + Left = 64 + Top = 192 + end + object DASchema: TDASchema + ConnectionManager = ConnectionManager + Datasets = < + item + Params = < + item + Name = 'CustA' + DataType = datString + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'CustB' + DataType = datString + BlobType = dabtUnknown + ParamType = daptInput + end> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Customers' + SQL = + 'SELECT '#10' CustomerID, CompanyName, ContactName, ContactTitle, ' + + #10' Address, City, Region, PostalCode, Country, Phone, '#10' Fax' + + #10' FROM'#10' Customers'#10' WHERE CustomerID>=:CustA and CustomerID<' + + '=:CustB' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'CompanyName' + TableField = 'CompanyName' + end + item + DatasetField = 'ContactName' + TableField = 'ContactName' + end + item + DatasetField = 'ContactTitle' + TableField = 'ContactTitle' + end + item + DatasetField = 'Address' + TableField = 'Address' + end + item + DatasetField = 'City' + TableField = 'City' + end + item + DatasetField = 'Region' + TableField = 'Region' + end + item + DatasetField = 'PostalCode' + TableField = 'PostalCode' + end + item + DatasetField = 'Country' + TableField = 'Country' + end + item + DatasetField = 'Phone' + TableField = 'Phone' + end + item + DatasetField = 'Fax' + TableField = 'Fax' + end> + end> + Name = 'Customers' + Fields = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CompanyName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactName' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactTitle' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Address' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Region' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Country' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Phone' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Fax' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = < + item + Params = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'CompanyName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'ContactName' + DataType = datString + Size = 30 + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'ContactTitle' + DataType = datString + Size = 30 + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'Address' + DataType = datString + Size = 60 + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'City' + DataType = datString + Size = 15 + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'Region' + DataType = datString + Size = 15 + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'PostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'Country' + DataType = datString + Size = 15 + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'Phone' + DataType = datString + Size = 24 + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'Fax' + DataType = datString + Size = 24 + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'TestNumeric' + DataType = datFloat + BlobType = dabtUnknown + ParamType = daptInput + end> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Customers' + SQL = + 'INSERT'#10' INTO Customers'#10' (CustomerID, CompanyName, ContactNam' + + 'e, ContactTitle, Address, City, Region, PostalCode, Country, Pho' + + 'ne, Fax, TestNumeric)'#10' VALUES'#10' (:CustomerID, :CompanyName, :' + + 'ContactName, :ContactTitle, :Address, :City, :Region, :PostalCod' + + 'e, :Country, :Phone, :Fax, :TestNumeric)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_Customers' + end + item + Params = < + item + Name = 'OLD_CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + ParamType = daptInput + end> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Customers' + SQL = + 'DELETE '#10' FROM'#10' Customers'#10' WHERE'#10' (CustomerID = :OLD_Cust' + + 'omerID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_Customers' + end + item + Params = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'CompanyName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'ContactName' + DataType = datString + Size = 30 + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'ContactTitle' + DataType = datString + Size = 30 + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'Address' + DataType = datString + Size = 60 + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'City' + DataType = datString + Size = 15 + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'Region' + DataType = datString + Size = 15 + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'PostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'Country' + DataType = datString + Size = 15 + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'Phone' + DataType = datString + Size = 24 + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'Fax' + DataType = datString + Size = 24 + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'TestNumeric' + DataType = datFloat + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'OLD_CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + ParamType = daptInput + end> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Customers' + SQL = + 'UPDATE Customers'#10' SET '#10' CustomerID = :CustomerID, '#10' Compa' + + 'nyName = :CompanyName, '#10' ContactName = :ContactName, '#10' Con' + + 'tactTitle = :ContactTitle, '#10' Address = :Address, '#10' City = ' + + ':City, '#10' Region = :Region, '#10' PostalCode = :PostalCode, '#10' ' + + ' Country = :Country, '#10' Phone = :Phone, '#10' Fax = :Fax, '#10' ' + + ' TestNumeric = :TestNumeric'#10' WHERE'#10' (CustomerID = :OLD_Custo' + + 'merID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_Customers' + end> + RelationShips = <> + UpdateRules = <> + Left = 160 + Top = 152 + end + object BusinessProcessor: TDABusinessProcessor + Schema = DASchema + ReferencedDataset = 'Customers' + ProcessorOptions = [poAutoGenerateInsert, poAutoGenerateUpdate, poAutoGenerateDelete, poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 112 + Top = 200 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Local Schema/LocalSchemaMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Local Schema/LocalSchemaMain.pas new file mode 100644 index 0000000..b1f750a --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Local Schema/LocalSchemaMain.pas @@ -0,0 +1,62 @@ +unit LocalSchemaMain; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uDAEngine, uDAADODriver, uDADriverManager, uDAClasses, + uDADataTable, uDABINAdapter, uDACDSDataTable, DB, StdCtrls, ExtCtrls, + DBCtrls, Grids, DBGrids, uDABusinessProcessor, uDAScriptingProvider, + uDADataStreamer; + +type + TLocalSchemaMainForm = class(TForm) + DriverManager: TDADriverManager; + ADODriver: TDAADODriver; + BINAdapter: TDABinDataStreamer; + DataSource: TDADataSource; + DataTable: TDACDSDataTable; + DBGrid1: TDBGrid; + BusinessProcessor: TDABusinessProcessor; + eCust1: TEdit; + eCust2: TEdit; + Label1: TLabel; + Label2: TLabel; + ConnectionManager: TDAConnectionManager; + Panel1: TPanel; + DBNavigator1: TDBNavigator; + bOpenClose: TButton; + bApplyUpdates: TButton; + DASchema: TDASchema; + procedure bOpenCloseClick(Sender: TObject); + procedure bApplyUpdatesClick(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + LocalSchemaMainForm: TLocalSchemaMainForm; + +implementation + +{$R *.dfm} + +procedure TLocalSchemaMainForm.bOpenCloseClick(Sender: TObject); +begin + if not DataTable.Active then begin + DataTable.ParamByName('CustA').AsString := eCust1.Text; + DataTable.ParamByName('CustB').AsString := eCust2.Text; + end; + + DataTable.Active := DataTable.Active xor TRUE; +end; + +procedure TLocalSchemaMainForm.bApplyUpdatesClick(Sender: TObject); +begin + BusinessProcessor.ProcessDelta(DataTable, AllChanges); +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample.Sample.html new file mode 100644 index 0000000..2c21f56 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample.Sample.html @@ -0,0 +1,33 @@ + + + + + + + + + +

+ Login Sample +

+ + +

Purpose

+ +

+ This example shows how to provide a simple Login.
+

+

+ The login data is held in Northwind's Employees table, with the FirstName and LastName fields used for UserName and Password respectively. +

+ +

Examine the Code

+ + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample.bdsgroup b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample.bdsgroup new file mode 100644 index 0000000..ca45e64 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample.bdsgroup @@ -0,0 +1,20 @@ + + + + + + + + + + + + + LoginSample_server.bdsproj + LoginSample_Client.bdsproj + LoginSample_server.exe LoginSample_Client.exe + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample.bpg b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample.bpg new file mode 100644 index 0000000..f74198c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = LoginSample_server.exe LoginSample_Client.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +LoginSample_server.exe: LoginSample_server.dpr + $(DCC) + +LoginSample_Client.exe: LoginSample_Client.dpr + $(DCC) + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample.groupproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample.groupproj new file mode 100644 index 0000000..e9204af --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample.groupproj @@ -0,0 +1,40 @@ + + + {72af6019-78ce-45df-b5c2-80318d022ad3} + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSampleLibrary.RODL b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSampleLibrary.RODL new file mode 100644 index 0000000..2daa08c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSampleLibrary.RODL @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSampleLibrary_Intf.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSampleLibrary_Intf.pas new file mode 100644 index 0000000..aaa5a30 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSampleLibrary_Intf.pas @@ -0,0 +1,109 @@ +unit LoginSampleLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROClasses, uROClient, uROTypes, uROClientIntf, + {Used RODLs:} DataAbstract4_Intf; + +const + { Library ID } + LibraryUID = '{8923B665-D147-4E49-B262-59B91DE7EF10}'; + + { Service Interface ID's } + ILoginSampleService_IID : TGUID = '{B3131769-5008-4AAE-A339-A65950032EEE}'; + ILoginService_IID : TGUID = '{4E74056F-733F-4415-81D2-D8E7297C9EC2}'; + + { Event ID's } + +type + { Forward declarations } + ILoginSampleService = interface; + ILoginService = interface; + + + + + { ILoginSampleService } + ILoginSampleService = interface(IDataAbstractService) + ['{B3131769-5008-4AAE-A339-A65950032EEE}'] + end; + + { CoLoginSampleService } + CoLoginSampleService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ILoginSampleService; + end; + + { TLoginSampleService_Proxy } + TLoginSampleService_Proxy = class(TDataAbstractService_Proxy, ILoginSampleService) + protected + function __GetInterfaceName:string; override; + + end; + + { ILoginService } + ILoginService = interface(ISimpleLoginService) + ['{4E74056F-733F-4415-81D2-D8E7297C9EC2}'] + end; + + { CoLoginService } + CoLoginService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ILoginService; + end; + + { TLoginService_Proxy } + TLoginService_Proxy = class(TSimpleLoginService_Proxy, ILoginService) + protected + function __GetInterfaceName:string; override; + + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uRORes; + +{ CoLoginSampleService } + +class function CoLoginSampleService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ILoginSampleService; +begin + result := TLoginSampleService_Proxy.Create(aMessage, aTransportChannel); +end; + +function TLoginSampleService_Proxy.__GetInterfaceName:string; +begin + result := 'LoginSampleService'; +end; + +{ CoLoginService } + +class function CoLoginService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ILoginService; +begin + result := TLoginService_Proxy.Create(aMessage, aTransportChannel); +end; + +function TLoginService_Proxy.__GetInterfaceName:string; +begin + result := 'LoginService'; +end; + +initialization + RegisterProxyClass(ILoginSampleService_IID, TLoginSampleService_Proxy); + RegisterProxyClass(ILoginService_IID, TLoginService_Proxy); + + +finalization + UnregisterProxyClass(ILoginSampleService_IID); + UnregisterProxyClass(ILoginService_IID); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSampleLibrary_Invk.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSampleLibrary_Invk.pas new file mode 100644 index 0000000..5997211 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSampleLibrary_Invk.pas @@ -0,0 +1,38 @@ +unit LoginSampleLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Used RODL Intf's:} DataAbstract4_Intf, + {Used RODL Invk's:} DataAbstract4_Invk, + {Generated:} LoginSampleLibrary_Intf; + +type + TLoginSampleService_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + end; + + TLoginService_Invoker = class(TSimpleLoginService_Invoker) + private + protected + published + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSampleService_Impl.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSampleService_Impl.dfm new file mode 100644 index 0000000..f91ab57 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSampleService_Impl.dfm @@ -0,0 +1,335 @@ +object LoginSampleService: TLoginSampleService + OldCreateOrder = True + RequiresSession = True + SessionManager = LoginSample_ServerDataModule.SessionManager + AcquireConnection = True + ServiceSchema = Schema + ServiceDataStreamer = DataStreamer + ExportedDataTables = <> + Left = 357 + Top = 213 + Height = 212 + Width = 216 + object DataStreamer: TDABinDataStreamer + Left = 32 + Top = 8 + end + object Schema: TDASchema + ConnectionManager = LoginSample_ServerDataModule.ConnectionManager + DataDictionary = LoginSample_ServerDataModule.DataDictionary + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'Northwind' + TargetTable = 'Employees' + SQL = + 'SELECT '#10' EmployeeID, LastName, FirstName, Title, TitleOfCourt' + + 'esy, '#10' BirthDate, HireDate, Address, City, Region, PostalCode' + + ', '#10' Country, HomePhone, Extension, Photo, Notes, ReportsTo, '#10 + + ' PhotoPath'#10' FROM'#10' Employees' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'EmployeeID' + TableField = 'EmployeeID' + end + item + DatasetField = 'LastName' + TableField = 'LastName' + end + item + DatasetField = 'FirstName' + TableField = 'FirstName' + end + item + DatasetField = 'Title' + TableField = 'Title' + end + item + DatasetField = 'TitleOfCourtesy' + TableField = 'TitleOfCourtesy' + end + item + DatasetField = 'BirthDate' + TableField = 'BirthDate' + end + item + DatasetField = 'HireDate' + TableField = 'HireDate' + end + item + DatasetField = 'Address' + TableField = 'Address' + end + item + DatasetField = 'City' + TableField = 'City' + end + item + DatasetField = 'Region' + TableField = 'Region' + end + item + DatasetField = 'PostalCode' + TableField = 'PostalCode' + end + item + DatasetField = 'Country' + TableField = 'Country' + end + item + DatasetField = 'HomePhone' + TableField = 'HomePhone' + end + item + DatasetField = 'Extension' + TableField = 'Extension' + end + item + DatasetField = 'Photo' + TableField = 'Photo' + end + item + DatasetField = 'Notes' + TableField = 'Notes' + end + item + DatasetField = 'ReportsTo' + TableField = 'ReportsTo' + end + item + DatasetField = 'PhotoPath' + TableField = 'PhotoPath' + end> + end> + Name = 'Employees' + Fields = < + item + Name = 'EmployeeID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'LastName' + DataType = datWideString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FirstName' + DataType = datWideString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Title' + DataType = datWideString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TitleOfCourtesy' + DataType = datWideString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'BirthDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'HireDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Address' + DataType = datWideString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Region' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PostalCode' + DataType = datWideString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Country' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'HomePhone' + DataType = datWideString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Extension' + DataType = datWideString + Size = 4 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Photo' + DataType = datBlob + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Notes' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ReportsTo' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PhotoPath' + DataType = datWideString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = <> + RelationShips = < + item + Name = 'FK_Employees_Employees' + MasterDatasetName = 'Employees' + MasterFields = 'EmployeeID' + DetailDatasetName = 'Employees' + DetailFields = 'ReportsTo' + end> + UpdateRules = <> + Left = 32 + Top = 56 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSampleService_Impl.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSampleService_Impl.pas new file mode 100644 index 0000000..b003b0b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSampleService_Impl.pas @@ -0,0 +1,37 @@ +unit LoginSampleService_Impl; + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Data Abstract:} uDAClasses, uDADataTable, uDABinAdapter, uDAInterfaces, uDADataStreamer, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} LoginSampleLibrary_Intf; + +type + { TLoginSampleService } + TLoginSampleService = class(TDataAbstractService, ILoginSampleService) + DataStreamer: TDABinDataStreamer; + Schema: TDASchema; + private + protected + { ILoginSampleService methods } + end; + +implementation + +{$R *.dfm} +uses + {Generated:} LoginSampleLibrary_Invk, LoginSample_ServerData; + +procedure Create_LoginSampleService(out anInstance: IUnknown); +begin + anInstance := TLoginSampleService.Create(nil); +end; + +initialization + TROClassFactory.Create('LoginSampleService', Create_LoginSampleService, TLoginSampleService_Invoker); +finalization +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_Client.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_Client.bdsproj new file mode 100644 index 0000000..42fff79 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_Client.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + LoginSample_Client.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_Client.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_Client.dpr new file mode 100644 index 0000000..56feae1 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_Client.dpr @@ -0,0 +1,18 @@ +program LoginSample_Client; + +uses + uROComInit, + Forms, + MidasLib, + LoginSample_ClientMain in 'LoginSample_ClientMain.pas' {LoginSample_ClientMainForm}, + LoginSample_ClientData in 'LoginSample_ClientData.pas' {LoginSample_ClientDataModule: TDAClientDataModule}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'LoginSample Client'; + Application.CreateForm(TLoginSample_ClientDataModule, LoginSample_ClientDataModule); + Application.CreateForm(TLoginSample_ClientMainForm, LoginSample_ClientMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_Client.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_Client.dproj new file mode 100644 index 0000000..5aac6d1 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_Client.dproj @@ -0,0 +1,75 @@ + + + {fb47079d-d00b-4688-901d-b23e72791c7b} + LoginSample_Client.dpr + Debug + AnyCPU + DCC32 + LoginSample_Client.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + LoginSample_Client.dpr + + + + + + + MainSource + + +
LoginSample_ClientDataModule
+
+ +
LoginSample_ClientMainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_Client.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_Client.res new file mode 100644 index 0000000..da01de5 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_Client.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ClientData.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ClientData.dfm new file mode 100644 index 0000000..262f235 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ClientData.dfm @@ -0,0 +1,100 @@ +object LoginSample_ClientDataModule: TLoginSample_ClientDataModule + OldCreateOrder = True + Left = 81 + Top = 16 + Height = 300 + Width = 300 + object Channel: TROWinInetHTTPChannel + ServerLocators = <> + DispatchOptions = [] + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/BIN' + Left = 40 + Top = 8 + end + object Message: TROBinMessage + Left = 40 + Top = 52 + end + object RemoteService: TRORemoteService + ServiceName = 'LoginSampleService' + Message = Message + Channel = Channel + Left = 40 + Top = 96 + end + object DataStreamer: TDABinDataStreamer + Left = 40 + Top = 140 + end + object RemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RemoteService + GetSchemaCall.MethodName = 'GetSchema' + GetSchemaCall.Params = < + item + Name = 'aFilter' + DataType = rtString + Flag = fIn + Value = Null + end + item + Name = 'Result' + DataType = rtString + Flag = fResult + Value = Null + end> + GetSchemaCall.Default = False + GetSchemaCall.IncomingSchemaParameter = 'Result' + GetSchemaCall.OutgoingFilterParameter = 'aFilter' + GetDataCall.RemoteService = RemoteService + GetDataCall.MethodName = 'GetData' + GetDataCall.Params = < + item + Name = 'aTableNameArray' + DataType = rtUserDefined + Flag = fIn + TypeName = 'StringArray' + Value = Null + end + item + Name = 'aTableRequestInfoArray' + DataType = rtUserDefined + Flag = fIn + TypeName = 'TableRequestInfoArray' + Value = Null + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end> + GetDataCall.Default = False + GetDataCall.OutgoingTableNamesParameter = 'aTableNameArray' + GetDataCall.OutgoingTableRequestInfosParameter = 'aTableRequestInfoArray' + GetDataCall.IncomingDataParameter = 'Result' + UpdateDataCall.RemoteService = RemoteService + UpdateDataCall.MethodName = 'UpdateData' + UpdateDataCall.Params = < + item + Name = 'aDelta' + DataType = rtBinary + Flag = fIn + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + end> + UpdateDataCall.Default = False + UpdateDataCall.OutgoingDeltaParameter = 'aDelta' + UpdateDataCall.IncomingDeltaParameter = 'Result' + GetScriptsCall.RemoteService = RemoteService + GetScriptsCall.Params = <> + GetScriptsCall.Default = False + RemoteService = RemoteService + DataStreamer = DataStreamer + Left = 40 + Top = 183 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ClientData.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ClientData.pas new file mode 100644 index 0000000..8bae154 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ClientData.pas @@ -0,0 +1,31 @@ +unit LoginSample_ClientData; + +interface + +uses + {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROWinInetHTTPChannel, + {Data Abstract:} uDADataTable, uDABINAdapter, uDAInterfaces, + uDADataStreamer, uDARemoteDataAdapter; + +type + TLoginSample_ClientDataModule = class(TDataModule) + Message: TROBinMessage; + Channel: TROWinInetHTTPChannel; + RemoteService: TRORemoteService; + DataStreamer: TDABinDataStreamer; + RemoteDataAdapter: TDARemoteDataAdapter; + private + { Private declarations } + public + { Public declarations } + end; + +var + LoginSample_ClientDataModule: TLoginSample_ClientDataModule; + +implementation + +{$R *.dfm} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ClientMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ClientMain.dfm new file mode 100644 index 0000000..e08e765 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ClientMain.dfm @@ -0,0 +1,324 @@ +object LoginSample_ClientMainForm: TLoginSample_ClientMainForm + Left = 357 + Top = 264 + AutoScroll = False + Caption = 'LoginSample Client' + ClientHeight = 174 + ClientWidth = 482 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnDestroy = FormDestroy + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 7 + Top = 17 + Width = 56 + Height = 13 + Caption = '&User Name:' + FocusControl = edUsername + end + object Label2: TLabel + Left = 7 + Top = 60 + Width = 49 + Height = 13 + Caption = '&Password:' + FocusControl = edPassword + end + object edPassword: TEdit + Left = 7 + Top = 78 + Width = 155 + Height = 21 + TabOrder = 1 + Text = 'davolio' + end + object edUsername: TEdit + Left = 7 + Top = 35 + Width = 155 + Height = 21 + TabOrder = 0 + Text = 'nancy' + end + object LoginButton: TButton + Left = 7 + Top = 102 + Width = 75 + Height = 22 + Caption = 'Login' + TabOrder = 2 + OnClick = LoginButtonClick + end + object LogoutButton: TButton + Left = 87 + Top = 102 + Width = 75 + Height = 22 + Caption = 'Logout' + Enabled = False + TabOrder = 3 + OnClick = LogoutButtonClick + end + object Grid: TDBGrid + Left = 171 + Top = 34 + Width = 303 + Height = 132 + Anchors = [akLeft, akTop, akRight, akBottom] + DataSource = DataSource + TabOrder = 5 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object FillButton: TButton + Left = 172 + Top = 6 + Width = 75 + Height = 22 + Caption = 'Fill' + Enabled = False + TabOrder = 4 + OnClick = FillButtonClick + end + object DataTable: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'EmployeeID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'LastName' + DataType = datWideString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FirstName' + DataType = datWideString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Title' + DataType = datWideString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TitleOfCourtesy' + DataType = datWideString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'BirthDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'HireDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Address' + DataType = datWideString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Region' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PostalCode' + DataType = datWideString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Country' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'HomePhone' + DataType = datWideString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Extension' + DataType = datWideString + Size = 4 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Photo' + DataType = datBlob + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Notes' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ReportsTo' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PhotoPath' + DataType = datWideString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + StreamingOptions = [soIgnoreStreamSchema, soDisableEventsWhileStreaming] + RemoteDataAdapter = LoginSample_ClientDataModule.RemoteDataAdapter + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Employees' + IndexDefs = <> + Left = 336 + Top = 13 + end + object DataSource: TDADataSource + DataTable = DataTable + Left = 345 + Top = 21 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ClientMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ClientMain.pas new file mode 100644 index 0000000..35151d4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ClientMain.pas @@ -0,0 +1,98 @@ +unit LoginSample_ClientMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROClientIntf, uRORemoteService, uROBinMessage, + DataAbstract4_Intf, LoginSampleLibrary_Intf, DB, uDADataTable, + uDAScriptingProvider, uDACDSDataTable, Grids, DBGrids; + +type + TLoginSample_ClientMainForm = class(TForm) + Label1: TLabel; + Label2: TLabel; + edPassword: TEdit; + edUsername: TEdit; + LoginButton: TButton; + LogoutButton: TButton; + Grid: TDBGrid; + DataTable: TDACDSDataTable; + DataSource: TDADataSource; + FillButton: TButton; + procedure FormDestroy(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure LoginButtonClick(Sender: TObject); + procedure LogoutButtonClick(Sender: TObject); + procedure FillButtonClick(Sender: TObject); + private + fLoggedIn: Boolean; + fUserInfo: UserInfo; + fLogin: ILoginService; + protected + procedure Login; + procedure Logout; + public + { Public declarations } + end; + +var + LoginSample_ClientMainForm: TLoginSample_ClientMainForm; + +implementation + +uses + LoginSample_ClientData; + +{$R *.dfm} + +procedure TLoginSample_ClientMainForm.FormShow(Sender: TObject); +begin + with LoginSample_ClientDataModule do + fLogin := CoLoginService.Create(Message, Channel); +end; + +procedure TLoginSample_ClientMainForm.FormDestroy(Sender: TObject); +begin + Logout; +end; + +procedure TLoginSample_ClientMainForm.Login; +begin + FreeAndNil(fUserInfo); + fLoggedIn := fLogin.Login(edUsername.Text, edPassword.Text, fUserInfo); + if not fLoggedIn then ShowMessage('Login failed!'); +end; + +procedure TLoginSample_ClientMainForm.Logout; +begin + if fLoggedIn then begin + fLogin.Logout(); + fLoggedIn := false; + end; +end; + +procedure TLoginSample_ClientMainForm.LoginButtonClick(Sender: TObject); +begin + Login; + LoginButton.Enabled := not fLoggedIn; + LogoutButton.Enabled := fLoggedIn; + FillButton.Enabled := fLoggedIn; +end; + +procedure TLoginSample_ClientMainForm.LogoutButtonClick(Sender: TObject); +begin + Logout; + if not fLoggedIn then DataTable.Active := False; + LoginButton.Enabled := not fLoggedIn; + LogoutButton.Enabled := fLoggedIn; + FillButton.Enabled := fLoggedIn; +end; + +procedure TLoginSample_ClientMainForm.FillButtonClick(Sender: TObject); +begin + DataTable.Active := True; +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ServerData.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ServerData.dfm new file mode 100644 index 0000000..1b59373 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ServerData.dfm @@ -0,0 +1,64 @@ +object LoginSample_ServerDataModule: TLoginSample_ServerDataModule + OldCreateOrder = False + OnCreate = DataModuleCreate + Left = 39 + Top = 15 + Height = 207 + Width = 352 + object Server: TROIndyHTTPServer + Dispatchers = < + item + Name = 'Message' + Message = Message + Enabled = True + PathInfo = 'Bin' + end> + Port = 8099 + Left = 32 + Top = 8 + end + object Message: TROBinMessage + Left = 34 + Top = 56 + end + object ConnectionManager: TDAConnectionManager + MaxPoolSize = 10 + PoolTimeoutSeconds = 60 + PoolBehaviour = pbWait + WaitIntervalSeconds = 1 + Connections = < + item + Name = 'Northwind' + ConnectionString = + 'ADO?AuxDriver=SQLOLEDB.1;Server=localhost;Database=Northwind;Use' + + 'rID=sa;Password=;' + Default = True + Tag = 0 + end> + DriverManager = DriverManager + PoolingEnabled = True + Left = 136 + Top = 56 + end + object DriverManager: TDADriverManager + DriverDirectory = '%SYSTEM%\' + AutoLoad = False + TraceActive = False + TraceFlags = [] + Left = 136 + Top = 10 + end + object ADODriver: TDAADODriver + Left = 256 + Top = 8 + end + object DataDictionary: TDADataDictionary + Fields = <> + Left = 32 + Top = 104 + end + object SessionManager: TROInMemorySessionManager + Left = 136 + Top = 104 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ServerData.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ServerData.pas new file mode 100644 index 0000000..ede8501 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ServerData.pas @@ -0,0 +1,41 @@ +unit LoginSample_ServerData; + +interface + +uses + SysUtils, Classes, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, + uROBinMessage, uROIndyHTTPServer, + uDAEngine, uDADriverManager, uDAClasses, uROSessions, + uDAADODriver, uROIndyTCPServer; + +type + TLoginSample_ServerDataModule = class(TDataModule) + Server: TROIndyHTTPServer; + Message: TROBinMessage; + ConnectionManager: TDAConnectionManager; + DriverManager: TDADriverManager; + ADODriver: TDAADODriver; + SessionManager: TROInMemorySessionManager; + DataDictionary: TDADataDictionary; + + procedure DataModuleCreate(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + LoginSample_ServerDataModule: TLoginSample_ServerDataModule; + +implementation + +{$R *.dfm} + +procedure TLoginSample_ServerDataModule.DataModuleCreate(Sender: TObject); +begin + Server.Active := true; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ServerMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ServerMain.dfm new file mode 100644 index 0000000..7adb148 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ServerMain.dfm @@ -0,0 +1,25 @@ +object LoginSample_ServerMainForm: TLoginSample_ServerMainForm + Left = 95 + Top = 46 + BorderStyle = bsDialog + Caption = 'LoginSample Server' + ClientHeight = 64 + ClientWidth = 228 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton + Left = 8 + Top = 8 + Width = 212 + Height = 48 + Cursor = crHandPoint + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ServerMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ServerMain.pas new file mode 100644 index 0000000..301ddbd --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_ServerMain.pas @@ -0,0 +1,25 @@ +unit LoginSample_ServerMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uDAPoweredByDataAbstractButton, uROPoweredByRemObjectsButton; + +type + TLoginSample_ServerMainForm = class(TForm) + DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton; + private + { Private declarations } + public + { Public declarations } + end; + +var + LoginSample_ServerMainForm: TLoginSample_ServerMainForm; + +implementation + +{$R *.dfm} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_server.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_server.bdsproj new file mode 100644 index 0000000..41de46c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_server.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + LoginSample_server.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_server.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_server.dpr new file mode 100644 index 0000000..4c39cb0 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_server.dpr @@ -0,0 +1,25 @@ +program LoginSample_server; + +{#ROGEN:LoginSampleLibrary.RODL}// RemObjects SDK: Careful, do not remove! + +uses + uROComInit, + Forms, + LoginSample_ServerMain in 'LoginSample_ServerMain.pas' {LoginSample_ServerMainForm}, + LoginSampleService_Impl in 'LoginSampleService_Impl.pas' {LoginSampleService: TDARemoteService}, + LoginSample_ServerData in 'LoginSample_ServerData.pas' {LoginSample_ServerDataModule: TDataModule}, + LoginService_Impl in 'LoginService_Impl.pas' {LoginService: TSimpleLoginService}, + LoginSampleLibrary_Intf in 'LoginSampleLibrary_Intf.pas', + LoginSampleLibrary_Invk in 'LoginSampleLibrary_Invk.pas'; + +{$R *.res} +{$R RODLFile.res} + +begin + Application.Initialize; + Application.Title := 'LoginSample Server'; + Application.CreateForm(TLoginSample_ServerDataModule, LoginSample_ServerDataModule); + Application.CreateForm(TLoginSample_ServerMainForm, LoginSample_ServerMainForm); + Application.Run; +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_server.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_server.dproj new file mode 100644 index 0000000..5ab3f7c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_server.dproj @@ -0,0 +1,83 @@ + + + {ae701f0a-2268-47e6-b890-c7deb4753af7} + LoginSample_server.dpr + Debug + AnyCPU + DCC32 + LoginSample_server.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + LoginSample_server.dpr + + + + + + + MainSource + + + + +
LoginSampleService
+
+ +
LoginSample_ServerDataModule
+
+ +
LoginSample_ServerMainForm
+
+ +
LoginService
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_server.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_server.res new file mode 100644 index 0000000..7455d6e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginSample_server.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginService_Impl.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginService_Impl.dfm new file mode 100644 index 0000000..8d58d0a --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginService_Impl.dfm @@ -0,0 +1,66 @@ +object LoginService: TLoginService + OldCreateOrder = True + SessionManager = LoginSample_ServerDataModule.SessionManager + OnLogout = SimpleLoginServiceLogout + OnLogin = SimpleLoginServiceLogin + Left = 321 + Top = 216 + Height = 96 + Width = 188 + object Schema: TDASchema + ConnectionManager = LoginSample_ServerDataModule.ConnectionManager + DataDictionary = LoginSample_ServerDataModule.DataDictionary + Datasets = < + item + Params = < + item + Name = 'UserId' + DataType = datWideString + Size = 10 + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'Pass' + DataType = datWideString + Size = 20 + BlobType = dabtUnknown + ParamType = daptInput + end> + Statements = < + item + Connection = 'Northwind' + TargetTable = 'ValidateLogin' + SQL = + 'SELECT Count(*) as Cnt FROM Employees WHERE (FirstName = :UserId' + + ') AND (LastName = :Pass)' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'Cnt' + TableField = 'Cnt' + end> + end> + Name = 'ValidateLogin' + Fields = < + item + Name = 'Cnt' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = <> + RelationShips = <> + UpdateRules = <> + Left = 17 + Top = 12 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginService_Impl.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginService_Impl.pas new file mode 100644 index 0000000..2fcdb78 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/LoginService_Impl.pas @@ -0,0 +1,77 @@ +unit LoginService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Ancestor Implementation:} SimpleLoginService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} LoginSampleLibrary_Intf, uDAClasses; + +type + { TLoginService } + TLoginService = class(TSimpleLoginService, ILoginService) + Schema: TDASchema; + procedure SimpleLoginServiceLogout(Sender: TObject); + procedure SimpleLoginServiceLogin(Sender: TObject; aUserID, + aPassword: string; out aUserInfo: UserInfo; + var aLoginSuccessful: Boolean); + private + protected + { ILoginService methods } + end; + +implementation + +{$R *.dfm} +uses + {Generated:} LoginSampleLibrary_Invk, LoginSample_ServerData, uRORemoteDataModule, uDAInterfaces; + +procedure Create_LoginService(out anInstance: IUnknown); +begin + anInstance := TLoginService.Create(nil); +end; + +{ LoginService } + +procedure TLoginService.SimpleLoginServiceLogin(Sender: TObject; aUserID, + aPassword: string; out aUserInfo: UserInfo; + var aLoginSuccessful: Boolean); +var + cmd: IDADataset; +begin + cmd := Schema.NewDataset(Schema.ConnectionManager.NewConnection(Schema.ConnectionManager.GetDefaultConnectionName), 'ValidateLogin', ['UserId', 'Pass'], [aUserID, aPassword]); + cmd.Open; + + aLoginSuccessful := (cmd.Fields[0].AsInteger <> 0); + if (ALoginSuccessful) then begin + aUserInfo := UserInfo.Create; + aUserInfo.SessionID := GuidToString(ClientID); + aUserInfo.UserID := aUserID; + Session['UserID'] := aUserID; + end + else begin + DestroySession; + end; +end; + +procedure TLoginService.SimpleLoginServiceLogout(Sender: TObject); +begin + DestroySession; +end; + +initialization + TROClassFactory.Create('LoginService', Create_LoginService, TLoginService_Invoker); + +finalization + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/RODLFILE.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/RODLFILE.res new file mode 100644 index 0000000..1643ed4 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Login Sample/RODLFILE.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/LoginService_Impl.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/LoginService_Impl.dfm new file mode 100644 index 0000000..752ea72 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/LoginService_Impl.dfm @@ -0,0 +1,185 @@ +object LoginService: TLoginService + OldCreateOrder = True + SessionManager = MegaDemoServer_DataModule.SessionManager + ServiceSchema = Schema + ServiceDataStreamer = BinDataStreamer + ExportedDataTables = <> + BeforeAcquireConnection = DataAbstractServiceBeforeAcquireConnection + Left = 170 + Top = 200 + Height = 124 + Width = 208 + object Schema: TDASchema + ConnectionManager = MegaDemoServer_DataModule.ConnectionManager + DataDictionary = MegaDemoServer_DataModule.DataDictionary + Datasets = < + item + Params = < + item + Name = 'UserName' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'Password' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end> + Statements = < + item + Connection = 'Employees' + TargetTable = 'EMPLOYEE' + SQL = + 'SELECT'#10' E.EMP_NO, E.FIRST_NAME, E.LAST_NAME, J.JOB_TITLE'#10#10'FROM'#10 + + ' EMPLOYEE E'#10' '#10'JOIN JOB J ON'#10' (J.JOB_CODE=E.JOB_CODE) AND'#10' (J' + + '.JOB_GRADE=E.JOB_GRADE) AND'#10' (J.JOB_COUNTRY='#39'USA'#39')'#10' ' + + ' '#10'WHERE'#10' E.FIRST_NAME=:UserName AND'#10' E.LAST_NAME=:Password' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'EmployeeID' + TableField = 'EMP_NO' + end + item + DatasetField = 'FirstName' + TableField = 'FIRST_NAME' + end + item + DatasetField = 'LastName' + TableField = 'LAST_NAME' + end + item + DatasetField = 'JobTitle' + TableField = 'JOB_TITLE' + end> + end + item + Connection = 'Northwind' + TargetTable = 'Employees' + SQL = + 'SELECT Emps.EmployeeID, Emps.FirstName, Emps.LastName, Emps.Titl' + + 'e'#10'FROM Employees Emps'#10'WHERE Emps.FirstName=:UserName AND Emps.La' + + 'stName=:Password' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'EmployeeID' + TableField = 'EmployeeID' + end + item + DatasetField = 'FirstName' + TableField = 'FirstName' + end + item + DatasetField = 'LastName' + TableField = 'LastName' + end + item + DatasetField = 'JobTitle' + TableField = 'Title' + end> + end> + Name = 'FindEmployee' + Description = + 'Query that validates a username and password against the first n' + + 'ame and last name of the employees in the target databases' + Fields = < + item + Name = 'EmployeeID' + DataType = datAutoInc + Description = 'A numeric number used to reference the employee in other tables' + BlobType = dabtUnknown + GeneratorName = 'EMP_NO_GEN' + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + DisplayLabel = 'Employee ID' + Alignment = taLeftJustify + ServerAutoRefresh = True + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FirstName' + DataType = datString + Size = 10 + Description = 'The employee'#39's first name' + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + DisplayLabel = 'First Name' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'LastName' + DataType = datString + Size = 20 + Description = 'The employee'#39's last name' + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + DisplayLabel = 'Last Name' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'JobTitle' + DataType = datString + Size = 25 + Description = 'The employee'#39's job title' + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + DisplayLabel = 'Job Title' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = <> + RelationShips = <> + UpdateRules = <> + Version = 0 + Left = 28 + Top = 11 + end + object BinDataStreamer: TDABinDataStreamer + BufferSize = 262144 + Left = 77 + Top = 12 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/LoginService_Impl.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/LoginService_Impl.pas new file mode 100644 index 0000000..9bc62c8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/LoginService_Impl.pas @@ -0,0 +1,111 @@ +unit LoginService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} MegaDemoLibrary_Intf, uDADataStreamer, uDABinAdapter, + uDAClasses, uDAInterfaces; + +type + { TLoginService } + TLoginService = class(TDataAbstractService, ILoginService) + BinDataStreamer: TDABinDataStreamer; + Schema: TDASchema; + procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject; + var aConnectionName: string); + private + protected + { ILoginService methods } + function Login(const UserName: string; const Password: string; out aLoginInfo: LoginInfo): Boolean; + procedure Logout; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} MegaDemoLibrary_Invk, MegaDemoServer_Data, MegaDemoServer_Main; + +procedure Create_LoginService(out anInstance: IUnknown); +begin + anInstance := TLoginService.Create(nil); +end; + +{ LoginService } + +function TLoginService.Login(const UserName: string; const Password: string; out aLoginInfo: LoginInfo): Boolean; +var + jobTitle, Upper_jobTitle: string; + loginReader: IDADataset; +begin + aLoginInfo := nil; + loginReader := Schema.NewDataset(Connection, 'FindEmployee', ['UserName', 'Password'], [UserName, Password]); + jobTitle := ''; + try + if (loginReader.IsEmpty) then begin + DestroySession; + Result := false; + end + else begin + aLoginInfo := LoginInfo.Create; + + // Prepares the LoginInfo struct that will be sent back to the client + aLoginInfo.EmployeeID := loginReader.Fields[0].AsInteger; + aLoginInfo.FirstName := loginReader.Fields[1].AsString; + aLoginInfo.LastName := loginReader.Fields[2].AsString; + + // Determines the job type by parsing the JobTitle returned + jobTitle := loginReader.Fields[3].AsString; + Upper_jobTitle := UpperCase(jobTitle); + if Pos('PRESIDENT', Upper_jobTitle) >= 1 then aLoginInfo.Job_Type := JobType_Manager + else if Pos('MANAGER', Upper_jobTitle) >= 1 then aLoginInfo.Job_Type := JobType_Manager + else if Pos('SALES', Upper_jobTitle) >= 1 then aLoginInfo.Job_Type := JobType_SalesRep + else if Pos('CHIEF', Upper_jobTitle) >= 1 then aLoginInfo.Job_Type := JobType_Manager + else aLoginInfo.Job_Type := JobType_Engineer; + + aLoginInfo.JobTitle := jobTitle; + aLoginInfo.SessionID := GUIDToString(Session.SessionID); + + // Saves information in the current session for the other services to use + Session['EmployeeID'] := aLoginInfo.EmployeeID; + Session['JobType'] := aLoginInfo.Job_Type; + + Result := true; + end + finally + if loginReader.Active then loginReader.Close; + if Connection.InTransaction then Connection.CommitTransaction; + end; +end; + +procedure TLoginService.Logout; +begin + DestroySession; +end; + +procedure TLoginService.DataAbstractServiceBeforeAcquireConnection( + aSender: TObject; var aConnectionName: string); +begin + // Reads the connection name from the main form. + aConnectionName := MegaDemoServer_MainForm.GetSelectedConnectionName; +end; + +initialization + TROClassFactory.Create('LoginService', Create_LoginService, TLoginService_Invoker); + +finalization + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient.bdsproj new file mode 100644 index 0000000..6717d6f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + MegaDemoClient.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient.dpr new file mode 100644 index 0000000..24b238b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient.dpr @@ -0,0 +1,17 @@ +program MegaDemoClient; + +uses + uROComInit, + Forms, + MidasLib, + MegaDemoClient_Main in 'MegaDemoClient_Main.pas' {MegaDemoClient_MainForm}, + MegaDemoClient_Data in 'MegaDemoClient_Data.pas' {MegaDemoClient_DataModule: TDAClientDataModule}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TMegaDemoClient_DataModule, MegaDemoClient_DataModule); + Application.CreateForm(TMegaDemoClient_MainForm, MegaDemoClient_MainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient.dproj new file mode 100644 index 0000000..9ca14d2 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient.dproj @@ -0,0 +1,75 @@ + + + {691439f0-e360-44b6-972b-b2ffccfc5582} + MegaDemoClient.dpr + Debug + AnyCPU + DCC32 + MegaDemoClient.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + MegaDemoClient.dpr + + + + + + + MainSource + + +
MegaDemoClient_DataModule
+
+ +
MegaDemoClient_MainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient.res new file mode 100644 index 0000000..da01de5 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient_Data.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient_Data.dfm new file mode 100644 index 0000000..20f84ec --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient_Data.dfm @@ -0,0 +1,236 @@ +object MegaDemoClient_DataModule: TMegaDemoClient_DataModule + OldCreateOrder = True + OnCreate = DataModuleCreate + OnDestroy = DataModuleDestroy + Left = 439 + Top = 220 + Height = 300 + Width = 300 + object Channel: TROWinInetHTTPChannel + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/BIN' + ServerLocators = <> + DispatchOptions = [] + Left = 40 + Top = 8 + end + object Message: TROBinMessage + Left = 40 + Top = 52 + end + object RemoteService: TRORemoteService + Message = Message + Channel = Channel + ServiceName = 'OrdersService' + Left = 40 + Top = 96 + end + object DataStreamer: TDABinDataStreamer + Left = 40 + Top = 140 + end + object rdaCustomers: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RemoteService + GetDataCall.RemoteService = RemoteService + UpdateDataCall.RemoteService = RemoteService + GetScriptsCall.RemoteService = RemoteService + RemoteService = RemoteService + DataStreamer = DataStreamer + Left = 195 + Top = 119 + end + object tbl_Customers: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + Description = 'The customer'#39's code' + BlobType = dabtUnknown + GeneratorName = 'CUST_NO_GEN' + DisplayWidth = 0 + DisplayLabel = 'Customer ID' + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CustomerName' + DataType = datString + Size = 40 + Description = 'The customer'#39's name' + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Name' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datString + Size = 25 + Description = 'The customer'#39's city' + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rdaCustomers + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Customers' + IndexDefs = <> + Left = 167 + Top = 119 + end + object ds_Customers: TDADataSource + DataSet = tbl_Customers.Dataset + DataTable = tbl_Customers + Left = 140 + Top = 119 + end + object tbl_OrdersByCustomer: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + Description = 'The identifier of the customer that placed this order' + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Customer ID' + ReadOnly = True + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OrderDate' + DataType = datDateTime + Description = 'The order'#39's date' + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Order Date' + ReadOnly = True + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RequiredDate' + DataType = datDateTime + Description = 'The date by which the order has to be received' + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Required Date' + ReadOnly = True + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShippedDate' + DataType = datDateTime + Description = 'The date this order has been shipped' + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Shipped Date' + ReadOnly = True + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OrderAmount' + DataType = datCurrency + Description = 'The order'#39's amount' + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Order Amount' + ReadOnly = True + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + ParamType = daptInput + end> + MasterMappingMode = mmDataRequest + MasterParamsMappings.Strings = ( + 'CustomerID=CustomerID') + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rdaOrders + ReadOnly = False + MasterSource = ds_Customers + MasterFields = 'CustomerID' + DetailFields = 'CustomerID' + MasterRequestMappings.Strings = ( + 'CustomerID=CustomerID') + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'OrdersByCustomer' + IndexDefs = <> + Left = 167 + Top = 167 + end + object ds_OrdersByCustomer: TDADataSource + DataSet = tbl_OrdersByCustomer.Dataset + DataTable = tbl_OrdersByCustomer + Left = 139 + Top = 166 + end + object rdaOrders: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RemoteService + GetDataCall.RemoteService = RemoteService + GetDataCall.MethodName = 'GetCustomerOrders' + GetDataCall.Params = < + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end + item + Name = 'CustomerID' + DataType = rtString + Flag = fIn + Value = Null + end> + GetDataCall.Default = False + GetDataCall.IncomingDataParameter = 'Result' + UpdateDataCall.RemoteService = RemoteService + GetScriptsCall.RemoteService = RemoteService + RemoteService = RemoteService + DataStreamer = DataStreamer + Left = 194 + Top = 167 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient_Data.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient_Data.pas new file mode 100644 index 0000000..359a7ed --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient_Data.pas @@ -0,0 +1,62 @@ +unit MegaDemoClient_Data; + +interface + +uses + {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROWinInetHTTPChannel, + {Data Abstract:} uDADataTable, uDABINAdapter, uDAInterfaces, + uDADataStreamer, uDARemoteDataAdapter, MegaDemoLibrary_Intf, + uDAScriptingProvider, uDACDSDataTable; + +type + TMegaDemoClient_DataModule = class(TDataModule) + Message: TROBinMessage; + Channel: TROWinInetHTTPChannel; + RemoteService: TRORemoteService; + DataStreamer: TDABinDataStreamer; + rdaCustomers: TDARemoteDataAdapter; + tbl_Customers: TDACDSDataTable; + ds_Customers: TDADataSource; + tbl_OrdersByCustomer: TDACDSDataTable; + ds_OrdersByCustomer: TDADataSource; + rdaOrders: TDARemoteDataAdapter; + procedure DataModuleCreate(Sender: TObject); + procedure DataModuleDestroy(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + fLoginInfo: LoginInfo; + fLoginService: ILoginService; + fOrdersService: IOrdersService; + function LoggedIn: Boolean; + end; + +var + MegaDemoClient_DataModule: TMegaDemoClient_DataModule; + +implementation + +{$R *.dfm} + +{ TMegaDemoClient_DataModule } + +function TMegaDemoClient_DataModule.LoggedIn: Boolean; +begin + Result := fLoginInfo <> nil; +end; + +procedure TMegaDemoClient_DataModule.DataModuleCreate(Sender: TObject); +begin + fLoginService := CoLoginService.Create(Message, Channel); + fOrdersService := CoOrdersService.Create(message, Channel); +end; + +procedure TMegaDemoClient_DataModule.DataModuleDestroy(Sender: TObject); +begin + if fLoginInfo <> nil then fLoginInfo.Free; +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient_Main.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient_Main.dfm new file mode 100644 index 0000000..9a379d8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient_Main.dfm @@ -0,0 +1,305 @@ +object MegaDemoClient_MainForm: TMegaDemoClient_MainForm + Left = 224 + Top = 141 + AutoScroll = False + BorderIcons = [biSystemMenu] + Caption = 'Data Abstract Client' + ClientHeight = 322 + ClientWidth = 617 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object PageControl1: TPageControl + Left = 6 + Top = 5 + Width = 605 + Height = 296 + ActivePage = tpLogin + Anchors = [akLeft, akTop, akRight, akBottom] + TabIndex = 0 + TabOrder = 0 + OnChange = PageControl1Change + OnChanging = PageControl1Changing + object tpLogin: TTabSheet + Caption = 'Login' + object DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton + Left = 17 + Top = 16 + Width = 212 + Height = 48 + Cursor = crHandPoint + ApplicationType = atClient + end + object GroupBox1: TGroupBox + Left = 38 + Top = 93 + Width = 246 + Height = 105 + Caption = 'Login Information' + TabOrder = 0 + DesignSize = ( + 246 + 105) + object Label2: TLabel + Left = 7 + Top = 24 + Width = 56 + Height = 13 + Caption = 'User Name:' + end + object Label3: TLabel + Left = 14 + Top = 47 + Width = 49 + Height = 13 + Caption = 'Password:' + end + object tbUserName: TEdit + Left = 72 + Top = 20 + Width = 164 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 0 + end + object tbPassword: TEdit + Left = 72 + Top = 43 + Width = 164 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 1 + end + object bLogin: TButton + Left = 80 + Top = 74 + Width = 75 + Height = 22 + Anchors = [akTop, akRight] + Caption = 'Login' + TabOrder = 2 + OnClick = bLoginClick + end + object bLogout: TButton + Left = 161 + Top = 74 + Width = 75 + Height = 22 + Anchors = [akTop, akRight] + Caption = 'Logout' + TabOrder = 3 + OnClick = bLogoutClick + end + end + object GroupBox2: TGroupBox + Left = 335 + Top = 61 + Width = 239 + Height = 168 + Caption = 'Pre-configured Logins' + TabOrder = 1 + DesignSize = ( + 239 + 168) + object Label4: TLabel + Left = 2 + Top = 16 + Width = 234 + Height = 13 + Alignment = taCenter + Anchors = [akLeft, akTop, akRight] + AutoSize = False + Caption = 'SQL Server'#39's Northwind' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Label5: TLabel + Left = 1 + Top = 93 + Width = 235 + Height = 13 + Alignment = taCenter + Anchors = [akLeft, akTop, akRight] + AutoSize = False + Caption = 'Firebird Employee' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object rbPreDefLogin1: TRadioButton + Left = 4 + Top = 33 + Width = 230 + Height = 17 + Caption = 'Nancy/Davolio (Sales Representative)' + TabOrder = 0 + OnClick = rbPreDefLoginClick + end + object rbPreDefLogin2: TRadioButton + Left = 4 + Top = 50 + Width = 230 + Height = 17 + Caption = 'Andrew/Fuller (Vice President, Sales)' + TabOrder = 1 + OnClick = rbPreDefLoginClick + end + object rbPreDefLogin3: TRadioButton + Left = 4 + Top = 67 + Width = 230 + Height = 17 + Caption = 'Laura/Callahan (Inside Sales Coordinator)' + TabOrder = 2 + OnClick = rbPreDefLoginClick + end + object rbPreDefLogin4: TRadioButton + Left = 4 + Top = 110 + Width = 230 + Height = 17 + Caption = 'Claudia/Sutherland (Sales Representative)' + TabOrder = 3 + OnClick = rbPreDefLoginClick + end + object rbPreDefLogin5: TRadioButton + Left = 4 + Top = 127 + Width = 230 + Height = 17 + Caption = 'Luke/Leung (Sales Representative)' + TabOrder = 4 + OnClick = rbPreDefLoginClick + end + object rbPreDefLogin6: TRadioButton + Left = 4 + Top = 144 + Width = 230 + Height = 17 + Caption = 'Takashi/Yamamoto (Sales Representative)' + TabOrder = 5 + OnClick = rbPreDefLoginClick + end + end + end + object tpCustomerManagement: TTabSheet + Caption = 'Customer Management' + ImageIndex = 1 + object Splitter1: TSplitter + Left = 0 + Top = 174 + Width = 597 + Height = 8 + Cursor = crVSplit + Align = alBottom + Beveled = True + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 597 + Height = 22 + Align = alTop + BevelOuter = bvNone + TabOrder = 0 + object DBNavigator1: TDBNavigator + Left = 0 + Top = 0 + Width = 240 + Height = 22 + DataSource = MegaDemoClient_DataModule.ds_Customers + Align = alLeft + TabOrder = 0 + end + object tsbApplyUpdatesCustomers: TButton + Left = 240 + Top = 0 + Width = 100 + Height = 22 + Action = aApplyUpdate + TabOrder = 1 + end + end + object gCustomers: TDBGrid + Left = 0 + Top = 22 + Width = 597 + Height = 152 + Align = alClient + DataSource = MegaDemoClient_DataModule.ds_Customers + TabOrder = 1 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object gOrdersByCustomer: TDBGrid + Left = 0 + Top = 182 + Width = 597 + Height = 86 + Align = alBottom + DataSource = MegaDemoClient_DataModule.ds_OrdersByCustomer + TabOrder = 2 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + end + object tpBank: TTabSheet + Caption = 'Bank' + ImageIndex = 3 + object Label1: TLabel + Left = 4 + Top = 5 + Width = 592 + Height = 149 + Anchors = [akLeft, akTop, akRight, akBottom] + AutoSize = False + Caption = 'This tab doesn'#39't really do anything beside being accessible ' + Font.Charset = DEFAULT_CHARSET + Font.Color = clGreen + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [fsBold, fsItalic] + ParentFont = False + WordWrap = True + end + end + end + object sslPageHint: TStatusBar + Left = 0 + Top = 303 + Width = 617 + Height = 19 + Panels = <> + SimplePanel = True + end + object ActionList1: TActionList + Left = 544 + Top = 58 + object aApplyUpdate: TAction + Caption = 'Apply Update' + OnExecute = aApplyUpdateExecute + OnUpdate = aApplyUpdateUpdate + end + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient_Main.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient_Main.pas new file mode 100644 index 0000000..6e1b7a1 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoClient_Main.pas @@ -0,0 +1,168 @@ +unit MegaDemoClient_Main; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROClientIntf, uRORemoteService, uROBinMessage, ComCtrls, + uROPoweredByRemObjectsButton, uDAPoweredByDataAbstractButton, ExtCtrls, + Grids, DBGrids, DBCtrls, ActnList; + +type + TMegaDemoClient_MainForm = class(TForm) + PageControl1: TPageControl; + tpLogin: TTabSheet; + tpCustomerManagement: TTabSheet; + tpBank: TTabSheet; + Label1: TLabel; + DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton; + sslPageHint: TStatusBar; + GroupBox1: TGroupBox; + Label2: TLabel; + Label3: TLabel; + tbUserName: TEdit; + tbPassword: TEdit; + bLogin: TButton; + bLogout: TButton; + GroupBox2: TGroupBox; + Label4: TLabel; + rbPreDefLogin1: TRadioButton; + rbPreDefLogin2: TRadioButton; + rbPreDefLogin3: TRadioButton; + Label5: TLabel; + rbPreDefLogin4: TRadioButton; + rbPreDefLogin5: TRadioButton; + rbPreDefLogin6: TRadioButton; + Panel1: TPanel; + DBNavigator1: TDBNavigator; + gCustomers: TDBGrid; + tsbApplyUpdatesCustomers: TButton; + ActionList1: TActionList; + aApplyUpdate: TAction; + gOrdersByCustomer: TDBGrid; + Splitter1: TSplitter; + procedure bLoginClick(Sender: TObject); + procedure bLogoutClick(Sender: TObject); + procedure rbPreDefLoginClick(Sender: TObject); + procedure PageControl1Changing(Sender: TObject; + var AllowChange: Boolean); + procedure FormShow(Sender: TObject); + procedure PageControl1Change(Sender: TObject); + procedure aApplyUpdateExecute(Sender: TObject); + procedure aApplyUpdateUpdate(Sender: TObject); + private + { Private declarations } + procedure PrivilegesSetup; + public + { Public declarations } + end; + +var + MegaDemoClient_MainForm: TMegaDemoClient_MainForm; + +implementation + +uses + MegaDemoClient_Data, MegaDemoLibrary_Intf, uDADataTable; + +{$R *.dfm} + +procedure TMegaDemoClient_MainForm.bLoginClick(Sender: TObject); +var + serverLoginInfo: LoginInfo; +begin + bLogout.Click; // Forces a logout click + if (MegaDemoClient_DataModule.fLoginService.Login(tbUserName.Text, tbPassword.Text, serverLoginInfo) = false) then begin + ShowMessage('Invalid login'); + end else begin + if MegaDemoClient_DataModule.fLoginInfo <> nil then MegaDemoClient_DataModule.fLoginInfo.Free; + MegaDemoClient_DataModule.fLoginInfo := serverLoginInfo; + ShowMessage('Welcome ' + MegaDemoClient_DataModule.fLoginInfo.JobTitle + ' ' + MegaDemoClient_DataModule.fLoginInfo.FirstName); + + MegaDemoClient_DataModule.tbl_Customers.Close; + MegaDemoClient_DataModule.tbl_Customers.Open; + + bLogin.Enabled := false; + bLogout.Enabled := true; + end; + PrivilegesSetup; +end; + +procedure TMegaDemoClient_MainForm.bLogoutClick(Sender: TObject); +begin + PrivilegesSetup; + if not MegaDemoClient_DataModule.LoggedIn then Exit; + if MegaDemoClient_DataModule.FLoginInfo <> nil then + FreeAndNil(MegaDemoClient_DataModule.FLoginInfo); + MegaDemoClient_DataModule.tbl_Customers.Close; + MegaDemoClient_DataModule.tbl_OrdersByCustomer.Close; + bLogin.Enabled := true; + bLogout.Enabled := false; +end; + +procedure TMegaDemoClient_MainForm.rbPreDefLoginClick(Sender: TObject); +var + senderRadioButton: TRadioButton; + ctrlLabel: string; + textIdx: integer; +begin + senderRadioButton := sender as TRadioButton; + if (senderRadioButton.Checked) then begin + ctrlLabel := senderRadioButton.Caption; + textIdx := pos('/', ctrlLabel); + tbUserName.Text := copy(ctrlLabel, 1, textIdx - 1); + tbPassword.Text := copy(ctrlLabel, textIdx + 1, Pos(' ', ctrlLabel) - textIdx - 1); + end; +end; + +procedure TMegaDemoClient_MainForm.PageControl1Changing(Sender: TObject; + var AllowChange: Boolean); +begin + if (not MegaDemoClient_DataModule.LoggedIn) and (PageControl1.TabIndex = 0) then begin + ShowMessage('You must login first'); + AllowChange := False; + end; +end; + +procedure TMegaDemoClient_MainForm.PrivilegesSetup; +begin + tpCustomerManagement.TabVisible := MegaDemoClient_DataModule.LoggedIn; + tpBank.TabVisible := MegaDemoClient_DataModule.LoggedIn and (MegaDemoClient_DataModule.fLoginInfo.Job_Type = JobType_Manager); + gOrdersByCustomer.Visible := MegaDemoClient_DataModule.LoggedIn and (MegaDemoClient_DataModule.fLoginInfo.Job_Type <> JobType_Engineer); + Splitter1.Visible := gOrdersByCustomer.Visible; + Splitter1.top := 0; +end; + +procedure TMegaDemoClient_MainForm.FormShow(Sender: TObject); +begin + PrivilegesSetup; + PageControl1.ActivePage := tpLogin; + PageControl1.OnChange(PageControl1); +end; + +procedure TMegaDemoClient_MainForm.PageControl1Change(Sender: TObject); +begin + case ((sender as TPageControl).ActivePageIndex) of + 0: sslPageHint.SimpleText := 'Login page. Click on the pre-configured logins to avoid typing a username and a password'; + 1: sslPageHint.SimpleText := 'Customer magamenet page. You can view all customers and create new ones, if your privileges allow you to'; + else + sslPageHint.SimpleText := ''; + end; +end; + +procedure TMegaDemoClient_MainForm.aApplyUpdateExecute(Sender: TObject); +begin + try + MegaDemoClient_DataModule.tbl_Customers.ApplyUpdates; + except + on e: Exception do ShowMessage(E.Message); + end; +end; + +procedure TMegaDemoClient_MainForm.aApplyUpdateUpdate(Sender: TObject); +begin + TAction(Sender).Enabled := MegaDemoClient_DataModule.tbl_Customers.HasDelta; +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoGroup.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoGroup.Sample.html new file mode 100644 index 0000000..5a4c9fd --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoGroup.Sample.html @@ -0,0 +1,51 @@ + + + + + + + + + +

+ Mega Demo Sample +

+ + +

Purpose

+

+ The sample shows: +

+ + +

Examine the code

+ + +

Getting started

+ + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoGroup.bdsgroup b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoGroup.bdsgroup new file mode 100644 index 0000000..a4c5907 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoGroup.bdsgroup @@ -0,0 +1,20 @@ + + + + + + + + + + + + + MegaDemoServer.bdsproj + MegaDemoClient.bdsproj + MegaDemoServer.exe MegaDemoClient.exe + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoGroup.bpg b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoGroup.bpg new file mode 100644 index 0000000..069815f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoGroup.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = MegaDemoServer.exe MegaDemoClient.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +MegaDemoServer.exe: MegaDemoServer.dpr + $(DCC) + +MegaDemoClient.exe: MegaDemoClient.dpr + $(DCC) + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoGroup.groupproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoGroup.groupproj new file mode 100644 index 0000000..e53f7be --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoGroup.groupproj @@ -0,0 +1,40 @@ + + + {6de371b5-c051-4282-a7a2-9b5eda33c8d4} + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoLibrary.RODL b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoLibrary.RODL new file mode 100644 index 0000000..3fd1a70 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoLibrary.RODL @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoLibrary_Intf.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoLibrary_Intf.pas new file mode 100644 index 0000000..c750723 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoLibrary_Intf.pas @@ -0,0 +1,355 @@ +unit MegaDemoLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf, + {Used RODLs:} DataAbstract4_Intf; + +const + { Library ID } + LibraryUID = '{7C1E1A6D-C50B-482D-AE41-090E9A61BBB0}'; + TargetNamespace = ''; + + { Service Interface ID's } + ILoginService_IID : TGUID = '{ABD98EFC-78DA-4704-A3EB-0D89CC8BC618}'; + IOrdersService_IID : TGUID = '{6EC8387D-B288-4EE0-BFB7-C4BAEF28E50B}'; + + { Event ID's } + +type + { Forward declarations } + ILoginService = interface; + IOrdersService = interface; + + + LoginInfo = class; + + + + { Enumerateds } + JobType = (JobType_SalesRep,JobType_Manager,JobType_Engineer); + + { LoginInfo } + LoginInfo = class(TROComplexType) + private + fSessionID: String; + fEmployeeID: Integer; + fFirstName: String; + fLastName: String; + fJob_Type: JobType; + fJobTitle: String; + public + procedure Assign(iSource: TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property SessionID:String read fSessionID write fSessionID; + property EmployeeID:Integer read fEmployeeID write fEmployeeID; + property FirstName:String read fFirstName write fFirstName; + property LastName:String read fLastName write fLastName; + property Job_Type:JobType read fJob_Type write fJob_Type; + property JobTitle:String read fJobTitle write fJobTitle; + end; + + { LoginInfoCollection } + LoginInfoCollection = class(TROCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(aIndex: integer): LoginInfo; + procedure SetItems(aIndex: integer; const Value: LoginInfo); + public + constructor Create; overload; + function Add: LoginInfo; reintroduce; + property Items[Index: integer]:LoginInfo read GetItems write SetItems; default; + end; + + { ILoginService } + ILoginService = interface(IDataAbstractService) + ['{ABD98EFC-78DA-4704-A3EB-0D89CC8BC618}'] + function Login(const UserName: String; const Password: String; out aLoginInfo: LoginInfo): Boolean; + procedure Logout; + end; + + { CoLoginService } + CoLoginService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ILoginService; + end; + + { TLoginService_Proxy } + TLoginService_Proxy = class(TDataAbstractService_Proxy, ILoginService) + protected + function __GetInterfaceName:string; override; + + function Login(const UserName: String; const Password: String; out aLoginInfo: LoginInfo): Boolean; + procedure Logout; + end; + + { IOrdersService } + IOrdersService = interface(IDataAbstractService) + ['{6EC8387D-B288-4EE0-BFB7-C4BAEF28E50B}'] + function GetCustomerOrders(const CustomerID: String): Binary; + end; + + { CoOrdersService } + CoOrdersService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IOrdersService; + end; + + { TOrdersService_Proxy } + TOrdersService_Proxy = class(TDataAbstractService_Proxy, IOrdersService) + protected + function __GetInterfaceName:string; override; + + function GetCustomerOrders(const CustomerID: String): Binary; + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uROSerializer, uRORes; + +{ LoginInfo } + +procedure LoginInfo.Assign(iSource: TPersistent); +var lSource: MegaDemoLibrary_Intf.LoginInfo; +begin + inherited Assign(iSource); + if (iSource is MegaDemoLibrary_Intf.LoginInfo) then begin + lSource := MegaDemoLibrary_Intf.LoginInfo(iSource); + SessionID := lSource.SessionID; + EmployeeID := lSource.EmployeeID; + FirstName := lSource.FirstName; + LastName := lSource.LastName; + Job_Type := lSource.Job_Type; + JobTitle := lSource.JobTitle; + end; +end; + +procedure LoginInfo.ReadComplex(ASerializer: TObject); +var + l_EmployeeID: Integer; + l_FirstName: String; + l_Job_Type: JobType; + l_JobTitle: String; + l_LastName: String; + l_SessionID: String; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + l_SessionID := SessionID; + TROSerializer(ASerializer).ReadUTF8String('SessionID', l_SessionID); + SessionID := l_SessionID; + l_EmployeeID := EmployeeID; + TROSerializer(ASerializer).ReadInteger('EmployeeID', otSLong, l_EmployeeID); + EmployeeID := l_EmployeeID; + l_FirstName := FirstName; + TROSerializer(ASerializer).ReadUTF8String('FirstName', l_FirstName); + FirstName := l_FirstName; + l_LastName := LastName; + TROSerializer(ASerializer).ReadUTF8String('LastName', l_LastName); + LastName := l_LastName; + l_Job_Type := Job_Type; + TROSerializer(ASerializer).ReadEnumerated('Job_Type',TypeInfo(JobType), l_Job_Type); + Job_Type := l_Job_Type; + l_JobTitle := JobTitle; + TROSerializer(ASerializer).ReadUTF8String('JobTitle', l_JobTitle); + JobTitle := l_JobTitle; + end else begin + l_EmployeeID := EmployeeID; + TROSerializer(ASerializer).ReadInteger('EmployeeID', otSLong, l_EmployeeID); + EmployeeID := l_EmployeeID; + l_FirstName := FirstName; + TROSerializer(ASerializer).ReadUTF8String('FirstName', l_FirstName); + FirstName := l_FirstName; + l_Job_Type := Job_Type; + TROSerializer(ASerializer).ReadEnumerated('Job_Type',TypeInfo(JobType), l_Job_Type); + Job_Type := l_Job_Type; + l_JobTitle := JobTitle; + TROSerializer(ASerializer).ReadUTF8String('JobTitle', l_JobTitle); + JobTitle := l_JobTitle; + l_LastName := LastName; + TROSerializer(ASerializer).ReadUTF8String('LastName', l_LastName); + LastName := l_LastName; + l_SessionID := SessionID; + TROSerializer(ASerializer).ReadUTF8String('SessionID', l_SessionID); + SessionID := l_SessionID; + end; +end; + +procedure LoginInfo.WriteComplex(ASerializer: TObject); +var + l_EmployeeID: Integer; + l_FirstName: String; + l_Job_Type: JobType; + l_JobTitle: String; + l_LastName: String; + l_SessionID: String; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + l_SessionID := SessionID; + TROSerializer(ASerializer).WriteUTF8String('SessionID', l_SessionID); + SessionID := l_SessionID; + l_EmployeeID := EmployeeID; + TROSerializer(ASerializer).WriteInteger('EmployeeID', otSLong, l_EmployeeID); + EmployeeID := l_EmployeeID; + l_FirstName := FirstName; + TROSerializer(ASerializer).WriteUTF8String('FirstName', l_FirstName); + FirstName := l_FirstName; + l_LastName := LastName; + TROSerializer(ASerializer).WriteUTF8String('LastName', l_LastName); + LastName := l_LastName; + l_Job_Type := Job_Type; + TROSerializer(ASerializer).WriteEnumerated('Job_Type',TypeInfo(JobType), l_Job_Type); + Job_Type := l_Job_Type; + l_JobTitle := JobTitle; + TROSerializer(ASerializer).WriteUTF8String('JobTitle', l_JobTitle); + JobTitle := l_JobTitle; + end else begin + l_EmployeeID := EmployeeID; + TROSerializer(ASerializer).WriteInteger('EmployeeID', otSLong, l_EmployeeID); + EmployeeID := l_EmployeeID; + l_FirstName := FirstName; + TROSerializer(ASerializer).WriteUTF8String('FirstName', l_FirstName); + FirstName := l_FirstName; + l_Job_Type := Job_Type; + TROSerializer(ASerializer).WriteEnumerated('Job_Type',TypeInfo(JobType), l_Job_Type); + Job_Type := l_Job_Type; + l_JobTitle := JobTitle; + TROSerializer(ASerializer).WriteUTF8String('JobTitle', l_JobTitle); + JobTitle := l_JobTitle; + l_LastName := LastName; + TROSerializer(ASerializer).WriteUTF8String('LastName', l_LastName); + LastName := l_LastName; + l_SessionID := SessionID; + TROSerializer(ASerializer).WriteUTF8String('SessionID', l_SessionID); + SessionID := l_SessionID; + end; +end; + +{ LoginInfoCollection } +constructor LoginInfoCollection.Create; +begin + inherited Create(LoginInfo); +end; + +constructor LoginInfoCollection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function LoginInfoCollection.Add: LoginInfo; +begin + result := LoginInfo(inherited Add); +end; + +function LoginInfoCollection.GetItems(aIndex: integer): LoginInfo; +begin + result := LoginInfo(inherited Items[aIndex]); +end; + +procedure LoginInfoCollection.SetItems(aIndex: integer; const Value: LoginInfo); +begin + LoginInfo(inherited Items[aIndex]).Assign(Value); +end; + +{ CoLoginService } + +class function CoLoginService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ILoginService; +begin + result := TLoginService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TLoginService_Proxy } + +function TLoginService_Proxy.__GetInterfaceName:string; +begin + result := 'LoginService'; +end; + +function TLoginService_Proxy.Login(const UserName: String; const Password: String; out aLoginInfo: LoginInfo): Boolean; +begin + try + aLoginInfo := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'MegaDemoLibrary', __InterfaceName, 'Login'); + __Message.Write('UserName', TypeInfo(String), UserName, []); + __Message.Write('Password', TypeInfo(String), Password, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + __Message.Read('aLoginInfo', TypeInfo(MegaDemoLibrary_Intf.LoginInfo), aLoginInfo, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +procedure TLoginService_Proxy.Logout; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'MegaDemoLibrary', __InterfaceName, 'Logout'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.FreeStream; + end +end; + +{ CoOrdersService } + +class function CoOrdersService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IOrdersService; +begin + result := TOrdersService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TOrdersService_Proxy } + +function TOrdersService_Proxy.__GetInterfaceName:string; +begin + result := 'OrdersService'; +end; + +function TOrdersService_Proxy.GetCustomerOrders(const CustomerID: String): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'MegaDemoLibrary', __InterfaceName, 'GetCustomerOrders'); + __Message.Write('CustomerID', TypeInfo(String), CustomerID, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +initialization + RegisterROClass(LoginInfo); + RegisterProxyClass(ILoginService_IID, TLoginService_Proxy); + RegisterProxyClass(IOrdersService_IID, TOrdersService_Proxy); + + +finalization + UnregisterROClass(LoginInfo); + UnregisterProxyClass(ILoginService_IID); + UnregisterProxyClass(IOrdersService_IID); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoLibrary_Invk.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoLibrary_Invk.pas new file mode 100644 index 0000000..d407890 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoLibrary_Invk.pas @@ -0,0 +1,126 @@ +unit MegaDemoLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Used RODL Intf's:} DataAbstract4_Intf, + {Used RODL Invk's:} DataAbstract4_Invk, + {Generated:} MegaDemoLibrary_Intf; + +type + {$M+} + TLoginService_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + procedure Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_Logout(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + {$M-} + + {$M+} + TOrdersService_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + procedure Invoke_GetCustomerOrders(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + {$M-} + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TLoginService_Invoker } + +procedure TLoginService_Invoker.Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function Login(const UserName: String; const Password: String; out aLoginInfo: LoginInfo): Boolean; } +var + UserName: String; + Password: String; + aLoginInfo: MegaDemoLibrary_Intf.LoginInfo; + lResult: Boolean; + __lObjectDisposer: TROObjectDisposer; +begin + aLoginInfo := nil; + try + __Message.Read('UserName', TypeInfo(String), UserName, []); + __Message.Read('Password', TypeInfo(String), Password, []); + + lResult := (__Instance as ILoginService).Login(UserName, Password, aLoginInfo); + + __Message.InitializeResponseMessage(__Transport, 'MegaDemoLibrary', 'LoginService', 'LoginResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Write('aLoginInfo', TypeInfo(MegaDemoLibrary_Intf.LoginInfo), aLoginInfo, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(aLoginInfo); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TLoginService_Invoker.Invoke_Logout(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure Logout; } +begin + try + (__Instance as ILoginService).Logout; + + __Message.InitializeResponseMessage(__Transport, 'MegaDemoLibrary', 'LoginService', 'LogoutResponse'); + __Message.Finalize; + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + +{ TOrdersService_Invoker } + +procedure TOrdersService_Invoker.Invoke_GetCustomerOrders(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetCustomerOrders(const CustomerID: String): Binary; } +var + CustomerID: String; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('CustomerID', TypeInfo(String), CustomerID, []); + + lResult := (__Instance as IOrdersService).GetCustomerOrders(CustomerID); + + __Message.InitializeResponseMessage(__Transport, 'MegaDemoLibrary', 'OrdersService', 'GetCustomerOrdersResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer.bdsproj new file mode 100644 index 0000000..bf14e9b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + MegaDemoServer.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer.dpr new file mode 100644 index 0000000..a4f42f4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer.dpr @@ -0,0 +1,26 @@ +program MegaDemoServer; + +{#ROGEN:MegaDemoLibrary.RODL}// RemObjects SDK: Careful, do not remove! + +uses + uROComInit, + uROComboService, + Forms, + MegaDemoServer_Main in 'MegaDemoServer_Main.pas' {MegaDemoServer_MainForm}, + MegaDemoServer_Data in 'MegaDemoServer_Data.pas' {MegaDemoServer_DataModule: TDataModule}, + MegaDemoLibrary_Intf in 'MegaDemoLibrary_Intf.pas', + MegaDemoLibrary_Invk in 'MegaDemoLibrary_Invk.pas', + LoginService_Impl in 'LoginService_Impl.pas' {LoginService: TDataAbstractService}, + OrdersService_Impl in 'OrdersService_Impl.pas' {OrdersService: TDataAbstractService}; + +{$R *.res} +{$R RODLFile.res} + +begin + Application.Initialize; + Application.Title := 'MegaDemo server'; + Application.CreateForm(TMegaDemoServer_DataModule, MegaDemoServer_DataModule); + Application.CreateForm(TMegaDemoServer_MainForm, MegaDemoServer_MainForm); + Application.Run; +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer.dproj new file mode 100644 index 0000000..9977beb --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer.dproj @@ -0,0 +1,83 @@ + + + {52bc4b5a-f3b4-4085-b7e9-63fe80cf7d83} + MegaDemoServer.dpr + Debug + AnyCPU + DCC32 + MegaDemoServer.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + MegaDemoServer.dpr + + + + + + + MainSource + + +
LoginService
+
+ + + +
MegaDemoServer_DataModule
+
+ +
MegaDemoServer_MainForm
+
+ +
OrdersService
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer.res new file mode 100644 index 0000000..7455d6e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer_Data.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer_Data.dfm new file mode 100644 index 0000000..9e14fb4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer_Data.dfm @@ -0,0 +1,74 @@ +object MegaDemoServer_DataModule: TMegaDemoServer_DataModule + OldCreateOrder = False + OnCreate = DataModuleCreate + Left = 362 + Top = 208 + Height = 207 + Width = 352 + object Server: TROIndyHTTPServer + Dispatchers = < + item + Name = 'Message' + Message = Message + Enabled = True + PathInfo = 'Bin' + end> + Port = 8099 + Left = 32 + Top = 8 + end + object Message: TROBinMessage + Left = 32 + Top = 56 + end + object ConnectionManager: TDAConnectionManager + Connections = < + item + Name = 'Employees' + ConnectionString = + 'IBX?Server=localhost;Database=C:\Program Files\Borland\InterBase' + + '\examples\Database\EMPLOYEE.FDB;UserID=SYSDBA;Password=masterkey' + + ';' + Description = 'Local connection to FireBird'#39's EMPLOYEE.FDB' + Default = False + Tag = 0 + end + item + Name = 'Northwind' + ConnectionString = + 'ADO?AuxDriver=SQLOLEDB.1;Server=localhost;Database=Northwind;Int' + + 'egrated Security=SSPI' + Description = 'Microsoft SQL Server 2000, localhost' + Default = True + Tag = 0 + end> + DriverManager = DriverManager + PoolingEnabled = True + Left = 136 + Top = 56 + end + object DriverManager: TDADriverManager + DriverDirectory = '%MODULE%\' + TraceActive = False + TraceFlags = [] + Left = 136 + Top = 10 + end + object DataDictionary: TDADataDictionary + Fields = <> + Left = 32 + Top = 104 + end + object SessionManager: TROInMemorySessionManager + Left = 136 + Top = 104 + end + object DAADODriver: TDAADODriver + Left = 243 + Top = 11 + end + object DAIBXDriver: TDAIBXDriver + Left = 244 + Top = 59 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer_Data.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer_Data.pas new file mode 100644 index 0000000..a9b415b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer_Data.pas @@ -0,0 +1,43 @@ +unit MegaDemoServer_Data; + +interface + +uses + SysUtils, Classes, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, + uROBinMessage, uROIndyHTTPServer, + uDAEngine, uDADriverManager, uDAClasses, uROSessions, + uROIndyTCPServer, uDAADODriver, uDAIBXDriver; + +type + TMegaDemoServer_DataModule = class(TDataModule) + Server: TROIndyHTTPServer; + Message: TROBinMessage; + ConnectionManager: TDAConnectionManager; + DriverManager: TDADriverManager; + SessionManager: TROInMemorySessionManager; + DAADODriver: TDAADODriver; + DAIBXDriver: TDAIBXDriver; + DataDictionary: TDADataDictionary; + + procedure DataModuleCreate(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + MegaDemoServer_DataModule: TMegaDemoServer_DataModule; + +implementation + +{$R *.dfm} + +procedure TMegaDemoServer_DataModule.DataModuleCreate(Sender: TObject); +begin + Server.Active := true; +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer_Main.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer_Main.dfm new file mode 100644 index 0000000..513b0f2 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer_Main.dfm @@ -0,0 +1,44 @@ +object MegaDemoServer_MainForm: TMegaDemoServer_MainForm + Left = 372 + Top = 277 + BorderStyle = bsDialog + Caption = 'Data Abstract Server' + ClientHeight = 108 + ClientWidth = 345 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton + Left = 66 + Top = 8 + Width = 212 + Height = 48 + Cursor = crHandPoint + end + object Label1: TLabel + Left = 8 + Top = 60 + Width = 101 + Height = 13 + Caption = 'Selected connection:' + end + object cbConnectionName: TComboBox + Left = 7 + Top = 75 + Width = 329 + Height = 21 + Style = csDropDownList + Anchors = [akLeft, akTop, akRight] + ItemHeight = 13 + TabOrder = 0 + OnChange = cbConnectionNameChange + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer_Main.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer_Main.pas new file mode 100644 index 0000000..a935c0f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/MegaDemoServer_Main.pas @@ -0,0 +1,56 @@ +unit MegaDemoServer_Main; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uDAPoweredByDataAbstractButton, uROPoweredByRemObjectsButton; + +type + TMegaDemoServer_MainForm = class(TForm) + DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton; + Label1: TLabel; + cbConnectionName: TComboBox; + procedure FormCreate(Sender: TObject); + procedure cbConnectionNameChange(Sender: TObject); + private + fCurrentConnectionName: string; + public + { Public declarations } + function GetSelectedConnectionName: string; + end; + +var + MegaDemoServer_MainForm: TMegaDemoServer_MainForm; + +implementation +uses + MegaDemoServer_Data; +{$R *.dfm} + +procedure TMegaDemoServer_MainForm.FormCreate(Sender: TObject); +var + i: integer; +begin + with MegaDemoServer_DataModule.ConnectionManager.Connections do + for i := 0 to Count - 1 do begin + cbConnectionName.AddItem(Connections[i].Name + ' - ' + Connections[i].Description, nil); + if Connections[i].Default then begin + cbConnectionName.ItemIndex := i; + cbConnectionNameChange(cbConnectionName); + end; + end; +end; + +function TMegaDemoServer_MainForm.GetSelectedConnectionName: string; +begin + Result := fCurrentConnectionName; +end; + +procedure TMegaDemoServer_MainForm.cbConnectionNameChange(Sender: TObject); +begin + fCurrentConnectionName := copy(cbConnectionName.Text, 1, pos(' ', cbConnectionName.Text)-1); +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/OrdersService_Impl.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/OrdersService_Impl.dfm new file mode 100644 index 0000000..8eeb63c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/OrdersService_Impl.dfm @@ -0,0 +1,323 @@ +object OrdersService: TOrdersService + OldCreateOrder = True + RequiresSession = True + SessionManager = MegaDemoServer_DataModule.SessionManager + ServiceSchema = Schema + ServiceDataStreamer = BinDataStreamer + ExportedDataTables = <> + BeforeAcquireConnection = DataAbstractServiceBeforeAcquireConnection + Left = 221 + Top = 190 + Height = 206 + Width = 256 + object bpCustomers: TDABusinessProcessor + ProcessorOptions = [poAutoGenerateInsert, poAutoGenerateUpdate, poAutoGenerateDelete, poAutoGenerateRefreshDataset, poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 138 + Top = 60 + end + object BinDataStreamer: TDABinDataStreamer + BufferSize = 262144 + Left = 62 + Top = 60 + end + object Schema: TDASchema + ConnectionManager = MegaDemoServer_DataModule.ConnectionManager + DataDictionary = MegaDemoServer_DataModule.DataDictionary + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'Employees' + TargetTable = 'CUSTOMER' + SQL = 'SELECT C.CUST_NO, C.CUSTOMER, C.CITY'#10'FROM CUSTOMER C' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CustomerID' + TableField = 'CUST_NO' + end + item + DatasetField = 'CustomerName' + TableField = 'CUSTOMER' + end + item + DatasetField = 'City' + TableField = 'CITY' + end> + end + item + Connection = 'Northwind' + TargetTable = 'Customers' + SQL = + 'SELECT '#10' Custs.CustomerID, Custs.CompanyName, Custs.City'#10' FR' + + 'OM'#10' Customers Custs' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'CustomerName' + TableField = 'CompanyName' + end + item + DatasetField = 'City' + TableField = 'City' + end> + end> + Name = 'Customers' + Description = 'Retrieves the list of customers in the database' + Fields = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + Description = 'The customer'#39's code' + BlobType = dabtUnknown + GeneratorName = 'CUST_NO_GEN' + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + DisplayLabel = 'Customer ID' + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CustomerName' + DataType = datString + Size = 40 + Description = 'The customer'#39's name' + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + DisplayLabel = 'Name' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datString + Size = 25 + Description = 'The customer'#39's city' + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'EmployeeID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end> + Statements = < + item + Connection = 'Employees' + TargetTable = 'SALES' + SQL = + 'SELECT S.CUST_NO, S.ORDER_DATE, S.DATE_NEEDED, S.SHIP_DATE, S.TO' + + 'TAL_VALUE'#10'FROM SALES S'#10'WHERE S.SALES_REP=:EmployeeID AND S.CUST_' + + 'NO=:CustomerID' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CustomerID' + TableField = 'CUST_NO' + end + item + DatasetField = 'OrderDate' + TableField = 'ORDER_DATE' + end + item + DatasetField = 'RequiredDate' + TableField = 'DATE_NEEDED' + end + item + DatasetField = 'ShippedDate' + TableField = 'SHIP_DATE' + end + item + DatasetField = 'OrderAmount' + TableField = 'TOTAL_VALUE' + end> + end + item + Connection = 'Northwind' + TargetTable = 'Orders' + SQL = + 'SELECT '#10' Ords.CustomerID, Ords.OrderDate, Ords.RequiredDate, ' + + 'Ords.ShippedDate, Ords.Freight as OrderAmount'#10' FROM'#10' Orders ' + + 'Ords'#10'WHERE Ords.EmployeeID=:EmployeeID AND Ords.CustomerID=:Cust' + + 'omerID' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'OrderDate' + TableField = 'OrderDate' + end + item + DatasetField = 'RequiredDate' + TableField = 'RequiredDate' + end + item + DatasetField = 'ShippedDate' + TableField = 'ShippedDate' + end + item + DatasetField = 'OrderAmount' + TableField = 'OrderAmount' + end> + end> + Name = 'OrdersByCustomer' + Description = + 'Retrieves the list of orders for a specific customer entered by ' + + 'the loged employee' + Fields = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + Description = 'The identifier of the customer that placed this order' + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + LogChanges = False + DisplayWidth = 0 + DisplayLabel = 'Customer ID' + ReadOnly = True + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OrderDate' + DataType = datDateTime + Description = 'The order'#39's date' + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + DisplayLabel = 'Order Date' + ReadOnly = True + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RequiredDate' + DataType = datDateTime + Description = 'The date by which the order has to be received' + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + DisplayLabel = 'Required Date' + ReadOnly = True + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShippedDate' + DataType = datDateTime + Description = 'The date this order has been shipped' + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + DisplayLabel = 'Shipped Date' + ReadOnly = True + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OrderAmount' + DataType = datCurrency + Description = 'The order'#39's amount' + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + DisplayLabel = 'Order Amount' + ReadOnly = True + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = <> + RelationShips = < + item + Name = 'CustomersToOrders' + MasterDatasetName = 'Customers' + MasterFields = 'CustomerID' + DetailDatasetName = 'OrdersByCustomer' + DetailFields = 'CustomerID' + RelationshipType = rtForeignKey + end> + UpdateRules = <> + Version = 0 + Left = 62 + Top = 15 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/OrdersService_Impl.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/OrdersService_Impl.pas new file mode 100644 index 0000000..bc187c9 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/OrdersService_Impl.pas @@ -0,0 +1,97 @@ +unit OrdersService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, Variants, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} MegaDemoLibrary_Intf, uDAClasses, uDADataStreamer, + uDABinAdapter, uDAScriptingProvider, uDABusinessProcessor; + +type + { TOrdersService } + TOrdersService = class(TDataAbstractService, IOrdersService) + bpCustomers: TDABusinessProcessor; + BinDataStreamer: TDABinDataStreamer; + Schema: TDASchema; + procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject; + var aConnectionName: string); + private + protected + { IOrdersService methods } + function GetCustomerOrders(const CustomerID: string): Binary; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} MegaDemoLibrary_Invk, + MegaDemoServer_Data, MegaDemoServer_Main; + +procedure Create_OrdersService(out anInstance: IUnknown); +begin + anInstance := TOrdersService.Create(nil); +end; + +{ OrdersService } + +function TOrdersService.GetCustomerOrders(const CustomerID: string): Binary; +var + aTableNameArray: StringArray; + aTableRequestInfoArray: TableRequestInfoArray; + aTableRequestInfo: TableRequestInfo; +begin + // This method reads all the orders of the specified customer and also filters + // based on the current employee's ID. The employee ID has been previously stored + // in the session upon the call to LoginService.Login. + + aTableNameArray := StringArray.Create; + aTableRequestInfoArray := TableRequestInfoArray.Create; + try + aTableNameArray.Add('OrdersByCustomer'); + aTableRequestInfo := aTableRequestInfoArray.Add; + with aTableRequestInfo do begin + IncludeSchema := True; + MaxRecords := -1; + UserFilter := ''; + with Parameters.Add do begin + Name := 'CustomerID'; + Value := CustomerID; + end; + with Parameters.Add do begin + Name := 'EmployeeID'; + Value := VarToStr(Session['EmployeeID']); + end; + end; + Result := GetData(aTableNameArray, aTableRequestInfoArray) + finally + aTableRequestInfoArray.Free; + aTableNameArray.Free; + end; +end; + +procedure TOrdersService.DataAbstractServiceBeforeAcquireConnection( + aSender: TObject; var aConnectionName: string); +begin + // Reads the connection name from the main form. + aConnectionName := MegaDemoServer_MainForm.GetSelectedConnectionName; +end; + +initialization + TROClassFactory.Create('OrdersService', Create_OrdersService, TOrdersService_Invoker); + +finalization + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/RODLFILE.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/RODLFILE.res new file mode 100644 index 0000000..e8d19db Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/MegaDemo/RODLFILE.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData.Sample.html new file mode 100644 index 0000000..38fadb6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData.Sample.html @@ -0,0 +1,40 @@ + + + + + + + + + +

+ Memory Data +

+ + +

Purpose

+ +

+ This example shows how to create and populate a virtual dataset dynamically.
+The client displays two grids: + +

+

+ +

Examine the Code

+ + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData.bdsgroup b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData.bdsgroup new file mode 100644 index 0000000..515b8e1 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData.bdsgroup @@ -0,0 +1,20 @@ + + + + + + + + + + + + + MemoryData_Server.bdsproj + MemoryData_Client.bdsproj + MemoryData_Server.exe MemoryData_Client.exe + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData.bpg b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData.bpg new file mode 100644 index 0000000..0a15ec3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = MemoryData_Server.exe MemoryData_Client.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +MemoryData_Server.exe: MemoryData_Server.dpr + $(DCC) + +MemoryData_Client.exe: MemoryData_Client.dpr + $(DCC) + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData.groupproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData.groupproj new file mode 100644 index 0000000..6c66ace --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData.groupproj @@ -0,0 +1,40 @@ + + + {3e35d412-e6fa-41c3-a9d2-f8c07e8dc6fb} + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryDataLibrary.rodl b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryDataLibrary.rodl new file mode 100644 index 0000000..113ead8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryDataLibrary.rodl @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryDataLibrary_Intf.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryDataLibrary_Intf.pas new file mode 100644 index 0000000..5594e0f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryDataLibrary_Intf.pas @@ -0,0 +1,76 @@ +unit MemoryDataLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROClasses, uROClient, uROTypes, uROClientIntf, + {Used RODLs:} DataAbstract4_Intf; + +const + { Library ID } + LibraryUID = '{D4B11283-58D8-4C0D-9747-FEB990A41DEE}'; + + { Service Interface ID's } + INewService_IID : TGUID = '{1E22E1AC-FB18-4085-8260-F6AFF4E697BA}'; + + { Event ID's } + +type + { Forward declarations } + INewService = interface; + + + + + { INewService } + INewService = interface(IDataAbstractService) + ['{1E22E1AC-FB18-4085-8260-F6AFF4E697BA}'] + end; + + { CoNewService } + CoNewService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): INewService; + end; + + { TNewService_Proxy } + TNewService_Proxy = class(TDataAbstractService_Proxy, INewService) + protected + function __GetInterfaceName:string; override; + + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uRORes; + +{ CoNewService } + +class function CoNewService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): INewService; +begin + result := TNewService_Proxy.Create(aMessage, aTransportChannel); +end; + +function TNewService_Proxy.__GetInterfaceName:string; +begin + result := 'NewService'; +end; + +initialization + RegisterProxyClass(INewService_IID, TNewService_Proxy); + + +finalization + UnregisterProxyClass(INewService_IID); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryDataLibrary_Invk.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryDataLibrary_Invk.pas new file mode 100644 index 0000000..8f0bbd9 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryDataLibrary_Invk.pas @@ -0,0 +1,32 @@ +unit MemoryDataLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Used RODL Intf's:} DataAbstract4_Intf, + {Used RODL Invk's:} DataAbstract4_Invk, + {Generated:} MemoryDataLibrary_Intf; + +type + TNewService_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Client.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Client.bdsproj new file mode 100644 index 0000000..c07331f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Client.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + MemoryData_Client.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Client.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Client.dpr new file mode 100644 index 0000000..54e3179 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Client.dpr @@ -0,0 +1,17 @@ +program MemoryData_Client; + +uses + uROComInit, + Forms, + MemoryData_ClientMain in 'MemoryData_ClientMain.pas' {MemoryData_ClientMainForm}, + MemoryData_ClientData in 'MemoryData_ClientData.pas' {MemoryData_ClientDataModule: TDAClientDataModule}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'MemoryData - Client'; + Application.CreateForm(TMemoryData_ClientDataModule, MemoryData_ClientDataModule); + Application.CreateForm(TMemoryData_ClientMainForm, MemoryData_ClientMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Client.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Client.dproj new file mode 100644 index 0000000..62803ed --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Client.dproj @@ -0,0 +1,75 @@ + + + {5aba4cae-f8e7-4072-9515-dc1d0e7611fe} + MemoryData_Client.dpr + Debug + AnyCPU + DCC32 + MemoryData_Client.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + MemoryData_Client.dpr + + + + + + + MainSource + + +
MemoryData_ClientDataModule
+
+ +
MemoryData_ClientMainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Client.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Client.res new file mode 100644 index 0000000..da01de5 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Client.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ClientData.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ClientData.dfm new file mode 100644 index 0000000..21191e8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ClientData.dfm @@ -0,0 +1,197 @@ +object MemoryData_ClientDataModule: TMemoryData_ClientDataModule + OldCreateOrder = True + Left = 152 + Top = 69 + Height = 289 + Width = 252 + object ROChannel: TROWinInetHTTPChannel + ServerLocators = <> + DispatchOptions = [] + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/BIN' + Left = 40 + Top = 8 + end + object ROMessage: TROBinMessage + Left = 40 + Top = 52 + end + object RORemoteService: TRORemoteService + ServiceName = 'NewService' + Message = ROMessage + Channel = ROChannel + Left = 40 + Top = 96 + end + object DABinAdapter: TDABinDataStreamer + Left = 40 + Top = 142 + end + object tbl_ComboDataset1: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'AutoIncField' + DataType = datAutoInc + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TextField' + DataType = datString + Size = 50 + BlobType = dabtUnknown + DisplayWidth = 50 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = < + item + Name = 'CustomParameter' + DataType = datString + Size = 50 + BlobType = dabtUnknown + ParamType = daptInput + end> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'ComboDataset' + IndexDefs = <> + Left = 136 + Top = 16 + end + object ds_ComboDataset1: TDADataSource + DataTable = tbl_ComboDataset1 + Left = 152 + Top = 32 + end + object tbl_DirectoryData1: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'FileName' + DataType = datString + Size = 200 + BlobType = dabtUnknown + DisplayWidth = 50 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FileSize' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = < + item + Name = 'Directory' + DataType = datString + Size = 200 + BlobType = dabtUnknown + ParamType = daptInput + end> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'DirectoryData' + IndexDefs = <> + Left = 136 + Top = 112 + end + object ds_DirectoryData1: TDADataSource + DataTable = tbl_DirectoryData1 + Left = 152 + Top = 128 + end + object DARemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetSchemaCall.MethodName = 'GetSchema' + GetSchemaCall.Params = < + item + Name = 'aFilter' + DataType = rtString + Flag = fIn + Value = Null + end + item + Name = 'Result' + DataType = rtString + Flag = fResult + Value = Null + end> + GetSchemaCall.Default = False + GetSchemaCall.IncomingSchemaParameter = 'Result' + GetSchemaCall.OutgoingFilterParameter = 'aFilter' + GetDataCall.RemoteService = RORemoteService + GetDataCall.MethodName = 'GetData' + GetDataCall.Params = < + item + Name = 'aTableNameArray' + DataType = rtUserDefined + Flag = fIn + TypeName = 'StringArray' + end + item + Name = 'aTableRequestInfoArray' + DataType = rtUserDefined + Flag = fIn + TypeName = 'TableRequestInfoArray' + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + end> + GetDataCall.Default = False + GetDataCall.OutgoingTableNamesParameter = 'aTableNameArray' + GetDataCall.OutgoingTableRequestInfosParameter = 'aTableRequestInfoArray' + GetDataCall.IncomingDataParameter = 'Result' + UpdateDataCall.RemoteService = RORemoteService + UpdateDataCall.MethodName = 'UpdateData' + UpdateDataCall.Params = < + item + Name = 'aDelta' + DataType = rtBinary + Flag = fIn + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + end> + UpdateDataCall.Default = False + UpdateDataCall.OutgoingDeltaParameter = 'aDelta' + UpdateDataCall.IncomingDeltaParameter = 'Result' + GetScriptsCall.RemoteService = RORemoteService + GetScriptsCall.Params = <> + GetScriptsCall.Default = False + RemoteService = RORemoteService + DataStreamer = DABinAdapter + Left = 40 + Top = 192 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ClientData.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ClientData.pas new file mode 100644 index 0000000..244bca4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ClientData.pas @@ -0,0 +1,36 @@ +unit MemoryData_ClientData; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROWinInetHTTPChannel, + {Data Abstract:} uDADataTable, uDABINAdapter, uDAInterfaces, + uDAScriptingProvider, uDACDSDataTable, + uDARemoteDataAdapter, uDADataStreamer; + +type + TMemoryData_ClientDataModule = class(TDataModule) + ROMessage: TROBinMessage; + ROChannel: TROWinInetHTTPChannel; + RORemoteService: TRORemoteService; + DABinAdapter: TDABinDataStreamer; + tbl_ComboDataset1: TDACDSDataTable; + ds_ComboDataset1: TDADataSource; + tbl_DirectoryData1: TDACDSDataTable; + ds_DirectoryData1: TDADataSource; + DARemoteDataAdapter: TDARemoteDataAdapter; + private + { Private declarations } + public + { Public declarations } + end; + +var + MemoryData_ClientDataModule: TMemoryData_ClientDataModule; + +implementation + +{$R *.dfm} + +initialization +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ClientMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ClientMain.dfm new file mode 100644 index 0000000..d1332b0 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ClientMain.dfm @@ -0,0 +1,121 @@ +object MemoryData_ClientMainForm: TMemoryData_ClientMainForm + Left = 98 + Top = 36 + AutoScroll = False + BorderWidth = 5 + Caption = 'MemoryData - Client' + ClientHeight = 440 + ClientWidth = 512 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object DBGrid1: TDBGrid + Left = 0 + Top = 35 + Width = 512 + Height = 122 + Align = alClient + DataSource = MemoryData_ClientDataModule.ds_ComboDataset1 + TabOrder = 0 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object DBGrid2: TDBGrid + Left = 0 + Top = 192 + Width = 512 + Height = 248 + Align = alBottom + DataSource = MemoryData_ClientDataModule.ds_DirectoryData1 + TabOrder = 1 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 512 + Height = 35 + Align = alTop + BevelOuter = bvNone + TabOrder = 2 + DesignSize = ( + 512 + 35) + object Label1: TLabel + Left = 88 + Top = 11 + Width = 89 + Height = 13 + Caption = 'Custom Parameter:' + end + object Open1: TButton + Left = 0 + Top = 5 + Width = 75 + Height = 25 + Caption = 'Open/Close' + TabOrder = 0 + OnClick = Open1Click + end + object eCustomParameter: TEdit + Left = 183 + Top = 8 + Width = 325 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 1 + Text = 'Regions, Customers, Employees' + end + end + object Panel2: TPanel + Left = 0 + Top = 157 + Width = 512 + Height = 35 + Align = alBottom + BevelOuter = bvNone + TabOrder = 3 + DesignSize = ( + 512 + 35) + object Label2: TLabel + Left = 88 + Top = 10 + Width = 45 + Height = 13 + Caption = 'Directory:' + end + object open2: TButton + Left = 0 + Top = 5 + Width = 75 + Height = 25 + Caption = 'Open/Close' + TabOrder = 0 + OnClick = open2Click + end + object eDirectory: TEdit + Left = 138 + Top = 8 + Width = 370 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 1 + Text = 'C:\Windows' + end + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ClientMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ClientMain.pas new file mode 100644 index 0000000..fe8473b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ClientMain.pas @@ -0,0 +1,56 @@ +unit MemoryData_ClientMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROIndyHTTPChannel, + Grids, DBGrids, ExtCtrls; + +type + TMemoryData_ClientMainForm = class(TForm) + DBGrid1: TDBGrid; + DBGrid2: TDBGrid; + Panel1: TPanel; + Panel2: TPanel; + open2: TButton; + Label2: TLabel; + eDirectory: TEdit; + Open1: TButton; + Label1: TLabel; + eCustomParameter: TEdit; + procedure Open1Click(Sender: TObject); + procedure open2Click(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + MemoryData_ClientMainForm: TMemoryData_ClientMainForm; + +implementation + +uses MemoryData_ClientData; + +{$R *.dfm} + +procedure TMemoryData_ClientMainForm.Open1Click(Sender: TObject); +begin + with MemoryData_ClientDataModule.tbl_ComboDataset1 do begin + ParamByName('CustomParameter').AsString := eCustomParameter.Text; + Active := Active xor TRUE; + end; +end; + +procedure TMemoryData_ClientMainForm.open2Click(Sender: TObject); +begin + with MemoryData_ClientDataModule.tbl_DirectoryData1 do begin + ParamByName('Directory').AsString := eDirectory.Text; + Active := Active xor TRUE; + end; +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Server.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Server.bdsproj new file mode 100644 index 0000000..48f2368 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Server.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + MemoryData_Server.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Server.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Server.dpr new file mode 100644 index 0000000..a8d30c4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Server.dpr @@ -0,0 +1,23 @@ +program MemoryData_Server; + +{#ROGEN:MemoryDataLibrary.rodl} // RemObjects: Careful, do not remove! + +uses + uROComInit, + Forms, + MemoryData_ServerMain in 'MemoryData_ServerMain.pas' {MemoryData_ServerMainForm}, + NewService_Impl in 'NewService_Impl.pas' {NewService: TDARemoteService}, + MemoryData_ServerData in 'MemoryData_ServerData.pas' {MemoryData_ServerDataModule: TDataModule}, + MemoryDataLibrary_Intf in 'MemoryDataLibrary_Intf.pas', + MemoryDataLibrary_Invk in 'MemoryDataLibrary_Invk.pas'; + +{$R *.res} +{$R RODLFile.res} + +begin + Application.Initialize; + Application.Title := 'MemoryData - Server'; + Application.CreateForm(TMemoryData_ServerDataModule, MemoryData_ServerDataModule); + Application.CreateForm(TMemoryData_ServerMainForm, MemoryData_ServerMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Server.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Server.dproj new file mode 100644 index 0000000..7ad4518 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Server.dproj @@ -0,0 +1,80 @@ + + + {36625199-3349-4952-8391-e35b3fcc6935} + MemoryData_Server.dpr + Debug + AnyCPU + DCC32 + MemoryData_Server.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + MemoryData_Server.dpr + + + + + + + MainSource + + + + +
MemoryData_ServerDataModule
+
+ +
MemoryData_ServerMainForm
+
+ +
NewService
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Server.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Server.res new file mode 100644 index 0000000..7455d6e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_Server.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ServerData.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ServerData.dfm new file mode 100644 index 0000000..5e57f4b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ServerData.dfm @@ -0,0 +1,64 @@ +object MemoryData_ServerDataModule: TMemoryData_ServerDataModule + OldCreateOrder = False + OnCreate = DataModuleCreate + Left = 104 + Top = 110 + Height = 207 + Width = 352 + object ROServer: TROIndyHTTPServer + Dispatchers = < + item + Name = 'ROMessage' + Message = ROMessage + Enabled = True + PathInfo = 'Bin' + end> + Port = 8099 + Left = 32 + Top = 8 + end + object ROMessage: TROBinMessage + Left = 34 + Top = 56 + end + object ConnectionManager: TDAConnectionManager + MaxPoolSize = 10 + PoolTimeoutSeconds = 60 + PoolBehaviour = pbWait + WaitIntervalSeconds = 1 + Connections = < + item + Name = 'Northwind' + ConnectionString = + 'ADO?AuxDriver=SQLOLEDB.1;Server=localhost;Database=Northwind;Use' + + 'rID=sa;Password=;' + Default = True + Tag = 0 + end> + DriverManager = DriverManager + PoolingEnabled = True + Left = 136 + Top = 56 + end + object DriverManager: TDADriverManager + DriverDirectory = '%SYSTEM%\' + AutoLoad = False + TraceActive = False + TraceFlags = [] + Left = 136 + Top = 10 + end + object ADODriver: TDAADODriver + Left = 256 + Top = 8 + end + object IBXDriver: TDAIBXDriver + Left = 256 + Top = 56 + end + object DataDictionary: TDADataDictionary + Fields = <> + Left = 32 + Top = 104 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ServerData.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ServerData.pas new file mode 100644 index 0000000..fa141a5 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ServerData.pas @@ -0,0 +1,48 @@ +unit MemoryData_ServerData; + +interface + +uses + SysUtils, Classes, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, + uROBinMessage, uROIndyHTTPServer, + uDADriverManager, uDAClasses, uDAEngine, uDAIBXDriver, uDAADODriver, + uROIndyTCPServer; + +const + { Dataset names for Schema } + ds_Employees = 'Employees'; + ds_ComboDataset = 'ComboDataset'; + ds_Customers = 'Customers'; + ds_Region = 'Region'; + +type + TMemoryData_ServerDataModule = class(TDataModule) + ROServer: TROIndyHTTPServer; + ROMessage: TROBinMessage; + DriverManager: TDADriverManager; + ADODriver: TDAADODriver; + IBXDriver: TDAIBXDriver; + ConnectionManager: TDAConnectionManager; + DataDictionary: TDADataDictionary; + procedure DataModuleCreate(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + MemoryData_ServerDataModule: TMemoryData_ServerDataModule; + +implementation + +{$R *.dfm} + +procedure TMemoryData_ServerDataModule.DataModuleCreate(Sender: TObject); +begin + ROServer.Active := true; +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ServerMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ServerMain.dfm new file mode 100644 index 0000000..4043fbb --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ServerMain.dfm @@ -0,0 +1,25 @@ +object MemoryData_ServerMainForm: TMemoryData_ServerMainForm + Left = 41 + Top = 43 + BorderStyle = bsDialog + Caption = 'MemoryData - Server' + ClientHeight = 64 + ClientWidth = 228 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object DAPoweredByDataAbstractButton: TDAPoweredByDataAbstractButton + Left = 9 + Top = 8 + Width = 212 + Height = 48 + Cursor = crHandPoint + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ServerMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ServerMain.pas new file mode 100644 index 0000000..7a60dcd --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/MemoryData_ServerMain.pas @@ -0,0 +1,26 @@ +unit MemoryData_ServerMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, + uROBinMessage, uROIndyHTTPServer, uDAPoweredByDataAbstractButton; + +type + TMemoryData_ServerMainForm = class(TForm) + DAPoweredByDataAbstractButton: TDAPoweredByDataAbstractButton; + private + { Private declarations } + public + { Public declarations } + end; + +var + MemoryData_ServerMainForm: TMemoryData_ServerMainForm; + +implementation + +{$R *.dfm} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/NewService_Impl.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/NewService_Impl.dfm new file mode 100644 index 0000000..393cef1 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/NewService_Impl.dfm @@ -0,0 +1,677 @@ +object NewService: TNewService + OldCreateOrder = True + ServiceSchema = Schema + ServiceDataStreamer = BinAdapter + ExportedDataTables = < + item + DataTable = dtComboDataset + end + item + DataTable = dtWindowsDir + end> + BeforeGetDatasetData = DataAbstractServiceBeforeGetDatasetData + ValidateDatasetAccess = DataAbstractServiceValidateDatasetAccess + Left = 339 + Top = 191 + Height = 149 + Width = 326 + object BinAdapter: TDABinDataStreamer + Left = 32 + Top = 8 + end + object Schema: TDASchema + ConnectionManager = MemoryData_ServerDataModule.ConnectionManager + DataDictionary = MemoryData_ServerDataModule.DataDictionary + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'Northwind' + TargetTable = 'Employees' + SQL = + 'SELECT '#10' EmployeeID, LastName, FirstName, Title, TitleOfCourt' + + 'esy, '#10' BirthDate, HireDate, Address, City, Region, PostalCode' + + ', '#10' Country, HomePhone, Extension, Photo, Notes, ReportsTo, '#10 + + ' PhotoPath'#10' FROM'#10' Employees' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'EmployeeID' + TableField = 'EmployeeID' + end + item + DatasetField = 'LastName' + TableField = 'LastName' + end + item + DatasetField = 'FirstName' + TableField = 'FirstName' + end + item + DatasetField = 'Title' + TableField = 'Title' + end + item + DatasetField = 'TitleOfCourtesy' + TableField = 'TitleOfCourtesy' + end + item + DatasetField = 'BirthDate' + TableField = 'BirthDate' + end + item + DatasetField = 'HireDate' + TableField = 'HireDate' + end + item + DatasetField = 'Address' + TableField = 'Address' + end + item + DatasetField = 'City' + TableField = 'City' + end + item + DatasetField = 'Region' + TableField = 'Region' + end + item + DatasetField = 'PostalCode' + TableField = 'PostalCode' + end + item + DatasetField = 'Country' + TableField = 'Country' + end + item + DatasetField = 'HomePhone' + TableField = 'HomePhone' + end + item + DatasetField = 'Extension' + TableField = 'Extension' + end + item + DatasetField = 'Photo' + TableField = 'Photo' + end + item + DatasetField = 'Notes' + TableField = 'Notes' + end + item + DatasetField = 'ReportsTo' + TableField = 'ReportsTo' + end + item + DatasetField = 'PhotoPath' + TableField = 'PhotoPath' + end> + end> + Name = 'Employees' + Fields = < + item + Name = 'EmployeeID' + DataType = datAutoInc + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'LastName' + DataType = datString + Size = 20 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FirstName' + DataType = datString + Size = 10 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Title' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TitleOfCourtesy' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'BirthDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'HireDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Address' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Region' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Country' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'HomePhone' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Extension' + DataType = datString + Size = 4 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Photo' + DataType = datBlob + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Notes' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ReportsTo' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PhotoPath' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'Northwind' + TargetTable = 'Customers' + SQL = + 'SELECT '#10' CustomerID, CompanyName, ContactName, ContactTitle, ' + + #10' Address, City, Region, PostalCode, Country, Phone, '#10' Fax' + + #10' FROM'#10' Customers' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'CompanyName' + TableField = 'CompanyName' + end + item + DatasetField = 'ContactName' + TableField = 'ContactName' + end + item + DatasetField = 'ContactTitle' + TableField = 'ContactTitle' + end + item + DatasetField = 'Address' + TableField = 'Address' + end + item + DatasetField = 'City' + TableField = 'City' + end + item + DatasetField = 'Region' + TableField = 'Region' + end + item + DatasetField = 'PostalCode' + TableField = 'PostalCode' + end + item + DatasetField = 'Country' + TableField = 'Country' + end + item + DatasetField = 'Phone' + TableField = 'Phone' + end + item + DatasetField = 'Fax' + TableField = 'Fax' + end> + end> + Name = 'Customers' + Fields = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CompanyName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactName' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactTitle' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Address' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Region' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Country' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Phone' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Fax' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'Northwind' + TargetTable = 'Region' + SQL = 'SELECT '#10' RegionID, RegionDescription'#10' FROM'#10' Region' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'RegionID' + TableField = 'RegionID' + end + item + DatasetField = 'RegionDescription' + TableField = 'RegionDescription' + end> + end> + Name = 'Regions' + Fields = < + item + Name = 'RegionID' + DataType = datAutoInc + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RegionDescription' + DataType = datString + Size = 50 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = <> + RelationShips = < + item + Name = 'FK_Employees_Employees' + MasterDatasetName = 'Employees' + MasterFields = 'EmployeeID' + DetailDatasetName = 'Employees' + DetailFields = 'ReportsTo' + end> + UpdateRules = <> + Left = 32 + Top = 56 + end + object dtComboDataset: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'AutoIncField' + DataType = datAutoInc + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TextField' + DataType = datString + Size = 50 + BlobType = dabtUnknown + DisplayWidth = 50 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = < + item + Name = 'CustomParameter' + DataType = datString + Size = 50 + BlobType = dabtUnknown + ParamType = daptInput + end> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'ComboDataset' + IndexDefs = <> + Left = 128 + Top = 56 + end + object dtWindowsDir: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'FileName' + DataType = datString + Size = 200 + BlobType = dabtUnknown + DisplayWidth = 50 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FileSize' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = < + item + Name = 'Directory' + DataType = datString + Size = 200 + BlobType = dabtUnknown + ParamType = daptInput + end> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'DirectoryData' + IndexDefs = <> + Left = 216 + Top = 56 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/NewService_Impl.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/NewService_Impl.pas new file mode 100644 index 0000000..3d06ac6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/NewService_Impl.pas @@ -0,0 +1,173 @@ +unit NewService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} MemoryDataLibrary_Intf, uDAScriptingProvider, uDADataTable, + uDACDSDataTable, uDAClasses, uDADataStreamer, uDABinAdapter, uDAInterfaces; + +const + { Dataset names for Schema } + ds_Employees = 'Employees'; + ds_Customers = 'Customers'; + ds_Regions = 'Regions'; + +type + { TNewService } + TNewService = class(TDataAbstractService, INewService) + BinAdapter: TDABinDataStreamer; + dtComboDataset: TDACDSDataTable; + dtWindowsDir: TDACDSDataTable; + Schema: TDASchema; + procedure DataAbstractServiceBeforeGetDatasetData(aSender: TObject; + const aDataset: IDADataset; const aIncludeSchema: Boolean; + const aMaxRecords: Integer); + procedure DataAbstractServiceValidateDatasetAccess(Sender: TObject; + const aConnection: IDAConnection; const aDatasetName: string; + const aParamNames: array of string; + const aParamValues: array of Variant; aSchema: TDASchema; + var Allowed: Boolean); + private + procedure FillComboDataset(const aDataset: IDAEditableDataset); + procedure FillWinDirDataset(const aDataset: IDAEditableDataset); + protected + { INewService methods } + end; + +implementation + +{$R *.dfm} +uses + {Generated:} MemoryDataLibrary_Invk, MemoryData_ServerData, Dialogs; + +procedure Create_NewService(out anInstance: IUnknown); +begin + anInstance := TNewService.Create(nil); +end; + +procedure TNewService.FillComboDataset(const aDataset: IDAEditableDataset); +var + employees, + customers, + regions: IDADataset; + textfield: TDAField; +begin + with aDataset do begin + // Opens the in memory data table + Open; + textfield := FieldByName('TextField'); + + // Adds 3 dummy records + Insert; + textfield.AsString := 'String A'; + Post; + + Insert; + textfield.AsString := 'String B'; + Post; + + Insert; + textfield.AsString := 'String C'; + Post; + + // Fetches data from other datasets, according to the value of the parameter "CustomParameter" + if (Pos('EMPLOYEES', UpperCase(ParamByName('CustomParameter').AsString)) > 0) then begin + employees := Schema.NewDataset(Connection, ds_Employees, [], [], TRUE); + while not employees.EOF do begin + Insert; + textfield.AsString := employees.FieldByName('FirstName').AsString + ' ' + employees.FieldByName('LastName').AsString; + Post; + + employees.Next; + end; + employees:=nil; + end; + if (Pos('CUSTOMERS', UpperCase(ParamByName('CustomParameter').AsString)) > 0) then begin + customers := Schema.NewDataset(Connection, ds_Customers, [], [], TRUE); + while not customers.EOF do begin + Insert; + textfield.AsString := customers.FieldByName('CompanyName').AsString; + Post; + + customers.Next; + end; + customers := nil; + end; + if (Pos('REGIONS', UpperCase(ParamByName('CustomParameter').AsString)) > 0) then begin + regions := Schema.NewDataset(Connection, ds_Regions, [], [], TRUE); + while not regions.EOF do begin + Insert; + textfield.AsString := regions.FieldByName('RegionDescription').AsString; + Post; + + regions.Next; + end; + regions := nil; + end; + end; +end; + +procedure TNewService.FillWinDirDataset(const aDataset: IDAEditableDataset); +var + dirinfo: TSearchRec; +begin + aDataset.Open; + if (FindFirst(IncludeTrailingPathDelimiter(aDataset.ParamByName('Directory').AsString) + '*.*', faArchive, dirinfo) = 0) then repeat + aDataset.Insert; + + aDataset.FieldByName('FileName').AsString := dirinfo.Name; + aDataset.FieldByName('FileSize').AsInteger := dirinfo.Size; + + aDataset.Post; + until (FindNext(dirinfo) <> 0); +end; + +procedure TNewService.DataAbstractServiceBeforeGetDatasetData( + aSender: TObject; const aDataset: IDADataset; + const aIncludeSchema: Boolean; const aMaxRecords: Integer); +begin + if SameText(aDataset.LogicalName, dtComboDataset.LogicalName) then + FillComboDataset((dtComboDataset as IDAEditableDataset)) + else if SameText(aDataset.LogicalName, dtWindowsDir.LogicalName) then + FillWinDirDataset((dtWindowsDir as IDAEditableDataset)); +end; + +procedure TNewService.DataAbstractServiceValidateDatasetAccess( + Sender: TObject; const aConnection: IDAConnection; + const aDatasetName: string; const aParamNames: array of string; + const aParamValues: array of Variant; aSchema: TDASchema; + var Allowed: Boolean); + + procedure FillParameters(aDataSet: TDACDSDataTable); + var + i: integer; + begin + for i := Low(aParamNames) to High(aParamNames) do + aDataset.ParamByName(aParamNames[i]).Value := aParamValues[i]; + end; + +begin + if SameText(aDatasetName, dtComboDataset.LogicalName) then + FillParameters(dtComboDataset) + else if SameText(aDatasetName, dtWindowsDir.LogicalName) then + FillParameters(dtWindowsDir) +end; + +initialization + TROClassFactory.Create('NewService', Create_NewService, TNewService_Invoker); + +finalization + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/RODLFILE.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/RODLFILE.res new file mode 100644 index 0000000..066b5bf Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Memory Data/RODLFILE.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetail.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetail.Sample.html new file mode 100644 index 0000000..0c9d025 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetail.Sample.html @@ -0,0 +1,30 @@ + + + + + + + + + +

+ Multi Level Detail Sample +

+ + +

Purpose

+ +

+ This sample shows how to implement master/detail/detail updates as simply as possible.
+

+ +

Examine the Code

+ + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetail.bdsgroup b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetail.bdsgroup new file mode 100644 index 0000000..14cde7c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetail.bdsgroup @@ -0,0 +1,20 @@ + + + + + + + + + + + + + MultiLevelDetailServer.bdsproj + MultiLevelDetailClient.bdsproj + MultiLevelDetailServer.exe MultiLevelDetailClient.exe + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetail.bpg b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetail.bpg new file mode 100644 index 0000000..514c8c0 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetail.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = MultiLevelDetailServer.exe MultiLevelDetailClient.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +MultiLevelDetailServer.exe: MultiLevelDetailServer.dpr + $(DCC) + +MultiLevelDetailClient.exe: MultiLevelDetailClient.dpr + $(DCC) + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetail.groupproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetail.groupproj new file mode 100644 index 0000000..0249223 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetail.groupproj @@ -0,0 +1,40 @@ + + + {a8aee872-234f-4970-aa60-4963b9b3acfb} + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient.bdsproj new file mode 100644 index 0000000..98918df --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + MultiLevelDetailClient.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient.dpr new file mode 100644 index 0000000..c6d38c4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient.dpr @@ -0,0 +1,18 @@ +program MultiLevelDetailClient; + +uses + uROComInit, + Forms, + MidasLib, + MultiLevelDetailClient_Main in 'MultiLevelDetailClient_Main.pas' {MultiLevelDetailClient_MainForm}, + MultiLevelDetailClient_Data in 'MultiLevelDetailClient_Data.pas' {MultiLevelDetailClient_DataModule: TDAClientDataModule}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'Multi Level Detail Client'; + Application.CreateForm(TMultiLevelDetailClient_DataModule, MultiLevelDetailClient_DataModule); + Application.CreateForm(TMultiLevelDetailClient_MainForm, MultiLevelDetailClient_MainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient.dproj new file mode 100644 index 0000000..a75f4ff --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient.dproj @@ -0,0 +1,75 @@ + + + {f33b19c1-5014-448b-8588-d80873810fe1} + MultiLevelDetailClient.dpr + Debug + AnyCPU + DCC32 + MultiLevelDetailClient.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + MultiLevelDetailClient.dpr + + + + + + + MainSource + + +
MultiLevelDetailClient_DataModule
+
+ +
MultiLevelDetailClient_MainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient.res new file mode 100644 index 0000000..da01de5 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient_Data.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient_Data.dfm new file mode 100644 index 0000000..cd7ca26 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient_Data.dfm @@ -0,0 +1,335 @@ +object MultiLevelDetailClient_DataModule: TMultiLevelDetailClient_DataModule + OldCreateOrder = True + Left = 124 + Top = 89 + Height = 300 + Width = 300 + object Channel: TROWinInetHTTPChannel + ServerLocators = <> + DispatchOptions = [] + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/BIN' + Left = 40 + Top = 8 + end + object Message: TROBinMessage + Left = 40 + Top = 52 + end + object RemoteService: TRORemoteService + Message = Message + Channel = Channel + ServiceName = 'MultiLevelDetailService' + Left = 40 + Top = 96 + end + object DataStreamer: TDABinDataStreamer + Left = 40 + Top = 140 + end + object RemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RemoteService + GetDataCall.RemoteService = RemoteService + UpdateDataCall.RemoteService = RemoteService + GetScriptsCall.RemoteService = RemoteService + RemoteService = RemoteService + DataStreamer = DataStreamer + Left = 40 + Top = 184 + end + object tbl_Categories: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CategoryID' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CategoryName' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Description' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Picture' + DataType = datBlob + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = RemoteDataAdapter + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Categories' + IndexDefs = <> + Left = 161 + Top = 131 + end + object ds_Categories: TDADataSource + DataTable = tbl_Categories + Left = 133 + Top = 131 + end + object tbl_Products: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ProductID' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ProductName' + DataType = datWideString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SupplierID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CategoryID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'QuantityPerUnit' + DataType = datWideString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UnitPrice' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UnitsInStock' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UnitsOnOrder' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ReorderLevel' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Discontinued' + DataType = datBoolean + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = < + item + Name = 'CategoryID' + DataType = datInteger + BlobType = dabtUnknown + ParamType = daptInput + end> + MasterParamsMappings.Strings = ( + 'CategoryID=CategoryID') + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = RemoteDataAdapter + ReadOnly = False + MasterSource = ds_Categories + MasterFields = 'CategoryID' + DetailFields = 'CategoryID' + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Products' + IndexDefs = <> + Left = 161 + Top = 177 + end + object ds_Products: TDADataSource + DataTable = tbl_Products + Left = 133 + Top = 177 + end + object tbl_OrderDetails: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'OrderID' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ProductID' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UnitPrice' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Quantity' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Discount' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = < + item + Name = 'ProductID' + DataType = datInteger + BlobType = dabtUnknown + ParamType = daptInput + end> + MasterParamsMappings.Strings = ( + 'ProductID=ProductID') + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = RemoteDataAdapter + ReadOnly = False + MasterSource = ds_Products + MasterFields = 'ProductID' + DetailFields = 'ProductID' + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'OrderDetails' + IndexDefs = <> + Left = 161 + Top = 86 + end + object ds_OrderDetails: TDADataSource + DataTable = tbl_OrderDetails + Left = 133 + Top = 86 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient_Data.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient_Data.pas new file mode 100644 index 0000000..8340f03 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient_Data.pas @@ -0,0 +1,38 @@ +unit MultiLevelDetailClient_Data; + +interface + +uses + {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROWinInetHTTPChannel, + {Data Abstract:} uDADataTable, uDABINAdapter, uDAInterfaces, + uDADataStreamer, uDARemoteDataAdapter, uDAScriptingProvider, + uDACDSDataTable; + +type + TMultiLevelDetailClient_DataModule = class(TDataModule) + Message: TROBinMessage; + Channel: TROWinInetHTTPChannel; + RemoteService: TRORemoteService; + DataStreamer: TDABinDataStreamer; + RemoteDataAdapter: TDARemoteDataAdapter; + tbl_Categories: TDACDSDataTable; + ds_Categories: TDADataSource; + tbl_Products: TDACDSDataTable; + ds_Products: TDADataSource; + tbl_OrderDetails: TDACDSDataTable; + ds_OrderDetails: TDADataSource; + private + { Private declarations } + public + { Public declarations } + end; + +var + MultiLevelDetailClient_DataModule: TMultiLevelDetailClient_DataModule; + +implementation + +{$R *.dfm} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient_Main.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient_Main.dfm new file mode 100644 index 0000000..0881615 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient_Main.dfm @@ -0,0 +1,105 @@ +object MultiLevelDetailClient_MainForm: TMultiLevelDetailClient_MainForm + Left = 138 + Top = 151 + AutoScroll = False + Caption = 'Multi Level Detail Client' + ClientHeight = 380 + ClientWidth = 457 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object Splitter1: TSplitter + Left = 0 + Top = 252 + Width = 457 + Height = 8 + Cursor = crVSplit + Align = alBottom + Beveled = True + end + object Splitter2: TSplitter + Left = 0 + Top = 124 + Width = 457 + Height = 8 + Cursor = crVSplit + Align = alBottom + Beveled = True + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 457 + Height = 27 + Align = alTop + BevelOuter = bvNone + TabOrder = 0 + object FillButton: TButton + Left = 9 + Top = 3 + Width = 75 + Height = 22 + Caption = 'Fill' + TabOrder = 0 + OnClick = FillButtonClick + end + object UpdateButton: TButton + Left = 147 + Top = 3 + Width = 75 + Height = 22 + Caption = 'Update' + TabOrder = 1 + OnClick = UpdateButtonClick + end + end + object gOrderDetails: TDBGrid + Left = 0 + Top = 260 + Width = 457 + Height = 120 + Align = alBottom + DataSource = MultiLevelDetailClient_DataModule.ds_OrderDetails + TabOrder = 1 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object gProducts: TDBGrid + Left = 0 + Top = 132 + Width = 457 + Height = 120 + Align = alBottom + DataSource = MultiLevelDetailClient_DataModule.ds_Products + TabOrder = 2 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object gCategories: TDBGrid + Left = 0 + Top = 27 + Width = 457 + Height = 97 + Align = alClient + DataSource = MultiLevelDetailClient_DataModule.ds_Categories + TabOrder = 3 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient_Main.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient_Main.pas new file mode 100644 index 0000000..9eeba1e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailClient_Main.pas @@ -0,0 +1,49 @@ +unit MultiLevelDetailClient_Main; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROClientIntf, uRORemoteService, uROBinMessage, ExtCtrls, + Grids, DBGrids; + +type + TMultiLevelDetailClient_MainForm = class(TForm) + Panel1: TPanel; + FillButton: TButton; + gOrderDetails: TDBGrid; + Splitter1: TSplitter; + gProducts: TDBGrid; + Splitter2: TSplitter; + gCategories: TDBGrid; + UpdateButton: TButton; + procedure FillButtonClick(Sender: TObject); + procedure UpdateButtonClick(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + MultiLevelDetailClient_MainForm: TMultiLevelDetailClient_MainForm; + +implementation + +uses + MultiLevelDetailClient_Data; + +{$R *.dfm} + +procedure TMultiLevelDetailClient_MainForm.FillButtonClick(Sender: TObject); +begin + MultiLevelDetailClient_DataModule.tbl_Categories.Open; +end; + +procedure TMultiLevelDetailClient_MainForm.UpdateButtonClick(Sender: TObject); +begin + MultiLevelDetailClient_DataModule.tbl_Categories.ApplyUpdates; +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailLibrary.RODL b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailLibrary.RODL new file mode 100644 index 0000000..d1e6d7a --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailLibrary.RODL @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailLibrary_Intf.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailLibrary_Intf.pas new file mode 100644 index 0000000..1a6c1d6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailLibrary_Intf.pas @@ -0,0 +1,76 @@ +unit MultiLevelDetailLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROClasses, uROClient, uROTypes, uROClientIntf, + {Used RODLs:} DataAbstract4_Intf; + +const + { Library ID } + LibraryUID = '{C36F2B70-713D-4D12-A330-097CEF6EBDDB}'; + + { Service Interface ID's } + IMultiLevelDetailService_IID : TGUID = '{F2D11C9C-E4E6-4732-8692-0CAC26018C78}'; + + { Event ID's } + +type + { Forward declarations } + IMultiLevelDetailService = interface; + + + + + { IMultiLevelDetailService } + IMultiLevelDetailService = interface(IDataAbstractService) + ['{F2D11C9C-E4E6-4732-8692-0CAC26018C78}'] + end; + + { CoMultiLevelDetailService } + CoMultiLevelDetailService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMultiLevelDetailService; + end; + + { TMultiLevelDetailService_Proxy } + TMultiLevelDetailService_Proxy = class(TDataAbstractService_Proxy, IMultiLevelDetailService) + protected + function __GetInterfaceName:string; override; + + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uRORes; + +{ CoMultiLevelDetailService } + +class function CoMultiLevelDetailService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMultiLevelDetailService; +begin + result := TMultiLevelDetailService_Proxy.Create(aMessage, aTransportChannel); +end; + +function TMultiLevelDetailService_Proxy.__GetInterfaceName:string; +begin + result := 'MultiLevelDetailService'; +end; + +initialization + RegisterProxyClass(IMultiLevelDetailService_IID, TMultiLevelDetailService_Proxy); + + +finalization + UnregisterProxyClass(IMultiLevelDetailService_IID); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailLibrary_Invk.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailLibrary_Invk.pas new file mode 100644 index 0000000..111a642 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailLibrary_Invk.pas @@ -0,0 +1,32 @@ +unit MultiLevelDetailLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Used RODL Intf's:} DataAbstract4_Intf, + {Used RODL Invk's:} DataAbstract4_Invk, + {Generated:} MultiLevelDetailLibrary_Intf; + +type + TMultiLevelDetailService_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer.bdsproj new file mode 100644 index 0000000..0a3e952 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + MultiLevelDetailServer.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer.dpr new file mode 100644 index 0000000..cd8a8ab --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer.dpr @@ -0,0 +1,30 @@ +program MultiLevelDetailServer; + +{#ROGEN:MultiLevelDetailLibrary.RODL} // RemObjects SDK: Careful, do not remove! + +uses + uROComInit, + uROComboService, + Forms, + MultiLevelDetailServer_Main in 'MultiLevelDetailServer_Main.pas' {MultiLevelDetailServer_MainForm}, + MultiLevelDetailService_Impl in 'MultiLevelDetailService_Impl.pas' {MultiLevelDetailService: TDARemoteService}, + MultiLevelDetailServer_Data in 'MultiLevelDetailServer_Data.pas' {MultiLevelDetailServer_DataModule: TDataModule}, + MultiLevelDetailLibrary_Intf in 'MultiLevelDetailLibrary_Intf.pas', + MultiLevelDetailLibrary_Invk in 'MultiLevelDetailLibrary_Invk.pas'; + +{$R *.res} +{$R RODLFile.res} + +begin + if ROStartService('MultiLevelDetail', 'MultiLevelDetail') then begin + ROService.CreateForm(TMultiLevelDetailServer_DataModule, MultiLevelDetailServer_DataModule); + ROService.Run; + Exit; + end; + + Application.Initialize; + Application.Title := 'Multi Level Detail Server'; + Application.CreateForm(TMultiLevelDetailServer_DataModule, MultiLevelDetailServer_DataModule); + Application.CreateForm(TMultiLevelDetailServer_MainForm, MultiLevelDetailServer_MainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer.dproj new file mode 100644 index 0000000..0cdcabd --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer.dproj @@ -0,0 +1,80 @@ + + + {b4f8c45f-3323-46d4-ba1a-8642a93d1e6e} + MultiLevelDetailServer.dpr + Debug + AnyCPU + DCC32 + MultiLevelDetailServer.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + MultiLevelDetailServer.dpr + + + + + + + MainSource + + + + +
MultiLevelDetailServer_DataModule
+
+ +
MultiLevelDetailServer_MainForm
+
+ +
MultiLevelDetailService
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer.res new file mode 100644 index 0000000..7455d6e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer_Data.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer_Data.dfm new file mode 100644 index 0000000..549ecae --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer_Data.dfm @@ -0,0 +1,64 @@ +object MultiLevelDetailServer_DataModule: TMultiLevelDetailServer_DataModule + OldCreateOrder = False + OnCreate = DataModuleCreate + Left = 362 + Top = 208 + Height = 207 + Width = 352 + object Server: TROIndyHTTPServer + Dispatchers = < + item + Name = 'Message' + Message = Message + Enabled = True + PathInfo = 'Bin' + end> + Port = 8099 + Left = 32 + Top = 8 + end + object Message: TROBinMessage + Left = 32 + Top = 56 + end + object ConnectionManager: TDAConnectionManager + Connections = < + item + Name = 'Northwind' + ConnectionString = + 'ADO?AuxDriver=SQLOLEDB.1;Server=localhost;Database=Northwind;Int' + + 'egrated Security=SSPI' + Description = 'Microsoft SQL Server 2000, localhost' + Default = True + Tag = 0 + end> + DriverManager = DriverManager + PoolingEnabled = True + Left = 136 + Top = 56 + end + object DriverManager: TDADriverManager + DriverDirectory = '%SYSTEM%\' + TraceActive = False + TraceFlags = [] + Left = 136 + Top = 10 + end + object ADODriver: TDAADODriver + Left = 256 + Top = 8 + end + object IBXDriver: TDAIBXDriver + Left = 256 + Top = 56 + end + object DataDictionary: TDADataDictionary + Fields = <> + Left = 32 + Top = 104 + end + object SessionManager: TROInMemorySessionManager + Left = 136 + Top = 104 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer_Data.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer_Data.pas new file mode 100644 index 0000000..8dd6a39 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer_Data.pas @@ -0,0 +1,42 @@ +unit MultiLevelDetailServer_Data; + +interface + +uses + SysUtils, Classes, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, + uROBinMessage, uROIndyHTTPServer, + uDAEngine, uDADriverManager, uDAClasses, uROSessions, + uDAIBXDriver, uDAADODriver, uROIndyTCPServer; + +type + TMultiLevelDetailServer_DataModule = class(TDataModule) + Server: TROIndyHTTPServer; + Message: TROBinMessage; + ConnectionManager: TDAConnectionManager; + DriverManager: TDADriverManager; + ADODriver: TDAADODriver; + IBXDriver: TDAIBXDriver; + SessionManager: TROInMemorySessionManager; + DataDictionary: TDADataDictionary; + + procedure DataModuleCreate(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + MultiLevelDetailServer_DataModule: TMultiLevelDetailServer_DataModule; + +implementation + +{$R *.dfm} + +procedure TMultiLevelDetailServer_DataModule.DataModuleCreate(Sender: TObject); +begin + Server.Active := true; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer_Main.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer_Main.dfm new file mode 100644 index 0000000..0e830ae --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer_Main.dfm @@ -0,0 +1,25 @@ +object MultiLevelDetailServer_MainForm: TMultiLevelDetailServer_MainForm + Left = 372 + Top = 277 + BorderStyle = bsDialog + Caption = 'Multi Level Detail Server' + ClientHeight = 64 + ClientWidth = 277 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton + Left = 34 + Top = 8 + Width = 212 + Height = 48 + Cursor = crHandPoint + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer_Main.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer_Main.pas new file mode 100644 index 0000000..bf43bb4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailServer_Main.pas @@ -0,0 +1,25 @@ +unit MultiLevelDetailServer_Main; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uDAPoweredByDataAbstractButton, uROPoweredByRemObjectsButton; + +type + TMultiLevelDetailServer_MainForm = class(TForm) + DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton; + private + { Private declarations } + public + { Public declarations } + end; + +var + MultiLevelDetailServer_MainForm: TMultiLevelDetailServer_MainForm; + +implementation + +{$R *.dfm} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailService_Impl.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailService_Impl.dfm new file mode 100644 index 0000000..4185ec4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailService_Impl.dfm @@ -0,0 +1,390 @@ +object MultiLevelDetailService: TMultiLevelDetailService + OldCreateOrder = True + SessionManager = MultiLevelDetailServer_DataModule.SessionManager + AcquireConnection = True + ServiceSchema = Schema + ServiceDataStreamer = DataStreamer + ExportedDataTables = <> + Left = 357 + Top = 213 + Height = 212 + Width = 216 + object DataStreamer: TDABinDataStreamer + Left = 32 + Top = 8 + end + object Schema: TDASchema + ConnectionManager = MultiLevelDetailServer_DataModule.ConnectionManager + DataDictionary = MultiLevelDetailServer_DataModule.DataDictionary + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'Northwind' + TargetTable = 'Categories' + SQL = + 'SELECT '#10' CategoryID, CategoryName, Description, Picture'#10' FRO' + + 'M'#10' Categories' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CategoryID' + TableField = 'CategoryID' + end + item + DatasetField = 'CategoryName' + TableField = 'CategoryName' + end + item + DatasetField = 'Description' + TableField = 'Description' + end + item + DatasetField = 'Picture' + TableField = 'Picture' + end> + end> + Name = 'Categories' + Fields = < + item + Name = 'CategoryID' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CategoryName' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Description' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Picture' + DataType = datBlob + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CategoryID' + DataType = datInteger + BlobType = dabtUnknown + ParamType = daptInput + end> + Statements = < + item + Connection = 'Northwind' + TargetTable = 'Products' + SQL = + 'SELECT '#10' ProductID, ProductName, SupplierID, CategoryID, Quan' + + 'tityPerUnit, '#10' UnitPrice, UnitsInStock, UnitsOnOrder, Reorder' + + 'Level, '#10' Discontinued'#10'FROM'#10' Products'#10'WHERE'#10' [CategoryID' + + '] = :CategoryID'#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ProductID' + TableField = 'ProductID' + end + item + DatasetField = 'ProductName' + TableField = 'ProductName' + end + item + DatasetField = 'SupplierID' + TableField = 'SupplierID' + end + item + DatasetField = 'CategoryID' + TableField = 'CategoryID' + end + item + DatasetField = 'QuantityPerUnit' + TableField = 'QuantityPerUnit' + end + item + DatasetField = 'UnitPrice' + TableField = 'UnitPrice' + end + item + DatasetField = 'UnitsInStock' + TableField = 'UnitsInStock' + end + item + DatasetField = 'UnitsOnOrder' + TableField = 'UnitsOnOrder' + end + item + DatasetField = 'ReorderLevel' + TableField = 'ReorderLevel' + end + item + DatasetField = 'Discontinued' + TableField = 'Discontinued' + end> + end> + Name = 'Products' + Fields = < + item + Name = 'ProductID' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ProductName' + DataType = datWideString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SupplierID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CategoryID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'QuantityPerUnit' + DataType = datWideString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UnitPrice' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UnitsInStock' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UnitsOnOrder' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ReorderLevel' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Discontinued' + DataType = datBoolean + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'ProductID' + DataType = datInteger + BlobType = dabtUnknown + ParamType = daptInput + end> + Statements = < + item + Connection = 'Northwind' + TargetTable = 'Order Details' + SQL = + 'SELECT '#10' OrderID, ProductID, UnitPrice, Quantity, Discount'#10' ' + + 'FROM'#10' [Order Details]'#10'WHERE'#10' ProductID = :ProductID'#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'OrderID' + TableField = 'OrderID' + end + item + DatasetField = 'ProductID' + TableField = 'ProductID' + end + item + DatasetField = 'UnitPrice' + TableField = 'UnitPrice' + end + item + DatasetField = 'Quantity' + TableField = 'Quantity' + end + item + DatasetField = 'Discount' + TableField = 'Discount' + end> + end> + Name = 'OrderDetails' + Fields = < + item + Name = 'OrderID' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ProductID' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UnitPrice' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Quantity' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Discount' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = <> + RelationShips = < + item + Name = 'FK_Products_Categories' + MasterDatasetName = 'Categories' + MasterFields = 'CategoryID' + DetailDatasetName = 'Products' + DetailFields = 'CategoryID' + end> + UpdateRules = <> + Left = 32 + Top = 56 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailService_Impl.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailService_Impl.pas new file mode 100644 index 0000000..43f3d54 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/MultiLevelDetailService_Impl.pas @@ -0,0 +1,37 @@ +unit MultiLevelDetailService_Impl; + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Data Abstract:} uDAClasses, uDADataTable, uDABinAdapter, uDAInterfaces, uDADataStreamer, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} MultiLevelDetailLibrary_Intf; + +type + { TMultiLevelDetailService } + TMultiLevelDetailService = class(TDataAbstractService, IMultiLevelDetailService) + DataStreamer: TDABinDataStreamer; + Schema: TDASchema; + private + protected + { IMultiLevelDetailService methods } + end; + +implementation + +{$R *.dfm} +uses + {Generated:} MultiLevelDetailLibrary_Invk, MultiLevelDetailServer_Data; + +procedure Create_MultiLevelDetailService(out anInstance: IUnknown); +begin + anInstance := TMultiLevelDetailService.Create(nil); +end; + +initialization + TROClassFactory.Create('MultiLevelDetailService', Create_MultiLevelDetailService, TMultiLevelDetailService_Invoker); +finalization +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/RODLFILE.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/RODLFILE.res new file mode 100644 index 0000000..008a4f9 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Multi Level Detail/RODLFILE.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/NewService_Impl.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/NewService_Impl.dfm new file mode 100644 index 0000000..1007367 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/NewService_Impl.dfm @@ -0,0 +1,727 @@ +object NewService: TNewService + OldCreateOrder = True + AcquireConnection = True + ConnectionName = 'ADO' + ServiceSchema = Schema + ServiceDataStreamer = BinAdapter + ExportedDataTables = <> + Left = 372 + Top = 283 + Height = 364 + Width = 436 + object BinAdapter: TDABinDataStreamer + Left = 32 + Top = 8 + end + object Schema: TDASchema + ConnectionManager = QuantumGrid4_ServerDataModule.ConnectionManager + DataDictionary = DataDictionary + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Customers' + SQL = + 'SELECT '#10' CustomerID, CompanyName, ContactName, ContactTitle, ' + + #10' Address, City, Region, PostalCode, Country, Phone, '#10' Fax' + + #10' FROM'#10' Customers' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'CompanyName' + TableField = 'CompanyName' + end + item + DatasetField = 'ContactName' + TableField = 'ContactName' + end + item + DatasetField = 'ContactTitle' + TableField = 'ContactTitle' + end + item + DatasetField = 'Address' + TableField = 'Address' + end + item + DatasetField = 'City' + TableField = 'City' + end + item + DatasetField = 'Region' + TableField = 'Region' + end + item + DatasetField = 'PostalCode' + TableField = 'PostalCode' + end + item + DatasetField = 'Country' + TableField = 'Country' + end + item + DatasetField = 'Phone' + TableField = 'Phone' + end + item + DatasetField = 'Fax' + TableField = 'Fax' + end> + end> + Name = 'Customers' + Fields = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CompanyName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactName' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactTitle' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Address' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Region' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Country' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Phone' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Fax' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CustomerID' + DataType = datString + BlobType = dabtUnknown + ParamType = daptInput + end> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Orders' + SQL = + 'SELECT '#10' OrderID, CustomerID, EmployeeID, OrderDate, Required' + + 'Date, '#10' ShippedDate, ShipVia, Freight, ShipName, ShipAddress,' + + ' '#10' ShipCity, ShipRegion, ShipPostalCode, ShipCountry'#10' FROM'#10' ' + + ' Orders'#10' WHERE CustomerID=:CustomerID' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'OrderID' + TableField = 'OrderID' + end + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'EmployeeID' + TableField = 'EmployeeID' + end + item + DatasetField = 'OrderDate' + TableField = 'OrderDate' + end + item + DatasetField = 'RequiredDate' + TableField = 'RequiredDate' + end + item + DatasetField = 'ShippedDate' + TableField = 'ShippedDate' + end + item + DatasetField = 'ShipVia' + TableField = 'ShipVia' + end + item + DatasetField = 'Freight' + TableField = 'Freight' + end + item + DatasetField = 'ShipName' + TableField = 'ShipName' + end + item + DatasetField = 'ShipAddress' + TableField = 'ShipAddress' + end + item + DatasetField = 'ShipCity' + TableField = 'ShipCity' + end + item + DatasetField = 'ShipRegion' + TableField = 'ShipRegion' + end + item + DatasetField = 'ShipPostalCode' + TableField = 'ShipPostalCode' + end + item + DatasetField = 'ShipCountry' + TableField = 'ShipCountry' + end> + end> + Name = 'Orders' + Fields = < + item + Name = 'OrderID' + DataType = datAutoInc + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EmployeeID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OrderDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RequiredDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShippedDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipVia' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Freight' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipAddress' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCity' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipRegion' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipPostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCountry' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Orders' + SQL = + 'SELECT '#10' OrderID, CustomerID, EmployeeID, OrderDate, Required' + + 'Date, '#10' ShippedDate, ShipVia, Freight, ShipName, ShipAddress,' + + ' '#10' ShipCity, ShipRegion, ShipPostalCode, ShipCountry'#10' FROM'#10' ' + + ' Orders' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'OrderID' + TableField = 'OrderID' + end + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'EmployeeID' + TableField = 'EmployeeID' + end + item + DatasetField = 'OrderDate' + TableField = 'OrderDate' + end + item + DatasetField = 'RequiredDate' + TableField = 'RequiredDate' + end + item + DatasetField = 'ShippedDate' + TableField = 'ShippedDate' + end + item + DatasetField = 'ShipVia' + TableField = 'ShipVia' + end + item + DatasetField = 'Freight' + TableField = 'Freight' + end + item + DatasetField = 'ShipName' + TableField = 'ShipName' + end + item + DatasetField = 'ShipAddress' + TableField = 'ShipAddress' + end + item + DatasetField = 'ShipCity' + TableField = 'ShipCity' + end + item + DatasetField = 'ShipRegion' + TableField = 'ShipRegion' + end + item + DatasetField = 'ShipPostalCode' + TableField = 'ShipPostalCode' + end + item + DatasetField = 'ShipCountry' + TableField = 'ShipCountry' + end> + end> + Name = 'AllOrders' + Fields = < + item + Name = 'OrderID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EmployeeID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OrderDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RequiredDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShippedDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipVia' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Freight' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipAddress' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCity' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipRegion' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipPostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCountry' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = <> + RelationShips = <> + UpdateRules = <> + Left = 32 + Top = 56 + end + object DataDictionary: TDADataDictionary + Fields = <> + Left = 33 + Top = 104 + end + object bsCustomers: TDABusinessProcessor + Schema = Schema + ReferencedDataset = 'Customers' + ProcessorOptions = [poAutoGenerateInsert, poAutoGenerateUpdate, poAutoGenerateDelete] + UpdateMode = updWhereKeyOnly + Left = 64 + Top = 176 + end + object bsOrders: TDABusinessProcessor + Schema = Schema + ReferencedDataset = 'Orders' + ProcessorOptions = [poAutoGenerateInsert, poAutoGenerateUpdate, poAutoGenerateDelete] + UpdateMode = updWhereKeyOnly + Left = 160 + Top = 176 + end + object bsAllOrders: TDABusinessProcessor + Schema = Schema + ReferencedDataset = 'AllOrders' + ProcessorOptions = [poAutoGenerateInsert, poAutoGenerateUpdate, poAutoGenerateDelete] + UpdateMode = updWhereKeyOnly + Left = 240 + Top = 176 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/NewService_Impl.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/NewService_Impl.pas new file mode 100644 index 0000000..6ee8bac --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/NewService_Impl.pas @@ -0,0 +1,84 @@ +unit NewService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} QuantumGrid4Library_Intf, uDAScriptingProvider, uDABusinessProcessor, + uDAClasses, uDADataStreamer, uDABinAdapter; + +const + { Dataset names for Schema } + ds_Customers = 'Customers'; + ds_Orders = 'Orders'; + ds_AllOrders = 'AllOrders'; + +type + { TNewService } + TNewService = class(TDataAbstractService, INewService) + BinAdapter: TDABinDataStreamer; + bsCustomers: TDABusinessProcessor; + bsOrders: TDABusinessProcessor; + Schema: TDASchema; + DataDictionary: TDADataDictionary; + bsAllOrders: TDABusinessProcessor; + private + protected + { INewService methods } + function GetCustomers: Binary; + function UpdateCustomers(const IncomingData: Binary): Binary; + function GetOrders(const CustomerID: String): Binary; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} QuantumGrid4Library_Invk, QuantumGrid4_ServerData, uDAInterfaces; + +procedure Create_NewService(out anInstance : IUnknown); +begin + anInstance := TNewService.Create(NIL); +end; + + +{ TNewService } + + +function TNewService.GetCustomers: Binary; +begin + result := Binary.Create; + BinAdapter.Initialize(result, aiWrite); + BinAdapter.WriteDataset(Schema.NewDataset(Connection, ds_Customers), [woRows]); + BinAdapter.Finalize; +end; + +function TNewService.GetOrders(const CustomerID: String): Binary; +begin + result := Binary.Create; + BinAdapter.Initialize(result, aiWrite); + BinAdapter.WriteDataset(Schema.NewDataset(Connection, ds_Orders,['CustomerID'], [CustomerID]), [woRows]); + BinAdapter.Finalize; +end; + +function TNewService.UpdateCustomers(const IncomingData: Binary): Binary; +begin + result := UpdateData(IncomingData); +end; + +initialization + TROClassFactory.Create('NewService', Create_NewService, TNewService_Invoker); + +finalization + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4.Sample.html new file mode 100644 index 0000000..fb68fed --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4.Sample.html @@ -0,0 +1,58 @@ + + + + + + + + + +

+ QuantumGrid4 +

+ + +

Purpose

+ +

+ This example demonstrates how to use the QuantumGrid4 (or QuantumGrid5) + product from Developer Express (contact www.devexpress.com. for + licensing + information if you do not already have the product). +

+

+   +

+

+ Things to look at in QuantumGrid4_server.exe +

+

+ The most important methods in the host application are in the NewService_Impl + unit: +

+ +

+ Things to look at in QuantumGrid4_client.exe +

+

+ There's only two lines of code in QuantumGrid4_ClientMain, one for each button. +

+

+ Have a look at QuantumGrid4_ClientData though. This contains code that + saves references to customers previously accessed, thus avoiding re-fetching details. +

+

+   +

+ + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4.bdsgroup b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4.bdsgroup new file mode 100644 index 0000000..23846d8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4.bdsgroup @@ -0,0 +1,20 @@ + + + + + + + + + + + + + QuantumGrid4_Client.bdsproj + QuantumGrid4_server.bdsproj + QuantumGrid4_Client.exe QuantumGrid4_server.exe + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4.bpg b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4.bpg new file mode 100644 index 0000000..b2cc016 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = QuantumGrid4_Client.exe QuantumGrid4_server.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +QuantumGrid4_Client.exe: QuantumGrid4_Client.dpr + $(DCC) + +QuantumGrid4_server.exe: QuantumGrid4_server.dpr + $(DCC) + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4.groupproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4.groupproj new file mode 100644 index 0000000..abbfa8b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4.groupproj @@ -0,0 +1,40 @@ + + + {91a9ff88-032e-4329-a4e4-75d3d762f4d9} + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4Library.rodl b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4Library.rodl new file mode 100644 index 0000000..be38352 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4Library.rodl @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4Library_Intf.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4Library_Intf.pas new file mode 100644 index 0000000..1f01454 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4Library_Intf.pas @@ -0,0 +1,131 @@ +unit QuantumGrid4Library_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROClasses, uROClient, uROTypes, uROClientIntf, + {Used RODLs:} DataAbstract4_Intf; + +const + { Library ID } + LibraryUID = '{7EF63C27-FB17-4F10-985E-92BAF0E3E619}'; + + { Service Interface ID's } + INewService_IID : TGUID = '{E4E6FDE4-2542-4554-B59A-438E23439111}'; + + { Event ID's } + +type + { Forward declarations } + INewService = interface; + + + + + { INewService } + INewService = interface(IDataAbstractService) + ['{E4E6FDE4-2542-4554-B59A-438E23439111}'] + function GetCustomers: Binary; + function UpdateCustomers(const IncomingData: Binary): Binary; + function GetOrders(const CustomerID: String): Binary; + end; + + { CoNewService } + CoNewService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): INewService; + end; + + { TNewService_Proxy } + TNewService_Proxy = class(TDataAbstractService_Proxy, INewService) + protected + function __GetInterfaceName:string; override; + + function GetCustomers: Binary; + function UpdateCustomers(const IncomingData: Binary): Binary; + function GetOrders(const CustomerID: String): Binary; + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uRORes; + +{ CoNewService } + +class function CoNewService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): INewService; +begin + result := TNewService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TNewService_Proxy } + +function TNewService_Proxy.__GetInterfaceName:string; +begin + result := 'NewService'; +end; + +function TNewService_Proxy.GetCustomers: Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'QuantumGrid4Library', __InterfaceName, 'GetCustomers'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.FreeStream; + end +end; + +function TNewService_Proxy.UpdateCustomers(const IncomingData: Binary): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'QuantumGrid4Library', __InterfaceName, 'UpdateCustomers'); + __Message.Write('IncomingData', TypeInfo(Binary), IncomingData, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.FreeStream; + end +end; + +function TNewService_Proxy.GetOrders(const CustomerID: String): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'QuantumGrid4Library', __InterfaceName, 'GetOrders'); + __Message.Write('CustomerID', TypeInfo(String), CustomerID, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.FreeStream; + end +end; + +initialization + RegisterProxyClass(INewService_IID, TNewService_Proxy); + + +finalization + UnregisterProxyClass(INewService_IID); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4Library_Invk.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4Library_Invk.pas new file mode 100644 index 0000000..23590ae --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4Library_Invk.pas @@ -0,0 +1,117 @@ +unit QuantumGrid4Library_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Used RODL Intf's:} DataAbstract4_Intf, + {Used RODL Invk's:} DataAbstract4_Invk, + {Generated:} QuantumGrid4Library_Intf; + +type + TNewService_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + procedure Invoke_GetCustomers(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_UpdateCustomers(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetOrders(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TNewService_Invoker } + +procedure TNewService_Invoker.Invoke_GetCustomers(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetCustomers: Binary; } +var + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + lResult := (__Instance as INewService).GetCustomers; + + __Message.InitializeResponseMessage(__Transport, 'QuantumGrid4Library', 'NewService', 'GetCustomersResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TNewService_Invoker.Invoke_UpdateCustomers(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function UpdateCustomers(const IncomingData: Binary): Binary; } +var + IncomingData: Binary; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + IncomingData := nil; + lResult := nil; + try + __Message.Read('IncomingData', TypeInfo(Binary), IncomingData, []); + + lResult := (__Instance as INewService).UpdateCustomers(IncomingData); + + __Message.InitializeResponseMessage(__Transport, 'QuantumGrid4Library', 'NewService', 'UpdateCustomersResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(IncomingData); + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TNewService_Invoker.Invoke_GetOrders(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetOrders(const CustomerID: String): Binary; } +var + CustomerID: String; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('CustomerID', TypeInfo(String), CustomerID, []); + + lResult := (__Instance as INewService).GetOrders(CustomerID); + + __Message.InitializeResponseMessage(__Transport, 'QuantumGrid4Library', 'NewService', 'GetOrdersResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_Client.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_Client.bdsproj new file mode 100644 index 0000000..9f1d6d4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_Client.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + QuantumGrid4_Client.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_Client.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_Client.dpr new file mode 100644 index 0000000..e5424b7 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_Client.dpr @@ -0,0 +1,17 @@ +program QuantumGrid4_Client; + +uses + uROComInit, + Forms, + QuantumGrid4_ClientMain in 'QuantumGrid4_ClientMain.pas' {QuantumGrid4_ClientMainForm}, + QuantumGrid4_ClientData in 'QuantumGrid4_ClientData.pas' {QuantumGrid4_ClientDataModule: TDAClientDataModule}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'QuantumGrid4 Client'; + Application.CreateForm(TQuantumGrid4_ClientDataModule, QuantumGrid4_ClientDataModule); + Application.CreateForm(TQuantumGrid4_ClientMainForm, QuantumGrid4_ClientMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_Client.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_Client.dproj new file mode 100644 index 0000000..d7eddb5 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_Client.dproj @@ -0,0 +1,75 @@ + + + {186a7cf2-9814-47d5-8eba-10b5c4756fee} + QuantumGrid4_Client.dpr + Debug + AnyCPU + DCC32 + QuantumGrid4_Client.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + QuantumGrid4_Client.dpr + + + + + + + MainSource + + +
QuantumGrid4_ClientDataModule
+
+ +
QuantumGrid4_ClientMainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_Client.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_Client.res new file mode 100644 index 0000000..da01de5 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_Client.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ClientData.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ClientData.dfm new file mode 100644 index 0000000..1ec161b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ClientData.dfm @@ -0,0 +1,308 @@ +object QuantumGrid4_ClientDataModule: TQuantumGrid4_ClientDataModule + OldCreateOrder = True + Left = 281 + Top = 207 + Height = 300 + Width = 437 + object ROChannel: TROWinInetHTTPChannel + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/BIN' + ServerLocators = <> + DispatchOptions = [] + Left = 40 + Top = 8 + end + object ROMessage: TROBinMessage + Left = 40 + Top = 52 + end + object RORemoteService: TRORemoteService + Message = ROMessage + Channel = ROChannel + ServiceName = 'NewService' + Left = 40 + Top = 96 + end + object bdsCustomers: TDABinDataStreamer + Left = 306 + Top = 49 + end + object dtCustomers: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + InPrimaryKey = True + end + item + Name = 'CompanyName' + DataType = datString + Size = 40 + end + item + Name = 'ContactName' + DataType = datString + Size = 30 + end + item + Name = 'ContactTitle' + DataType = datString + Size = 30 + end + item + Name = 'Address' + DataType = datString + Size = 60 + end + item + Name = 'City' + DataType = datString + Size = 15 + end + item + Name = 'Region' + DataType = datString + Size = 15 + end + item + Name = 'PostalCode' + DataType = datString + Size = 10 + end + item + Name = 'Country' + DataType = datString + Size = 15 + end + item + Name = 'Phone' + DataType = datString + Size = 24 + end + item + Name = 'Fax' + DataType = datString + Size = 24 + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rdaCustomers + AfterOpen = dtCustomersAfterOpen + AfterScroll = dtCustomersAfterScroll + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Customers' + IndexDefs = <> + Left = 192 + Top = 32 + end + object dsCustomers: TDADataSource + DataTable = dtCustomers + Left = 208 + Top = 48 + end + object dtOrders: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'OrderID' + DataType = datAutoInc + InPrimaryKey = True + end + item + Name = 'CustomerID' + DataType = datString + Size = 5 + end + item + Name = 'EmployeeID' + DataType = datInteger + end + item + Name = 'OrderDate' + DataType = datDateTime + end + item + Name = 'RequiredDate' + DataType = datDateTime + end + item + Name = 'ShippedDate' + DataType = datDateTime + end + item + Name = 'ShipVia' + DataType = datInteger + end + item + Name = 'Freight' + DataType = datFloat + end + item + Name = 'ShipName' + DataType = datString + Size = 40 + end + item + Name = 'ShipAddress' + DataType = datString + Size = 60 + end + item + Name = 'ShipCity' + DataType = datString + Size = 15 + end + item + Name = 'ShipRegion' + DataType = datString + Size = 15 + end + item + Name = 'ShipPostalCode' + DataType = datString + Size = 10 + end + item + Name = 'ShipCountry' + DataType = datString + Size = 15 + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rdaorders + MasterSource = dsCustomers + MasterRequestMappings.Strings = ( + 'CustomerID=CustomerID') + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Orders' + IndexDefs = <> + Left = 192 + Top = 120 + end + object dsOrders: TDADataSource + DataTable = dtOrders + Left = 208 + Top = 136 + end + object rdaCustomers: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetSchemaCall.MethodName = 'GetSchema' + GetSchemaCall.Params = < + item + Name = 'aFilter' + DataType = rtString + Flag = fIn + end + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetSchemaCall.Default = False + GetSchemaCall.IncomingSchemaParameter = 'Result' + GetSchemaCall.OutgoingFilterParameter = 'aFilter' + GetDataCall.RemoteService = RORemoteService + GetDataCall.MethodName = 'GetCustomers' + GetDataCall.Params = < + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end> + GetDataCall.Default = False + GetDataCall.IncomingDataParameter = 'Result' + UpdateDataCall.RemoteService = RORemoteService + UpdateDataCall.MethodName = 'UpdateCustomers' + UpdateDataCall.Params = < + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end + item + Name = 'IncomingData' + DataType = rtBinary + Flag = fIn + Value = Null + end> + UpdateDataCall.Default = False + UpdateDataCall.OutgoingDeltaParameter = 'IncomingData' + UpdateDataCall.IncomingDeltaParameter = 'Result' + GetScriptsCall.RemoteService = RORemoteService + RemoteService = RORemoteService + DataStreamer = bdsCustomers + Left = 278 + Top = 48 + end + object rdaorders: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetSchemaCall.MethodName = 'GetSchema' + GetSchemaCall.Params = < + item + Name = 'aFilter' + DataType = rtString + Flag = fIn + end + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetSchemaCall.Default = False + GetSchemaCall.IncomingSchemaParameter = 'Result' + GetSchemaCall.OutgoingFilterParameter = 'aFilter' + GetDataCall.RemoteService = RORemoteService + GetDataCall.MethodName = 'GetOrders' + GetDataCall.Params = < + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end + item + Name = 'CustomerID' + DataType = rtString + Flag = fIn + Value = Null + end> + GetDataCall.Default = False + GetDataCall.IncomingDataParameter = 'Result' + GetDataCall.OutgoingParamsParameter = 'CustomerID' + UpdateDataCall.RemoteService = RORemoteService + UpdateDataCall.MethodName = 'UpdateCustomers' + UpdateDataCall.Params = < + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end + item + Name = 'IncomingData' + DataType = rtBinary + Flag = fIn + Value = Null + end> + UpdateDataCall.Default = False + UpdateDataCall.OutgoingDeltaParameter = 'IncomingData' + UpdateDataCall.IncomingDeltaParameter = 'Result' + GetScriptsCall.RemoteService = RORemoteService + RemoteService = RORemoteService + DataStreamer = bdsOrders + Left = 277 + Top = 141 + end + object bdsOrders: TDABinDataStreamer + Left = 306 + Top = 141 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ClientData.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ClientData.pas new file mode 100644 index 0000000..936f947 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ClientData.pas @@ -0,0 +1,83 @@ +unit QuantumGrid4_ClientData; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROWinInetHTTPChannel, + {Data Abstract:} uDADataTable, uDABINAdapter, + uDACDSDataTable, uDAADODataTable, uDAScriptingProvider, + uDARemoteDataAdapter, uDADataStreamer, uDAInterfaces; + +type + TQuantumGrid4_ClientDataModule = class(TDataModule) + ROMessage: TROBinMessage; + ROChannel: TROWinInetHTTPChannel; + RORemoteService: TRORemoteService; + bdsCustomers: TDABinDataStreamer; + dtCustomers: TDACDSDataTable; + dsCustomers: TDADataSource; + dtOrders: TDACDSDataTable; + dsOrders: TDADataSource; + rdaCustomers: TDARemoteDataAdapter; + rdaorders: TDARemoteDataAdapter; + bdsOrders: TDABinDataStreamer; + procedure dtCustomersAfterScroll(DataTable: TDADataTable); + procedure dtCustomersAfterOpen(DataTable: TDADataTable); + private + fFetchedCustomers : TStringList; + + public + constructor Create(aOwner : TComponent); override; + destructor Destroy; override; + end; + +var + QuantumGrid4_ClientDataModule: TQuantumGrid4_ClientDataModule; + +implementation + + +{$R *.dfm} + +{ TClientDataModule } +constructor TQuantumGrid4_ClientDataModule.Create(aOwner: TComponent); +begin + inherited; + + fFetchedCustomers := TStringList.Create; + fFetchedCustomers.Sorted := TRUE; +end; + +destructor TQuantumGrid4_ClientDataModule.Destroy; +begin + fFetchedCustomers.Free; + inherited; +end; + +procedure TQuantumGrid4_ClientDataModule.dtCustomersAfterScroll( + DataTable: TDADataTable); +var lCustomerID : string; +begin + if dtCustomers.Fetching then Exit; + + with dtOrders do begin + lCustomerID := dtCustomers.FieldByName('CustomerID').AsString; + + if (fFetchedCustomers.IndexOf(lCustomerID)>=0) + then Exit + else fFetchedCustomers.Add(lCustomerID); + + rdaorders.GetDataCall.ParamByName('CustomerID').AsString := lCustomerID; + LoadFromRemoteSource; + end; +end; + +procedure TQuantumGrid4_ClientDataModule.dtCustomersAfterOpen(DataTable: TDADataTable); +begin + fFetchedCustomers.Clear; + dtCustomersAfterScroll(DataTable); +end; + +initialization + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ClientMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ClientMain.dfm new file mode 100644 index 0000000..7bb91bd --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ClientMain.dfm @@ -0,0 +1,190 @@ +object QuantumGrid4_ClientMainForm: TQuantumGrid4_ClientMainForm + Left = 125 + Top = 83 + AutoScroll = False + BorderWidth = 5 + Caption = 'QuantumGrid 4 Client' + ClientHeight = 447 + ClientWidth = 506 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object PageControl: TPageControl + Left = 0 + Top = 33 + Width = 506 + Height = 414 + ActivePage = TabSheet2 + Align = alClient + TabIndex = 0 + TabOrder = 0 + object TabSheet2: TTabSheet + Caption = 'Quantum Grid 4 - OnDemand' + ImageIndex = 1 + object cxGrid1: TcxGrid + Left = 0 + Top = 0 + Width = 498 + Height = 261 + Align = alClient + TabOrder = 0 + LookAndFeel.Kind = lfFlat + object viewCustomers: TcxGridDBTableView + NavigatorButtons.ConfirmDelete = False + DataController.DataSource = QuantumGrid4_ClientDataModule.dsCustomers + DataController.Summary.DefaultGroupSummaryItems = <> + DataController.Summary.FooterSummaryItems = <> + DataController.Summary.SummaryGroups = <> + object viewCustomersCustomerID: TcxGridDBColumn + DataBinding.FieldName = 'CustomerID' + end + object viewCustomersCompanyName: TcxGridDBColumn + DataBinding.FieldName = 'CompanyName' + end + object viewCustomersContactName: TcxGridDBColumn + DataBinding.FieldName = 'ContactName' + end + object viewCustomersContactTitle: TcxGridDBColumn + DataBinding.FieldName = 'ContactTitle' + end + object viewCustomersAddress: TcxGridDBColumn + DataBinding.FieldName = 'Address' + end + object viewCustomersCity: TcxGridDBColumn + DataBinding.FieldName = 'City' + end + object viewCustomersRegion: TcxGridDBColumn + DataBinding.FieldName = 'Region' + end + object viewCustomersPostalCode: TcxGridDBColumn + DataBinding.FieldName = 'PostalCode' + end + object viewCustomersCountry: TcxGridDBColumn + DataBinding.FieldName = 'Country' + end + object viewCustomersPhone: TcxGridDBColumn + DataBinding.FieldName = 'Phone' + end + object viewCustomersFax: TcxGridDBColumn + DataBinding.FieldName = 'Fax' + end + end + object viewOrders: TcxGridDBTableView + NavigatorButtons.ConfirmDelete = False + DataController.DataSource = QuantumGrid4_ClientDataModule.dsOrders + DataController.DetailKeyFieldNames = 'CustomerID' + DataController.KeyFieldNames = 'OrderID' + DataController.MasterKeyFieldNames = 'CustomerID' + DataController.Summary.DefaultGroupSummaryItems = <> + DataController.Summary.FooterSummaryItems = <> + DataController.Summary.SummaryGroups = <> + object viewOrdersOrderID: TcxGridDBColumn + DataBinding.FieldName = 'OrderID' + end + object viewOrdersCustomerID: TcxGridDBColumn + DataBinding.FieldName = 'CustomerID' + end + object viewOrdersEmployeeID: TcxGridDBColumn + DataBinding.FieldName = 'EmployeeID' + end + object viewOrdersOrderDate: TcxGridDBColumn + DataBinding.FieldName = 'OrderDate' + end + object viewOrdersRequiredDate: TcxGridDBColumn + DataBinding.FieldName = 'RequiredDate' + end + object viewOrdersShippedDate: TcxGridDBColumn + DataBinding.FieldName = 'ShippedDate' + end + object viewOrdersShipVia: TcxGridDBColumn + DataBinding.FieldName = 'ShipVia' + end + object viewOrdersFreight: TcxGridDBColumn + DataBinding.FieldName = 'Freight' + end + object viewOrdersShipName: TcxGridDBColumn + DataBinding.FieldName = 'ShipName' + end + object viewOrdersShipAddress: TcxGridDBColumn + DataBinding.FieldName = 'ShipAddress' + end + object viewOrdersShipCity: TcxGridDBColumn + DataBinding.FieldName = 'ShipCity' + end + object viewOrdersShipRegion: TcxGridDBColumn + DataBinding.FieldName = 'ShipRegion' + end + object viewOrdersShipPostalCode: TcxGridDBColumn + DataBinding.FieldName = 'ShipPostalCode' + end + object viewOrdersShipCountry: TcxGridDBColumn + DataBinding.FieldName = 'ShipCountry' + end + end + object cxGrid1Level1: TcxGridLevel + GridView = viewCustomers + object cxGrid1Level2: TcxGridLevel + GridView = viewOrders + end + end + end + object DBGrid3: TDBGrid + Left = 0 + Top = 266 + Width = 498 + Height = 120 + Align = alBottom + DataSource = QuantumGrid4_ClientDataModule.dsOrders + TabOrder = 1 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object Panel2: TPanel + Left = 0 + Top = 261 + Width = 498 + Height = 5 + Align = alBottom + BevelOuter = bvNone + TabOrder = 2 + end + end + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 506 + Height = 33 + Align = alTop + BevelOuter = bvNone + TabOrder = 1 + object Button1: TButton + Left = 80 + Top = 0 + Width = 97 + Height = 25 + Caption = 'Apply Updates' + TabOrder = 0 + OnClick = Button1Click + end + object Button2: TButton + Left = 0 + Top = 0 + Width = 75 + Height = 25 + Caption = 'Open/Close' + TabOrder = 1 + OnClick = Button2Click + end + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ClientMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ClientMain.pas new file mode 100644 index 0000000..13e8065 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ClientMain.pas @@ -0,0 +1,81 @@ +unit QuantumGrid4_ClientMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROIndyHTTPChannel, + Grids, DBGrids, ComCtrls, cxStyles, cxCustomData, cxGraphics, cxFilter, + cxData, cxDataStorage, cxEdit, DB, cxDBData, cxGridLevel, cxClasses, + cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView, + cxGridDBTableView, cxGrid, ExtCtrls, DBClient; + +type + TQuantumGrid4_ClientMainForm = class(TForm) + PageControl: TPageControl; + TabSheet2: TTabSheet; + viewCustomers: TcxGridDBTableView; + cxGrid1Level1: TcxGridLevel; + cxGrid1: TcxGrid; + viewOrders: TcxGridDBTableView; + viewCustomersCustomerID: TcxGridDBColumn; + viewCustomersCompanyName: TcxGridDBColumn; + viewCustomersContactName: TcxGridDBColumn; + viewCustomersContactTitle: TcxGridDBColumn; + viewCustomersAddress: TcxGridDBColumn; + viewCustomersCity: TcxGridDBColumn; + viewCustomersRegion: TcxGridDBColumn; + viewCustomersPostalCode: TcxGridDBColumn; + viewCustomersCountry: TcxGridDBColumn; + viewCustomersPhone: TcxGridDBColumn; + viewCustomersFax: TcxGridDBColumn; + Panel1: TPanel; + Button1: TButton; + Button2: TButton; + viewOrdersOrderID: TcxGridDBColumn; + viewOrdersCustomerID: TcxGridDBColumn; + viewOrdersEmployeeID: TcxGridDBColumn; + viewOrdersOrderDate: TcxGridDBColumn; + viewOrdersRequiredDate: TcxGridDBColumn; + viewOrdersShippedDate: TcxGridDBColumn; + viewOrdersShipVia: TcxGridDBColumn; + viewOrdersFreight: TcxGridDBColumn; + viewOrdersShipName: TcxGridDBColumn; + viewOrdersShipAddress: TcxGridDBColumn; + viewOrdersShipCity: TcxGridDBColumn; + viewOrdersShipRegion: TcxGridDBColumn; + viewOrdersShipPostalCode: TcxGridDBColumn; + viewOrdersShipCountry: TcxGridDBColumn; + cxGrid1Level2: TcxGridLevel; + DBGrid3: TDBGrid; + Panel2: TPanel; + procedure Button2Click(Sender: TObject); + procedure Button1Click(Sender: TObject); + private + fLastMaster: Variant; + public + + end; + +var + QuantumGrid4_ClientMainForm: TQuantumGrid4_ClientMainForm; + +implementation + +uses QuantumGrid4_ClientData, uDAInterfaces, uDADataTable; + +{$R *.dfm} + +procedure TQuantumGrid4_ClientMainForm.Button2Click(Sender: TObject); +begin + with QuantumGrid4_ClientDataModule.dtCustomers do + Active := Active xor TRUE; +end; + +procedure TQuantumGrid4_ClientMainForm.Button1Click(Sender: TObject); +begin + QuantumGrid4_ClientDataModule.dtCustomers.ApplyUpdates(TRUE); +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ServerData.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ServerData.dfm new file mode 100644 index 0000000..03c5056 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ServerData.dfm @@ -0,0 +1,55 @@ +object QuantumGrid4_ServerDataModule: TQuantumGrid4_ServerDataModule + OldCreateOrder = False + OnCreate = DataModuleCreate + Left = 73 + Top = 69 + Height = 207 + Width = 352 + object ROServer: TROIndyHTTPServer + Dispatchers = < + item + Name = 'ROMessage' + Message = ROMessage + Enabled = True + PathInfo = 'Bin' + end> + Port = 8099 + Left = 32 + Top = 8 + end + object ROMessage: TROBinMessage + Left = 34 + Top = 56 + end + object ConnectionManager: TDAConnectionManager + MaxPoolSize = 10 + PoolTimeoutSeconds = 60 + PoolBehaviour = pbWait + WaitIntervalSeconds = 1 + Connections = < + item + Name = 'ADO' + ConnectionString = + 'ADO?AuxDriver=SQLOLEDB.1;Server=localhost;Database=Northwind;Use' + + 'rID=sa;Password=;' + Default = True + Tag = 0 + end> + DriverManager = DriverManager + PoolingEnabled = True + Left = 136 + Top = 56 + end + object DriverManager: TDADriverManager + DriverDirectory = '%SYSTEM%\' + AutoLoad = False + TraceActive = False + TraceFlags = [] + Left = 136 + Top = 10 + end + object ADODriver: TDAADODriver + Left = 256 + Top = 8 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ServerData.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ServerData.pas new file mode 100644 index 0000000..f624b32 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ServerData.pas @@ -0,0 +1,38 @@ +unit QuantumGrid4_ServerData; + +interface + +uses + SysUtils, Classes, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, + uROBinMessage, uROIndyHTTPServer, + uDADriverManager, uDAClasses, uDADBXDriver, uDAIBXDriver, uDAEngine, uDAADODriver, + uROIndyTCPServer; + +type + TQuantumGrid4_ServerDataModule = class(TDataModule) + ROServer: TROIndyHTTPServer; + ROMessage: TROBinMessage; + DriverManager: TDADriverManager; + ADODriver: TDAADODriver; + ConnectionManager: TDAConnectionManager; + procedure DataModuleCreate(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + QuantumGrid4_ServerDataModule: TQuantumGrid4_ServerDataModule; + +implementation + +{$R *.dfm} + +procedure TQuantumGrid4_ServerDataModule.DataModuleCreate(Sender: TObject); +begin + ROServer.Active := true; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ServerMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ServerMain.dfm new file mode 100644 index 0000000..cfaa725 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ServerMain.dfm @@ -0,0 +1,25 @@ +object QuantumGrid4_ServerMainForm: TQuantumGrid4_ServerMainForm + Left = 66 + Top = 76 + BorderStyle = bsDialog + Caption = 'QuantumGrid 4 Server' + ClientHeight = 64 + ClientWidth = 228 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object RoPoweredByRemObjectsButton1: TROPoweredByRemObjectsButton + Left = 8 + Top = 8 + Width = 212 + Height = 48 + Cursor = crHandPoint + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ServerMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ServerMain.pas new file mode 100644 index 0000000..a70c5a0 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_ServerMain.pas @@ -0,0 +1,26 @@ +unit QuantumGrid4_ServerMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, + uROBinMessage, uROIndyHTTPServer; + +type + TQuantumGrid4_ServerMainForm = class(TForm) + RoPoweredByRemObjectsButton1: TRoPoweredByRemObjectsButton; + private + { Private declarations } + public + { Public declarations } + end; + +var + QuantumGrid4_ServerMainForm: TQuantumGrid4_ServerMainForm; + +implementation + +{$R *.dfm} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_server.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_server.bdsproj new file mode 100644 index 0000000..862243b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_server.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + QuantumGrid4_server.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_server.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_server.dpr new file mode 100644 index 0000000..de173a0 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_server.dpr @@ -0,0 +1,23 @@ +program QuantumGrid4_server; + +{#ROGEN:QuantumGrid4Library.rodl} // RemObjects: Careful, do not remove! + +uses + uROComInit, + Forms, + QuantumGrid4_ServerMain in 'QuantumGrid4_ServerMain.pas' {QuantumGrid4_ServerMainForm}, + NewService_Impl in 'NewService_Impl.pas' {NewService: TDARemoteService}, + QuantumGrid4_ServerData in 'QuantumGrid4_ServerData.pas' {QuantumGrid4_ServerDataModule: TDataModule}, + QuantumGrid4Library_Intf in 'QuantumGrid4Library_Intf.pas', + QuantumGrid4Library_Invk in 'QuantumGrid4Library_Invk.pas'; + +{$R *.res} +{$R RODLFile.res} + +begin + Application.Initialize; + Application.Title := 'QuantumGrid4 Server'; + Application.CreateForm(TQuantumGrid4_ServerDataModule, QuantumGrid4_ServerDataModule); + Application.CreateForm(TQuantumGrid4_ServerMainForm, QuantumGrid4_ServerMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_server.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_server.dproj new file mode 100644 index 0000000..11b11c4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_server.dproj @@ -0,0 +1,80 @@ + + + {540b874b-c44a-4832-b75a-f3873582e77c} + QuantumGrid4_server.dpr + Debug + AnyCPU + DCC32 + QuantumGrid4_server.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + QuantumGrid4_server.dpr + + + + + + + MainSource + + +
NewService
+
+ + + +
QuantumGrid4_ServerDataModule
+
+ +
QuantumGrid4_ServerMainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_server.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_server.res new file mode 100644 index 0000000..7455d6e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/QuantumGrid4_server.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/RODLFILE.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/RODLFILE.res new file mode 100644 index 0000000..66470ea Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/QuantumGrid 4/RODLFILE.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Quick Open/QuickOpen.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/Quick Open/QuickOpen.Sample.html new file mode 100644 index 0000000..8b2f535 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Quick Open/QuickOpen.Sample.html @@ -0,0 +1,30 @@ + + + + + + + + + +

+ QuickOpen +

+ + +

Purpose

+ +

+ This example shows how to receive data from a local database. +

+ +

Examine the Code

+ + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Quick Open/QuickOpen.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Quick Open/QuickOpen.bdsproj new file mode 100644 index 0000000..143c7d8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Quick Open/QuickOpen.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + QuickOpen.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Quick Open/QuickOpen.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Quick Open/QuickOpen.dpr new file mode 100644 index 0000000..02aced4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Quick Open/QuickOpen.dpr @@ -0,0 +1,14 @@ +program QuickOpen; + +uses + Forms, + QuickOpenMain in 'QuickOpenMain.pas' {QuickOpenMainForm}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'QuickOpen'; + Application.CreateForm(TQuickOpenMainForm, QuickOpenMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Quick Open/QuickOpen.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Quick Open/QuickOpen.dproj new file mode 100644 index 0000000..a6ad6ef --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Quick Open/QuickOpen.dproj @@ -0,0 +1,72 @@ + + + {b3f06429-5ddc-4ac4-8f56-ce4275c9a145} + QuickOpen.dpr + Debug + AnyCPU + DCC32 + QuickOpen.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + QuickOpen.dpr + + + + + + + MainSource + + +
QuickOpenMainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Quick Open/QuickOpen.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Quick Open/QuickOpen.res new file mode 100644 index 0000000..b946fbb Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Quick Open/QuickOpen.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Quick Open/QuickOpenMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Quick Open/QuickOpenMain.dfm new file mode 100644 index 0000000..6aabf85 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Quick Open/QuickOpenMain.dfm @@ -0,0 +1,296 @@ +object QuickOpenMainForm: TQuickOpenMainForm + Left = 116 + Top = 122 + AutoScroll = False + Caption = 'Quick Open' + ClientHeight = 311 + ClientWidth = 539 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + PixelsPerInch = 96 + TextHeight = 13 + object OpenButton: TButton + Left = 8 + Top = 8 + Width = 75 + Height = 25 + Caption = 'Open' + TabOrder = 0 + OnClick = OpenButtonClick + end + object DBGrid1: TDBGrid + Left = 8 + Top = 40 + Width = 523 + Height = 269 + Anchors = [akLeft, akTop, akRight, akBottom] + DataSource = dsCustomers + TabOrder = 1 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object DADriverManager1: TDADriverManager + DriverDirectory = '%SYSTEM%\' + TraceActive = False + TraceFlags = [] + Left = 12 + Top = 11 + end + object DASchema1: TDASchema + ConnectionManager = DAConnectionManager1 + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Customers' + SQL = + 'SELECT '#10' CustomerID, CompanyName, ContactName, ContactTitle, ' + + #10' Address, City, Region, PostalCode, Country, Phone, '#10' Fax' + + #10' FROM'#10' Customers' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'CompanyName' + TableField = 'CompanyName' + end + item + DatasetField = 'ContactName' + TableField = 'ContactName' + end + item + DatasetField = 'ContactTitle' + TableField = 'ContactTitle' + end + item + DatasetField = 'Address' + TableField = 'Address' + end + item + DatasetField = 'City' + TableField = 'City' + end + item + DatasetField = 'Region' + TableField = 'Region' + end + item + DatasetField = 'PostalCode' + TableField = 'PostalCode' + end + item + DatasetField = 'Country' + TableField = 'Country' + end + item + DatasetField = 'Phone' + TableField = 'Phone' + end + item + DatasetField = 'Fax' + TableField = 'Fax' + end> + end> + Name = 'Customers' + Fields = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CompanyName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactName' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactTitle' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Address' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Region' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Country' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Phone' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Fax' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = <> + RelationShips = <> + UpdateRules = <> + Left = 45 + Top = 11 + end + object DAConnectionManager1: TDAConnectionManager + Connections = < + item + Name = 'ADO' + ConnectionString = + 'ADO?Server=localhost;Database=Northwind;UserID=sa;AuxDriver=SQLO' + + 'LEDB.1;password=' + Default = True + Tag = 0 + end> + DriverManager = DADriverManager1 + PoolingEnabled = True + Left = 76 + Top = 11 + end + object DAADODriver1: TDAADODriver + Left = 109 + Top = 11 + end + object DataTable: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + ReadOnly = False + LocalSchema = DASchema1 + LocalDataStreamer = DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Customers' + IndexDefs = <> + Left = 140 + Top = 11 + end + object dsCustomers: TDADataSource + DataSet = DataTable.Dataset + DataTable = DataTable + Left = 156 + Top = 27 + end + object DABINAdapter: TDABinDataStreamer + Left = 192 + Top = 8 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Quick Open/QuickOpenMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Quick Open/QuickOpenMain.pas new file mode 100644 index 0000000..5a4bba5 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Quick Open/QuickOpenMain.pas @@ -0,0 +1,41 @@ +unit QuickOpenMain; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, DB, uDADataTable, uDACDSDataTable, uDAEngine, uDAADODriver, + uDAClasses, uDADriverManager, uDABINAdapter, Grids, DBGrids, StdCtrls, + uDAScriptingProvider, uDADataStreamer; + +type + TQuickOpenMainForm = class(TForm) + DADriverManager1: TDADriverManager; + DAADODriver1: TDAADODriver; + DataTable: TDACDSDataTable; + dsCustomers: TDADataSource; + DAConnectionManager1: TDAConnectionManager; + OpenButton: TButton; + DBGrid1: TDBGrid; + DABINAdapter: TDABinDataStreamer; + DASchema1: TDASchema; + procedure OpenButtonClick(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + QuickOpenMainForm: TQuickOpenMainForm; + +implementation + +{$R *.dfm} + +procedure TQuickOpenMainForm.OpenButtonClick(Sender: TObject); +begin + DataTable.Open; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Regular Expressions/RegularExpressions.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/Regular Expressions/RegularExpressions.Sample.html new file mode 100644 index 0000000..410cdc8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Regular Expressions/RegularExpressions.Sample.html @@ -0,0 +1,30 @@ + + + + + + + + + +

+ Regular Expressions +

+ + +

Purpose

+ +

+ This sample illustrates the support provided for regular expressions.
+

+ +

Examine the Code

+ + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Regular Expressions/RegularExpressions.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Regular Expressions/RegularExpressions.bdsproj new file mode 100644 index 0000000..f07c865 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Regular Expressions/RegularExpressions.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + RegularExpressions.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Regular Expressions/RegularExpressions.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Regular Expressions/RegularExpressions.dpr new file mode 100644 index 0000000..e39f53c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Regular Expressions/RegularExpressions.dpr @@ -0,0 +1,14 @@ +program RegularExpressions; + +uses + Forms, + RegularExpressionsMain in 'RegularExpressionsMain.pas' {RegularExpressionsMainForm}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'Regular Expressions'; + Application.CreateForm(TRegularExpressionsMainForm, RegularExpressionsMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Regular Expressions/RegularExpressions.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Regular Expressions/RegularExpressions.dproj new file mode 100644 index 0000000..3a4a572 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Regular Expressions/RegularExpressions.dproj @@ -0,0 +1,72 @@ + + + {bb6ba93f-d097-423b-8543-9afc638ec2c4} + RegularExpressions.dpr + Debug + AnyCPU + DCC32 + RegularExpressions.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + RegularExpressions.dpr + + + + + + + MainSource + + +
RegularExpressionsMainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Regular Expressions/RegularExpressions.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Regular Expressions/RegularExpressions.res new file mode 100644 index 0000000..b946fbb Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Regular Expressions/RegularExpressions.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Regular Expressions/RegularExpressionsMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Regular Expressions/RegularExpressionsMain.dfm new file mode 100644 index 0000000..14e1f76 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Regular Expressions/RegularExpressionsMain.dfm @@ -0,0 +1,267 @@ +object RegularExpressionsMainForm: TRegularExpressionsMainForm + Left = 15 + Top = 41 + AutoScroll = False + BorderWidth = 5 + Caption = 'Regular Expression' + ClientHeight = 240 + ClientWidth = 740 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object Label4: TLabel + Left = 355 + Top = 5 + Width = 242 + Height = 19 + Caption = 'Press a cell of a grid to fill the text' + Font.Charset = DEFAULT_CHARSET + Font.Color = clNavy + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object GroupBox1: TGroupBox + Left = 0 + Top = 0 + Width = 352 + Height = 129 + Caption = 'Test Expression' + TabOrder = 0 + object lbResult: TLabel + Left = 150 + Top = 102 + Width = 183 + Height = 13 + Caption = 'Click the button to verify your input...' + end + object Label1: TLabel + Left = 16 + Top = 20 + Width = 48 + Height = 13 + Caption = 'Template:' + end + object Label2: TLabel + Left = 9 + Top = 44 + Width = 56 + Height = 13 + Caption = 'Expression:' + end + object Label3: TLabel + Left = 39 + Top = 68 + Width = 26 + Height = 13 + Caption = 'Text:' + end + object cbExpression: TComboBox + Left = 68 + Top = 16 + Width = 273 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 0 + OnChange = cbExpressionChange + end + object eText: TEdit + Left = 68 + Top = 64 + Width = 273 + Height = 21 + TabOrder = 2 + end + object bCheck: TButton + Left = 68 + Top = 96 + Width = 75 + Height = 25 + Caption = '&Check' + Default = True + TabOrder = 3 + OnClick = bCheckClick + end + object eExpression: TEdit + Left = 68 + Top = 40 + Width = 273 + Height = 21 + TabOrder = 1 + end + end + object DBGrid1: TDBGrid + Left = 0 + Top = 136 + Width = 740 + Height = 104 + Align = alBottom + Anchors = [akLeft, akTop, akRight, akBottom] + DataSource = DADataSource + ReadOnly = True + TabOrder = 1 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'Tahoma' + TitleFont.Style = [] + OnCellClick = DBGrid1CellClick + Columns = < + item + Expanded = False + FieldName = 'USPhoneNumber' + Width = 100 + Visible = True + end + item + Expanded = False + FieldName = 'Email' + Width = 100 + Visible = True + end + item + Expanded = False + FieldName = 'RealNumber' + Width = 100 + Visible = True + end + item + Expanded = False + FieldName = 'RomanNumber' + Width = 100 + Visible = True + end + item + Expanded = False + FieldName = 'URL' + Width = 100 + Visible = True + end + item + Expanded = False + FieldName = 'ZipCode' + Width = 100 + Visible = True + end + item + Expanded = False + FieldName = 'Path' + Width = 100 + Visible = True + end> + end + object DACDSDataTable: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'USPhoneNumber' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Email' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RealNumber' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RomanNumber' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'URL' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ZipCode' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Path' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 411 + Top = 57 + end + object DADataSource: TDADataSource + DataSet = DACDSDataTable.Dataset + DataTable = DACDSDataTable + Left = 427 + Top = 73 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Regular Expressions/RegularExpressionsMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Regular Expressions/RegularExpressionsMain.pas new file mode 100644 index 0000000..243d144 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Regular Expressions/RegularExpressionsMain.pas @@ -0,0 +1,148 @@ +unit RegularExpressionsMain; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, DB, uDADataTable, uDACDSDataTable, ExtCtrls, DBCtrls, + Grids, DBGrids, uDAScriptingProvider; + +type + TRegExpressionTemplate = record + Description, + RegExpression: string; + end; + +const + RegExpressionTemplates: array[0..6] of TRegExpressionTemplate = ( + (Description: 'US Phone Number'; RegExpression: '^\d{3}-(\d{2}-\d{2}|\d{4})'), + (Description: 'Email'; RegExpression: '[_a-zA-Z\d\-\.]+@([_a-zA-Z\d\-]+(\.[_a-zA-Z\d\-]+)+)'), + (Description: 'Real Number'; RegExpression: '^[+\-]?\d+(\.\d+)?([eE][+\-]?\d+)?$'), + (Description: 'Roman Number'; RegExpression: '^(?i)M*(D?C{0,3}|C[DM])(L?X{0,3}|X[LC])(V?I{0,3}|I[VX])$'), + (Description: 'URL'; RegExpression: '(?i)(FTP|HTTP)://([_a-z\d\-]+(\.[_a-z\d\-]+)+)((/[ _a-z\d\-\\\.]+)+)*'), + (Description: 'ZipCode'; RegExpression: '^\d{5}$'), + (Description: 'Path'; RegExpression: '[A-Za-z]:(\\[a-zA-Z0-9_]+)+')); + +type + TRegularExpressionsMainForm = class(TForm) + GroupBox1: TGroupBox; + cbExpression: TComboBox; + eText: TEdit; + bCheck: TButton; + lbResult: TLabel; + eExpression: TEdit; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + DACDSDataTable: TDACDSDataTable; + DADataSource: TDADataSource; + DBGrid1: TDBGrid; + Label4: TLabel; + procedure bCheckClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure cbExpressionChange(Sender: TObject); + procedure DBGrid1CellClick(Column: TColumn); + private + { Private declarations } + procedure SetupTable; + public + { Public declarations } + end; + +var + RegularExpressionsMainForm: TRegularExpressionsMainForm; + +implementation + +uses uDARegExpr; + +{$R *.dfm} + +procedure TRegularExpressionsMainForm.bCheckClick(Sender: TObject); +begin + if ExecRegExpr(eExpression.Text, eText.Text) then begin + lbResult.Caption := 'The text is valid!' + end + else begin + Beep; + lbResult.Caption := 'The text is INVALID!' + end; +end; + +procedure TRegularExpressionsMainForm.FormCreate(Sender: TObject); +var + i: integer; +begin + for i := 0 to High(RegExpressionTemplates) do + cbExpression.Items.Add(RegExpressionTemplates[i].Description); + cbExpression.ItemIndex := 0; + cbExpressionChange(nil); + SetupTable; +end; + +procedure TRegularExpressionsMainForm.cbExpressionChange(Sender: TObject); +begin + eExpression.Text := RegExpressionTemplates[cbExpression.ItemIndex].RegExpression +end; + +procedure TRegularExpressionsMainForm.DBGrid1CellClick(Column: TColumn); +begin + if (Column.Index >= 0) and (Column.Index < cbExpression.Items.Count) then begin + cbExpression.ItemIndex := Column.Index; + cbExpressionChange(cbExpression); + end; + eText.Text := DACDSDataTable.Fields[Column.Index].AsString; +end; + +procedure TRegularExpressionsMainForm.SetupTable; +begin + with DACDSDataTable do begin + Open; + First; + // valid record + Insert; + FieldByName('USPhoneNumber').AsString := '123-45-67'; + FieldByName('Email').AsString := 'test@test.com'; + FieldByName('RealNumber').AsString := '-12e+10'; + FieldByName('RomanNumber').AsString := 'MCXX'; + FieldByName('URL').AsString := 'http://www.site.com'; + FieldByName('ZipCode').AsString := '12345'; + FieldByName('path').AsString := 'c:\file.exe'; + post; + // invalid + Insert; + FieldByName('USPhoneNumber').AsString := '12-145-67'; + FieldByName('Email').AsString := 'test@testcom'; + FieldByName('RealNumber').AsString := '-12e'; + FieldByName('RomanNumber').AsString := 'MCXX1'; + FieldByName('URL').AsString := 'http:/www.site.com'; + FieldByName('ZipCode').AsString := '23 45'; + FieldByName('path').AsString := '\file.exe'; + post; + // mixed + Insert; + FieldByName('USPhoneNumber').AsString := '101-15-6917'; + FieldByName('Email').AsString := 'test@test.test.com'; + FieldByName('RealNumber').AsString := '-12'; + FieldByName('RomanNumber').AsString := 'IXM'; + FieldByName('URL').AsString := 'www.site.com'; + FieldByName('ZipCode').AsString := '0192'; + FieldByName('path').AsString := 'z:\folder\'; + post; + + // mixed + Insert; + FieldByName('USPhoneNumber').AsString := '101.15.6917'; + FieldByName('Email').AsString := 'test#test.com'; + FieldByName('RealNumber').AsString := '+1212'; + FieldByName('RomanNumber').AsString := 'MCIX'; + FieldByName('URL').AsString := 'http://www.site.com/files/program.zip'; + FieldByName('ZipCode').AsString := '192911'; + FieldByName('path').AsString := 'z:\folder\subfolder\program.exe'; + post; + + end; +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ClientArchive.raf b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ClientArchive.raf new file mode 100644 index 0000000..8cf3638 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ClientArchive.raf differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/DARBService_Impl.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/DARBService_Impl.dfm new file mode 100644 index 0000000..4475c80 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/DARBService_Impl.dfm @@ -0,0 +1,460 @@ +object DARBService: TDARBService + OldCreateOrder = True + OnActivate = DataAbstractServiceActivate + OnDeactivate = DataAbstractServiceDeactivate + AcquireConnection = True + ServiceSchema = DASchema + ServiceDataStreamer = BinDataStreamer + ExportedDataTables = <> + Left = 345 + Top = 207 + Height = 300 + Width = 300 + object DASchema: TDASchema + ConnectionManager = ReportBuilder_ServerMainForm.DAConnectionManager1 + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Customers' + SQL = + 'SELECT '#13#10' CustomerID, CompanyName, ContactName, ContactTitle,' + + ' '#13#10' Address, City, Region, PostalCode, Country, Phone, '#13#10' ' + + 'Fax'#13#10' FROM'#13#10' Customers' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'CompanyName' + TableField = 'CompanyName' + end + item + DatasetField = 'ContactName' + TableField = 'ContactName' + end + item + DatasetField = 'ContactTitle' + TableField = 'ContactTitle' + end + item + DatasetField = 'Address' + TableField = 'Address' + end + item + DatasetField = 'City' + TableField = 'City' + end + item + DatasetField = 'Region' + TableField = 'Region' + end + item + DatasetField = 'PostalCode' + TableField = 'PostalCode' + end + item + DatasetField = 'Country' + TableField = 'Country' + end + item + DatasetField = 'Phone' + TableField = 'Phone' + end + item + DatasetField = 'Fax' + TableField = 'Fax' + end> + end> + Name = 'Customers' + Fields = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CompanyName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactName' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactTitle' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Address' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Region' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Country' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Phone' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Fax' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = < + item + Params = < + item + Name = 'CustomerID' + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'CompanyName' + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'ContactName' + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'ContactTitle' + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'Address' + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'City' + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'Region' + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'PostalCode' + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'Country' + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'Phone' + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'Fax' + BlobType = dabtUnknown + ParamType = daptInput + end> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Customers' + SQL = + 'INSERT'#13#10' INTO Customers'#13#10' (CustomerID, CompanyName, ContactN' + + 'ame, ContactTitle, Address, City, Region, PostalCode, Country, P' + + 'hone, Fax)'#13#10' VALUES'#13#10' (:CustomerID, :CompanyName, :ContactNa' + + 'me, :ContactTitle, :Address, :City, :Region, :PostalCode, :Count' + + 'ry, :Phone, :Fax)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_Customers' + end + item + Params = < + item + Name = 'OLD_CustomerID' + BlobType = dabtUnknown + ParamType = daptInput + end> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Customers' + SQL = + 'DELETE '#13#10' FROM'#13#10' Customers'#13#10' WHERE'#13#10' (CustomerID = :OLD_' + + 'CustomerID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_Customers' + end + item + Params = < + item + Name = 'CustomerID' + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'CompanyName' + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'ContactName' + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'ContactTitle' + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'Address' + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'City' + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'Region' + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'PostalCode' + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'Country' + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'Phone' + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'Fax' + BlobType = dabtUnknown + ParamType = daptInput + end + item + Name = 'OLD_CustomerID' + BlobType = dabtUnknown + ParamType = daptInput + end> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Customers' + SQL = + 'UPDATE Customers'#13#10' SET '#13#10' CustomerID = :CustomerID, '#13#10' Co' + + 'mpanyName = :CompanyName, '#13#10' ContactName = :ContactName, '#13#10' ' + + ' ContactTitle = :ContactTitle, '#13#10' Address = :Address, '#13#10' ' + + 'City = :City, '#13#10' Region = :Region, '#13#10' PostalCode = :Postal' + + 'Code, '#13#10' Country = :Country, '#13#10' Phone = :Phone, '#13#10' Fax ' + + '= :Fax'#13#10' WHERE'#13#10' (CustomerID = :OLD_CustomerID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_Customers' + end> + RelationShips = <> + UpdateRules = <> + Left = 24 + Top = 6 + end + object ppReport: TppDBPipeline + DataSource = dsReport + UserName = 'Pipeline' + Left = 68 + Top = 117 + end + object dtReport: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 22 + Top = 69 + end + object dsReport: TDADataSource + DataTable = dtReport + Left = 22 + Top = 117 + end + object Report: TppReport + AutoStop = False + DataPipeline = ppReport + PrinterSetup.BinName = 'Default' + PrinterSetup.DocumentName = 'Report' + PrinterSetup.PaperName = 'A4 210 x 297 mm' + PrinterSetup.PrinterName = 'Default' + PrinterSetup.mmMarginBottom = 6350 + PrinterSetup.mmMarginLeft = 6350 + PrinterSetup.mmMarginRight = 6350 + PrinterSetup.mmMarginTop = 6350 + PrinterSetup.mmPaperHeight = 297000 + PrinterSetup.mmPaperWidth = 210000 + PrinterSetup.PaperSize = 9 + Units = utMillimeters + DeviceType = 'ArchiveFile' + EmailSettings.ReportFormat = 'PDF' + OutlineSettings.CreateNode = True + OutlineSettings.CreatePageNodes = True + OutlineSettings.Enabled = True + OutlineSettings.Visible = True + ShowCancelDialog = False + ShowPrintDialog = False + TextSearchSettings.DefaultString = '' + TextSearchSettings.Enabled = True + Left = 68 + Top = 70 + Version = '10.02' + mmColumnWidth = 0 + DataPipelineName = 'ppReport' + object ppHeaderBand1: TppHeaderBand + mmBottomOffset = 0 + mmHeight = 13229 + mmPrintPosition = 0 + end + object ppDetailBand1: TppDetailBand + mmBottomOffset = 0 + mmHeight = 13229 + mmPrintPosition = 0 + end + object ppFooterBand1: TppFooterBand + mmBottomOffset = 0 + mmHeight = 13229 + mmPrintPosition = 0 + end + end + object BinDataStreamer: TDABinDataStreamer + Left = 85 + Top = 5 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/DARBService_Impl.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/DARBService_Impl.pas new file mode 100644 index 0000000..2d7533e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/DARBService_Impl.pas @@ -0,0 +1,100 @@ +unit DARBService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} ReportBuilderLibrary_Intf, uDADataStreamer, uDABinAdapter, + ppBands, ppCache, ppClass, ppProd, ppReport, DB, uDADataTable, + uDAScriptingProvider, uDACDSDataTable, ppComm, ppRelatv, ppDB, ppDBPipe, + uDAClasses, uDaInterfaces; + +type + { TDARBService } + TDARBService = class(TDataAbstractService, IDARBService) + DASchema: TDASchema; + ppReport: TppDBPipeline; + dtReport: TDACDSDataTable; + dsReport: TDADataSource; + Report: TppReport; + ppHeaderBand1: TppHeaderBand; + ppDetailBand1: TppDetailBand; + ppFooterBand1: TppFooterBand; + BinDataStreamer: TDABinDataStreamer; + procedure DataAbstractServiceActivate(const aClientID: TGUID; + aSession: TROSession; const aMessage: IROMessage); + procedure DataAbstractServiceDeactivate(const aClientID: TGUID; + aSession: TROSession); + private + fConnection: IDAConnection; + protected + { IDARBService methods } + function DA_GenReport(const ReportName: string; const DatasetName: string): Binary; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} ReportBuilderLibrary_Invk, ReportBuilder_ServerMain; + +procedure Create_DARBService(out anInstance: IUnknown); +begin + anInstance := TDARBService.Create(nil); +end; + +{ DARBService } + +function TDARBService.DA_GenReport(const ReportName: string; const DatasetName: string): Binary; +var + ds: IDADataset; + s: TMemoryStream; +begin + s := TMemoryStream.Create; + result := Binary.Create; + try + Report.DataPipeline := ppReport; + Report.Template.FileName := ReportBuilder_ServerMainForm.AppPath + ReportName; + Report.Template.LoadFromFile; + Report.Template.Load; + ds := DASchema.NewDataset(fConnection, DatasetName); + BinDataStreamer.WriteDataset(s, ds, [woRows, woSchema], -1); + BinDataStreamer.ReadDataset(s, dtReport, TRUE, '', TRUE, TRUE); + Report.DeviceType := 'dtArchive'; + Report.ArchiveFileName := ReportBuilder_ServerMainForm.AppPath + 'ServerArchive.raf'; + Report.Print; + result.LoadFromFile(ReportBuilder_ServerMainForm.AppPath + 'ServerArchive.raf'); + finally + s.Free; + end; +end; + +procedure TDARBService.DataAbstractServiceActivate(const aClientID: TGUID; + aSession: TROSession; const aMessage: IROMessage); +begin + fConnection := ReportBuilder_ServerMainForm.DAConnectionManager1.NewConnection('ADO', TRUE); +end; + +procedure TDARBService.DataAbstractServiceDeactivate( + const aClientID: TGUID; aSession: TROSession); +begin + fConnection := nil; +end; + +initialization + TROClassFactory.Create('DARBService', Create_DARBService, TDARBService_Invoker); + +finalization + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/RODLFILE.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/RODLFILE.res new file mode 100644 index 0000000..b23b77d Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/RODLFILE.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/Report1.rtm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/Report1.rtm new file mode 100644 index 0000000..270bd58 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/Report1.rtm differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder.Sample.html new file mode 100644 index 0000000..dd01eef --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder.Sample.html @@ -0,0 +1,36 @@ + + + + + + + + + +

+ Report Builder Sample +

+ + +

Purpose

+ +

+ This example shows how to create the report on the server, stream it to the client and then display to the client.
+

+

+To use this sample, you will need to copy the report template file to the server folder. +

+

Examine the Code

+ +

Note

+

+ This sample requires the installation of Report Builder (www.digital-metaphors.com). +

+ + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder.bdsgroup b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder.bdsgroup new file mode 100644 index 0000000..f049f0b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder.bdsgroup @@ -0,0 +1,20 @@ + + + + + + + + + + + + + ReportBuilderClient.bdsproj + ReportBuilderServer.bdsproj + ReportBuilderClient.exe ReportBuilderServer.exe + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder.bpg b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder.bpg new file mode 100644 index 0000000..f11e550 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = ReportBuilderClient.exe ReportBuilderServer.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +ReportBuilderClient.exe: ReportBuilderClient.dpr + $(DCC) + +ReportBuilderServer.exe: ReportBuilderServer.dpr + $(DCC) + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder.groupproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder.groupproj new file mode 100644 index 0000000..e59150b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder.groupproj @@ -0,0 +1,40 @@ + + + {edbe07cb-363c-46f5-a6d3-c92276275a6f} + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderClient.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderClient.bdsproj new file mode 100644 index 0000000..1a2b7cf --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderClient.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + ReportBuilderClient.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderClient.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderClient.dpr new file mode 100644 index 0000000..890e31b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderClient.dpr @@ -0,0 +1,14 @@ +program ReportBuilderClient; + +uses + Forms, + ReportBuilder_ClientMain in 'ReportBuilder_ClientMain.pas' {ReportBuilderClientMainForm}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'ReportBuilder Client'; + Application.CreateForm(TReportBuilderClientMainForm, ReportBuilderClientMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderClient.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderClient.dproj new file mode 100644 index 0000000..fb953dd --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderClient.dproj @@ -0,0 +1,72 @@ + + + {39e1b6f4-4674-4588-8f39-e3edce5eaa45} + ReportBuilderClient.dpr + Debug + AnyCPU + DCC32 + ReportBuilderClient.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + ReportBuilderClient.dpr + + + + + + + MainSource + + +
ReportBuilderClientMainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderClient.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderClient.res new file mode 100644 index 0000000..da01de5 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderClient.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderLibrary.rodl b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderLibrary.rodl new file mode 100644 index 0000000..73faed0 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderLibrary.rodl @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderLibrary_Intf.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderLibrary_Intf.pas new file mode 100644 index 0000000..20eb590 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderLibrary_Intf.pas @@ -0,0 +1,97 @@ +unit ReportBuilderLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROClasses, uROClient, uROTypes, uROClientIntf, + {Used RODLs:} DataAbstract4_Intf; + +const + { Library ID } + LibraryUID = '{AF63BD44-BEA9-4B7A-853F-3792A67A751B}'; + + { Service Interface ID's } + IDARBService_IID : TGUID = '{373D25E9-7848-4554-8AE7-7703C081E853}'; + + { Event ID's } + +type + { Forward declarations } + IDARBService = interface; + + + + + { IDARBService } + IDARBService = interface(IDataAbstractService) + ['{373D25E9-7848-4554-8AE7-7703C081E853}'] + function DA_GenReport(const ReportName: String; const DatasetName: String): Binary; + end; + + { CoDARBService } + CoDARBService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDARBService; + end; + + { TDARBService_Proxy } + TDARBService_Proxy = class(TDataAbstractService_Proxy, IDARBService) + protected + function __GetInterfaceName:string; override; + + function DA_GenReport(const ReportName: String; const DatasetName: String): Binary; + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uRORes; + +{ CoDARBService } + +class function CoDARBService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDARBService; +begin + result := TDARBService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TDARBService_Proxy } + +function TDARBService_Proxy.__GetInterfaceName:string; +begin + result := 'DARBService'; +end; + +function TDARBService_Proxy.DA_GenReport(const ReportName: String; const DatasetName: String): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'ReportBuilderLibrary', __InterfaceName, 'DA_GenReport'); + __Message.Write('ReportName', TypeInfo(String), ReportName, []); + __Message.Write('DatasetName', TypeInfo(String), DatasetName, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.FreeStream; + end +end; + +initialization + RegisterProxyClass(IDARBService_IID, TDARBService_Proxy); + + +finalization + UnregisterProxyClass(IDARBService_IID); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderLibrary_Invk.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderLibrary_Invk.pas new file mode 100644 index 0000000..29131eb --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderLibrary_Invk.pas @@ -0,0 +1,64 @@ +unit ReportBuilderLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Used RODL Intf's:} DataAbstract4_Intf, + {Used RODL Invk's:} DataAbstract4_Invk, + {Generated:} ReportBuilderLibrary_Intf; + +type + TDARBService_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + procedure Invoke_DA_GenReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TDARBService_Invoker } + +procedure TDARBService_Invoker.Invoke_DA_GenReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function DA_GenReport(const ReportName: String; const DatasetName: String): Binary; } +var + ReportName: String; + DatasetName: String; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('ReportName', TypeInfo(String), ReportName, []); + __Message.Read('DatasetName', TypeInfo(String), DatasetName, []); + + lResult := (__Instance as IDARBService).DA_GenReport(ReportName, DatasetName); + + __Message.InitializeResponseMessage(__Transport, 'ReportBuilderLibrary', 'DARBService', 'DA_GenReportResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderServer.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderServer.bdsproj new file mode 100644 index 0000000..2eb51ac --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderServer.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + ReportBuilderServer.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderServer.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderServer.dpr new file mode 100644 index 0000000..80bdae4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderServer.dpr @@ -0,0 +1,21 @@ +program ReportBuilderServer; + +{#ROGEN:ReportBuilderLibrary.rodl} // RemObjects: Careful, do not remove! + +uses + uROCOMInit, + Forms, + ReportBuilderLibrary_Intf in 'ReportBuilderLibrary_Intf.pas', + ReportBuilderLibrary_Invk in 'ReportBuilderLibrary_Invk.pas', + DARBService_Impl in 'DARBService_Impl.pas' {DARBService: TDataAbstractService}, + ReportBuilder_ServerMain in 'ReportBuilder_ServerMain.pas' {ReportBuilder_ServerMainForm}; + +{$R *.RES} +{$R RODLFile.res} + +begin + Application.Initialize; + Application.Title := 'ReportBuilder Server'; + Application.CreateForm(TReportBuilder_ServerMainForm, ReportBuilder_ServerMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderServer.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderServer.dproj new file mode 100644 index 0000000..a0fc579 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderServer.dproj @@ -0,0 +1,77 @@ + + + {c3bd883e-cf1f-451a-a2c0-b0a16351f9af} + ReportBuilderServer.dpr + Debug + AnyCPU + DCC32 + ReportBuilderServer.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + ReportBuilderServer.dpr + + + + + + + MainSource + + +
DARBService
+
+ + + +
ReportBuilder_ServerMainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderServer.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderServer.res new file mode 100644 index 0000000..7455d6e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilderServer.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder_ClientMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder_ClientMain.dfm new file mode 100644 index 0000000..d6959e8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder_ClientMain.dfm @@ -0,0 +1,525 @@ +object ReportBuilderClientMainForm: TReportBuilderClientMainForm + Left = 457 + Top = 208 + AutoScroll = False + Caption = 'ReportBuilder Client' + ClientHeight = 242 + ClientWidth = 571 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 232 + Top = 13 + Width = 58 + Height = 13 + Caption = 'Reportname' + end + object Grid: TDBGrid + Left = 0 + Top = 42 + Width = 571 + Height = 200 + Align = alBottom + Anchors = [akLeft, akTop, akRight, akBottom] + DataSource = dsCustomers + TabOrder = 3 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object OpenButton: TButton + Left = 8 + Top = 8 + Width = 121 + Height = 25 + Caption = 'Close/Open Customers' + TabOrder = 1 + OnClick = OpenButtonClick + end + object ReportButton: TButton + Left = 152 + Top = 8 + Width = 75 + Height = 25 + Caption = 'GenReport' + TabOrder = 2 + OnClick = ReportButtonClick + end + object edtRN: TEdit + Left = 304 + Top = 8 + Width = 121 + Height = 21 + TabOrder = 0 + Text = 'Report1.rtm' + end + object BINMessage: TROBinMessage + UseCompression = False + Left = 128 + Top = 72 + end + object WinInetHTTPChannel: TROWinInetHTTPChannel + ServerLocators = <> + DispatchOptions = [] + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/bin' + Left = 160 + Top = 72 + end + object RemoteService: TRORemoteService + Message = BINMessage + Channel = WinInetHTTPChannel + ServiceName = 'DARBService' + Left = 193 + Top = 72 + end + object dtCustomers: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CompanyName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactName' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactTitle' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Address' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Region' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Country' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Phone' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Fax' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soIgnoreStreamSchema, soDisableEventsWhileStreaming] + RemoteDataAdapter = RemoteDataAdapter + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Customers' + IndexDefs = <> + Left = 254 + Top = 72 + end + object dsCustomers: TDADataSource + DataTable = dtCustomers + Left = 288 + Top = 72 + end + object ArchiveReader: TppArchiveReader + AllowPrintToFile = True + DeviceType = 'Screen' + EmailSettings.ReportFormat = 'PDF' + PreviewFormSettings.WindowState = wsMaximized + PreviewFormSettings.ZoomSetting = zsPageWidth + SuppressOutline = False + TextSearchSettings.DefaultString = '' + TextSearchSettings.Enabled = True + Left = 320 + Top = 72 + Version = '10.02' + end + object Report: TppReport + AutoStop = False + DataPipeline = ppReport + PrinterSetup.BinName = 'Default' + PrinterSetup.DocumentName = 'Report' + PrinterSetup.PaperName = 'A4 210 x 297 mm' + PrinterSetup.PrinterName = 'Default' + PrinterSetup.mmMarginBottom = 6350 + PrinterSetup.mmMarginLeft = 6350 + PrinterSetup.mmMarginRight = 6350 + PrinterSetup.mmMarginTop = 6350 + PrinterSetup.mmPaperHeight = 297000 + PrinterSetup.mmPaperWidth = 210000 + PrinterSetup.PaperSize = 9 + Units = utMillimeters + DeviceType = 'ArchiveFile' + EmailSettings.ReportFormat = 'PDF' + OutlineSettings.CreateNode = True + OutlineSettings.CreatePageNodes = True + OutlineSettings.Enabled = True + OutlineSettings.Visible = True + ShowCancelDialog = False + ShowPrintDialog = False + TextSearchSettings.DefaultString = '' + TextSearchSettings.Enabled = True + Left = 320 + Top = 127 + Version = '10.02' + mmColumnWidth = 0 + DataPipelineName = 'ppReport' + object ppHeaderBand1: TppHeaderBand + mmBottomOffset = 0 + mmHeight = 13229 + mmPrintPosition = 0 + end + object ppDetailBand1: TppDetailBand + mmBottomOffset = 0 + mmHeight = 13229 + mmPrintPosition = 0 + end + object ppFooterBand1: TppFooterBand + mmBottomOffset = 0 + mmHeight = 13229 + mmPrintPosition = 0 + end + end + object ppReport: TppDBPipeline + DataSource = dsReport + UserName = 'Pipeline' + Left = 352 + Top = 127 + end + object dtReport: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CompanyName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactName' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactTitle' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Address' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Region' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Country' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Phone' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Fax' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soIgnoreStreamSchema, soDisableEventsWhileStreaming] + RemoteDataAdapter = RemoteDataAdapter + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Customers' + IndexDefs = <> + Left = 256 + Top = 127 + end + object dsReport: TDADataSource + DataTable = dtReport + Left = 288 + Top = 128 + end + object RemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RemoteService + GetSchemaCall.MethodName = 'GetSchema' + GetSchemaCall.Params = < + item + Name = 'aFilter' + DataType = rtString + Flag = fIn + end + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetSchemaCall.Default = False + GetSchemaCall.IncomingSchemaParameter = 'Result' + GetSchemaCall.OutgoingFilterParameter = 'aFilter' + GetDataCall.RemoteService = RemoteService + GetDataCall.MethodName = 'GetData' + GetDataCall.Params = < + item + Name = 'aTableNameArray' + DataType = rtUserDefined + Flag = fIn + TypeName = 'StringArray' + end + item + Name = 'aTableRequestInfoArray' + DataType = rtUserDefined + Flag = fIn + TypeName = 'TableRequestInfoArray' + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + end> + GetDataCall.Default = False + GetDataCall.OutgoingTableNamesParameter = 'aTableNameArray' + GetDataCall.OutgoingTableRequestInfosParameter = 'aTableRequestInfoArray' + GetDataCall.IncomingDataParameter = 'Result' + UpdateDataCall.RemoteService = RemoteService + UpdateDataCall.MethodName = 'UpdateData' + UpdateDataCall.Params = < + item + Name = 'aDelta' + DataType = rtBinary + Flag = fIn + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + end> + UpdateDataCall.Default = False + UpdateDataCall.OutgoingDeltaParameter = 'aDelta' + UpdateDataCall.IncomingDeltaParameter = 'Result' + GetScriptsCall.RemoteService = RemoteService + GetScriptsCall.Params = <> + GetScriptsCall.Default = False + RemoteService = RemoteService + DataStreamer = DataStreamer + Left = 422 + Top = 68 + end + object DataStreamer: TDABinDataStreamer + Left = 488 + Top = 68 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder_ClientMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder_ClientMain.pas new file mode 100644 index 0000000..d7c27c7 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder_ClientMain.pas @@ -0,0 +1,90 @@ +unit ReportBuilder_ClientMain; + +interface + +{ + IF YOU GET + + [Fatal Error] uClientForm.pas(17): File not found: 'ppModule.dcu' + + HERE: This sample requires ReportBuilder to be installed on your system. +} + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uDADataTable, uDACDSDataTable, uDABINAdapter, uRORemoteService, + uROWinInetHttpChannel, uROClient, + uROBINMessage, DB, Grids, DBGrids, StdCtrls, ppModule, + ppCtrls, ppVar, ppPrnabl, ppClass, ppBands, ppCache, ppDB, ppDBPipe, + ppComm, ppRelatv, ppProd, ppReport, ppArchiv, uROTypes, + ppParameter, uDAScriptingProvider, + uDARemoteDataAdapter, uDADataStreamer, ReportBuilderLibrary_Intf; + +type + TReportBuilderClientMainForm = class(TForm) + BINMessage: TROBINMessage; + WinInetHTTPChannel: TROWinInetHTTPChannel; + RemoteService: TRORemoteService; + dtCustomers: TDACDSDataTable; + dsCustomers: TDADataSource; + Grid: TDBGrid; + OpenButton: TButton; + ReportButton: TButton; + ArchiveReader: TppArchiveReader; + Report: TppReport; + ppReport: TppDBPipeline; + dtReport: TDACDSDataTable; + dsReport: TDADataSource; + edtRN: TEdit; + Label1: TLabel; + ppHeaderBand1: TppHeaderBand; + ppDetailBand1: TppDetailBand; + ppFooterBand1: TppFooterBand; + RemoteDataAdapter: TDARemoteDataAdapter; + DataStreamer: TDABinDataStreamer; + procedure OpenButtonClick(Sender: TObject); + procedure ReportButtonClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + private + { Private-Deklarationen } + FService: IDARBService; + public + { Public-Deklarationen } + end; + +var + ReportBuilderClientMainForm: TReportBuilderClientMainForm; + +implementation + +{$R *.dfm} + +procedure TReportBuilderClientMainForm.OpenButtonClick(Sender: TObject); +begin + dtCustomers.active := not dtCustomers.active; +end; + +procedure TReportBuilderClientMainForm.ReportButtonClick(Sender: TObject); +var + rb: TMemoryStream; +begin + rb := FService.DA_GenReport(edtRN.Text, 'Customers'); + if rb = nil then exit; + try + rb.SaveToFile(ExtractFilePath(Application.ExeName) + 'ClientArchive.raf'); + finally + rb.Free; + end; + ArchiveReader.ArchiveFileName := (ExtractFilePath(Application.ExeName) + 'ClientArchive.raf'); + ArchiveReader.DeviceType := 'dtScreen'; + ArchiveReader.Print; + ArchiveReader.ArchiveFileName := ''; //To unlock ClientArchive.raf file +end; + +procedure TReportBuilderClientMainForm.FormCreate(Sender: TObject); +begin + FService := (RemoteService as IDARBService); +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder_ServerMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder_ServerMain.dfm new file mode 100644 index 0000000..f2aee04 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder_ServerMain.dfm @@ -0,0 +1,73 @@ +object ReportBuilder_ServerMainForm: TReportBuilder_ServerMainForm + Left = 115 + Top = 134 + Width = 235 + Height = 100 + Caption = 'ReportBuilder Server' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Form1' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 14 + object RoPoweredByRemObjectsButton1: TROPoweredByRemObjectsButton + Left = 8 + Top = 8 + Width = 212 + Height = 48 + Cursor = crHandPoint + end + object ROMessage: TROBinMessage + Left = 56 + Top = 16 + end + object ROServer: TROIndyHTTPServer + Active = True + Dispatchers = < + item + Name = 'ROMessage' + Message = ROMessage + Enabled = True + PathInfo = 'BIN' + end> + Port = 8099 + Left = 88 + Top = 16 + end + object DADriverManager1: TDADriverManager + DriverDirectory = '%SYSTEM%\' + AutoLoad = False + TraceActive = False + TraceFlags = [] + Left = 120 + Top = 16 + end + object DAConnectionManager1: TDAConnectionManager + MaxPoolSize = 10 + PoolTimeoutSeconds = 60 + PoolBehaviour = pbWait + WaitIntervalSeconds = 1 + Connections = < + item + Name = 'ADO' + ConnectionString = + 'ADO?AuxDriver=SQLOLEDB.1;Server=localhost;Database=Northwind;Use' + + 'rID=sa;Password=;' + Default = True + Tag = 0 + end> + DriverManager = DADriverManager1 + PoolingEnabled = True + Left = 152 + Top = 16 + end + object DAADODriver1: TDAADODriver + Left = 184 + Top = 16 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder_ServerMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder_ServerMain.pas new file mode 100644 index 0000000..dc7ded5 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ReportBuilder_ServerMain.pas @@ -0,0 +1,42 @@ +unit ReportBuilder_ServerMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + StdCtrls, uROClient, uROBINMessage, uROClientIntf, uROServer, uROIndyHTTPServer, + uROIndyTCPServer, uROPoweredByRemObjectsButton, + uDAEngine, uDAADODriver, uDAClasses, uDADriverManager; + +type + TReportBuilder_ServerMainForm = class(TForm) + ROMessage: TROBINMessage; + ROServer: TROIndyHTTPServer; + DADriverManager1: TDADriverManager; + DAConnectionManager1: TDAConnectionManager; + DAADODriver1: TDAADODriver; + RoPoweredByRemObjectsButton1: TRoPoweredByRemObjectsButton; + procedure FormCreate(Sender: TObject); + private + fAppPath: string; + public + property AppPath: string read fAppPath write fAppPath; + end; + +var + ReportBuilder_ServerMainForm: TReportBuilder_ServerMainForm; + +implementation + +uses DARBService_Impl; + + +{$R *.dfm} + +procedure TReportBuilder_ServerMainForm.FormCreate(Sender: TObject); +begin + fAppPath := ExtractFilePath(Application.ExeName); +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ServerArchive.raf b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ServerArchive.raf new file mode 100644 index 0000000..8cf3638 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Report Builder/ServerArchive.raf differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/SQL Access/SQLAccess.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/SQL Access/SQLAccess.Sample.html new file mode 100644 index 0000000..18a0ad9 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/SQL Access/SQLAccess.Sample.html @@ -0,0 +1,36 @@ + + + + + + + + + +

+ SQL Access Sample +

+ + +

Purpose

+ +

+This example treats two different SQL queries as if they are the same one. +One takes data from the SHIPPERS table and the other from the CUSTOMERS table.
The field mappings used when building the where clause isolate the developer from the SQL details and so allow the building of fairly complex where clauses without the need to do string concatenations in code.
+This sample also illustrates the use of various macro processors (TDAMSSQLMacroProcessor, TDAIBMacroProcessor, TDAOracleMacroProcessor, TDADBISAMMacroProcessor). +

+ +

Examine the Code

+
    +
  • + See the two SQL statements associated with the Customers dataset for the two connections for more details.. +
  • +
+

Note

+ +

+IMPORTANT: Keep in mind that the dataset's SQL property will always contain the statement you define and the dynamic WHERE clause only gets merged into it when opening the dataset. +

+ + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/SQL Access/SQLAccess.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/SQL Access/SQLAccess.bdsproj new file mode 100644 index 0000000..12aa3e0 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/SQL Access/SQLAccess.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + SQLAccess.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/SQL Access/SQLAccess.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/SQL Access/SQLAccess.dpr new file mode 100644 index 0000000..81c2c0c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/SQL Access/SQLAccess.dpr @@ -0,0 +1,14 @@ +program SQLAccess; + +uses + Forms, + SQLAccessMain in 'SQLAccessMain.pas' {SQLAccessMainForm}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'SQL Access'; + Application.CreateForm(TSQLAccessMainForm, SQLAccessMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/SQL Access/SQLAccess.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/SQL Access/SQLAccess.dproj new file mode 100644 index 0000000..baebb80 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/SQL Access/SQLAccess.dproj @@ -0,0 +1,72 @@ + + + {f72ad2e5-c6f5-43f9-9fd6-9c34a1ccae26} + SQLAccess.dpr + Debug + AnyCPU + DCC32 + SQLAccess.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + SQLAccess.dpr + + + + + + + MainSource + + +
SQLAccessMainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/SQL Access/SQLAccess.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/SQL Access/SQLAccess.res new file mode 100644 index 0000000..b946fbb Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/SQL Access/SQLAccess.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/SQL Access/SQLAccessMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/SQL Access/SQLAccessMain.dfm new file mode 100644 index 0000000..894d7c9 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/SQL Access/SQLAccessMain.dfm @@ -0,0 +1,558 @@ +object SQLAccessMainForm: TSQLAccessMainForm + Left = 319 + Top = 116 + AutoScroll = False + BorderWidth = 5 + Caption = 'SQL Access' + ClientHeight = 444 + ClientWidth = 576 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object PageControl1: TPageControl + Left = 0 + Top = 0 + Width = 576 + Height = 444 + ActivePage = TabSheet1 + Align = alClient + TabIndex = 0 + TabOrder = 0 + object TabSheet1: TTabSheet + BorderWidth = 5 + Caption = 'Where' + object Label1: TLabel + Left = 0 + Top = 76 + Width = 34 + Height = 13 + Caption = 'ID Like' + end + object Label2: TLabel + Left = 0 + Top = 100 + Width = 143 + Height = 13 + Caption = 'CompanyName Different Than' + end + object Label3: TLabel + Left = 0 + Top = 124 + Width = 114 + Height = 13 + Caption = 'PhoneNumber Equal To' + end + object Label4: TLabel + Left = 0 + Top = 148 + Width = 44 + Height = 13 + Caption = 'Order By:' + end + object ExecuteButton: TButton + Left = 410 + Top = 143 + Width = 113 + Height = 22 + Caption = 'E&xecute' + TabOrder = 5 + OnClick = ExecuteButtonClick + end + object Memo: TMemo + Left = 0 + Top = 199 + Width = 558 + Height = 207 + Align = alBottom + Anchors = [akLeft, akTop, akRight, akBottom] + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Courier New' + Font.Style = [] + ParentFont = False + TabOrder = 6 + end + object rgConnections: TRadioGroup + Left = 0 + Top = 0 + Width = 558 + Height = 65 + Align = alTop + Caption = 'Connection' + TabOrder = 0 + end + object eID: TEdit + Left = 152 + Top = 72 + Width = 255 + Height = 21 + TabOrder = 1 + Text = 'A%' + end + object eCompanyName: TEdit + Left = 152 + Top = 96 + Width = 255 + Height = 21 + TabOrder = 2 + Text = 'Noname' + end + object ePhoneNumber: TEdit + Left = 152 + Top = 120 + Width = 255 + Height = 21 + TabOrder = 3 + Text = '13456789' + end + object cbOrderBy: TComboBox + Left = 152 + Top = 144 + Width = 255 + Height = 21 + ItemHeight = 13 + TabOrder = 4 + end + end + object TabSheet2: TTabSheet + BorderWidth = 5 + Caption = 'Macros' + ImageIndex = 1 + object ProcessSQLButton: TButton + Left = 325 + Top = 6 + Width = 75 + Height = 22 + Caption = 'ProcessSQL' + TabOrder = 1 + OnClick = ProcessSQLButtonClick + end + object Memo1: TMemo + Left = 0 + Top = 74 + Width = 558 + Height = 141 + Align = alBottom + Anchors = [akLeft, akTop, akRight, akBottom] + Lines.Strings = ( + 'SELECT * FROM Orders WHERE OrderDate>{DateTime()}' + 'SELECT * FROM Orders WHERE OrderDate>{Date()}' + 'SELECT * FROM Orders WHERE OrderDate>{AddTime(Date(), 2, day)}' + + 'SELECT * FROM Orders WHERE OrderDate>{FormatDateTime('#39'12/22/2003' + + ' 22:10:22.123'#39')}' + 'SELECT * FROM Orders WHERE OrderDate>{FormatDate('#39'12/22/2003'#39')}' + 'SELECT {Length(CustomerID)} FROM Orders' + 'SELECT {TrimLeft(CustomerID)} FROM Orders' + 'SELECT {TrimRight(CustomerID)} FROM Orders' + 'SELECT {UpperCase(CustomerID)} FROM Orders' + 'SELECT {Copy(CustomerID, 2, 3)} FROM Orders') + TabOrder = 2 + end + object Memo2: TMemo + Left = 0 + Top = 219 + Width = 558 + Height = 187 + Align = alBottom + TabOrder = 4 + end + object rgProcessors: TRadioGroup + Left = 0 + Top = 0 + Width = 322 + Height = 71 + Caption = 'Processor' + Columns = 2 + ItemIndex = 0 + Items.Strings = ( + 'TMSSQLMacroProcessor' + 'TIBMacroProcessor' + 'TOracleMacroProcessor' + 'TDBISAMMacroProcessor') + TabOrder = 0 + end + object Panel1: TPanel + Left = 0 + Top = 215 + Width = 558 + Height = 4 + Align = alBottom + BevelOuter = bvNone + TabOrder = 3 + end + end + end + object DriverManager: TDADriverManager + DriverDirectory = '%SYSTEM%\' + TraceActive = False + TraceFlags = [] + Left = 24 + Top = 216 + end + object DAADODriver: TDAADODriver + Left = 54 + Top = 216 + end + object DAConnectionManager: TDAConnectionManager + Connections = < + item + Name = 'NorthwindCustomers' + ConnectionString = + 'ADO?Server=localhost;AuxDriver=SQLOLEDB.1;UserID=sa;Database=Nor' + + 'thwind;password=' + Description = 'Query that point to the Customers table' + Default = True + Tag = 0 + end + item + Name = 'NorthwindShippers' + ConnectionString = + 'ADO?Server=localhost;AuxDriver=SQLOLEDB.1;UserID=sa;Database=Nor' + + 'thwind;password=' + Description = 'Query that point to the Shippers table' + Default = False + Tag = 0 + end> + DriverManager = DriverManager + PoolingEnabled = False + Left = 88 + Top = 216 + end + object DASchema: TDASchema + ConnectionManager = DAConnectionManager + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'NorthwindCustomers' + TargetTable = 'Customers' + SQL = 'SELECT CustomerID,CompanyName,Phone FROM Customers' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'CustomerID' + end + item + DatasetField = 'CompanyName' + TableField = 'CompanyName' + end + item + DatasetField = 'PhoneNumber' + TableField = 'Phone' + end> + end + item + Connection = 'NorthwindShippers' + TargetTable = 'Shippers' + SQL = 'SELECT ShipperID, CompanyName, Phone FROM Shippers' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ShipperID' + end + item + DatasetField = 'CompanyName' + TableField = 'CompanyName' + end + item + DatasetField = 'PhoneNumber' + TableField = 'Phone' + end> + end> + Name = 'Customers' + Fields = < + item + Name = 'ID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CompanyName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PhoneNumber' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'NorthwindShippers' + TargetTable = 'Orders' + SQL = + 'SELECT OrderID, CustomerID, EmployeeID, OrderDate, RequiredDate,' + + #10' ShippedDate, ShipVia, Freight, ShipName, ShipAddress,'#10' ShipCit' + + 'y, ShipRegion, ShipPostalCode, ShipCountry'#10' FROM Orders' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'OrderID' + TableField = 'OrderID' + end + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'EmployeeID' + TableField = 'EmployeeID' + end + item + DatasetField = 'OrderDate' + TableField = 'OrderDate' + end + item + DatasetField = 'RequiredDate' + TableField = 'RequiredDate' + end + item + DatasetField = 'ShippedDate' + TableField = 'ShippedDate' + end + item + DatasetField = 'ShipVia' + TableField = 'ShipVia' + end + item + DatasetField = 'Freight' + TableField = 'Freight' + end + item + DatasetField = 'ShipName' + TableField = 'ShipName' + end + item + DatasetField = 'ShipAddress' + TableField = 'ShipAddress' + end + item + DatasetField = 'ShipCity' + TableField = 'ShipCity' + end + item + DatasetField = 'ShipRegion' + TableField = 'ShipRegion' + end + item + DatasetField = 'ShipPostalCode' + TableField = 'ShipPostalCode' + end + item + DatasetField = 'ShipCountry' + TableField = 'ShipCountry' + end> + end> + Name = 'Orders' + Fields = < + item + Name = 'OrderID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EmployeeID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OrderDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RequiredDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShippedDate' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipVia' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Freight' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipAddress' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCity' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipRegion' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipPostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCountry' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = <> + RelationShips = <> + UpdateRules = <> + Left = 24 + Top = 248 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/SQL Access/SQLAccessMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/SQL Access/SQLAccessMain.pas new file mode 100644 index 0000000..df4b8e4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/SQL Access/SQLAccessMain.pas @@ -0,0 +1,169 @@ +unit SQLAccessMain; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uDADriverManager, uDAEngine, uDAADODriver, uDAClasses, StdCtrls, + DB, uDADataTable, uDACDSDataTable, uDAADODataTable, ExtCtrls, + ComCtrls, uDAScriptingProvider; + +type + TSQLAccessMainForm = class(TForm) + DriverManager: TDADriverManager; + DAADODriver: TDAADODriver; + PageControl1: TPageControl; + TabSheet1: TTabSheet; + TabSheet2: TTabSheet; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + ExecuteButton: TButton; + Memo: TMemo; + rgConnections: TRadioGroup; + eID: TEdit; + eCompanyName: TEdit; + ePhoneNumber: TEdit; + ProcessSQLButton: TButton; + Memo1: TMemo; + Memo2: TMemo; + rgProcessors: TRadioGroup; + cbOrderBy: TComboBox; + Label4: TLabel; + DAConnectionManager: TDAConnectionManager; + Panel1: TPanel; + DASchema: TDASchema; + procedure ExecuteButtonClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure ProcessSQLButtonClick(Sender: TObject); + + private + { Private declarations } + public + { Public declarations } + end; + +var + SQLAccessMainForm: TSQLAccessMainForm; + +implementation + +uses uDAInterfaces, uDAMacroProcessors, uDAMacros; + +{$R *.dfm} + +procedure TSQLAccessMainForm.ExecuteButtonClick(Sender: TObject); +var + connname: string; + conn: IDAConnection; + ds: IDADataset; + i: integer; + orderby: integer; +begin + { In this example we are treating two different SQL queries like they were the same one. + One takes data from the SHIPPERS table when the other from the CUSTOMERS one. The field mappings + that are used when building the where clause isolate the developer from the SQL details and allow + you to build fairly complex where clauses without the need to do string concatenations in code. + + Examine the two sql statements associated with the Customers dataset for the two connections for + more details. The code below transparently works for both. + + IMPORTANT: Keep in mind the SQL property of a dataset will always and only reflect the statement you define + in the statement and the dynamic WHERE clause will only be merged to it when opening the dataset. + } + + Memo.Lines.Add('---------------'); + Memo.Lines.Add(''); + try + connname := Trim(Copy(rgConnections.Items[rgConnections.ItemIndex], 1, Pos('-', rgConnections.Items[rgConnections.ItemIndex]) - 1)); + conn := DAConnectionManager.NewConnection(connname, TRUE); + + ds := DASchema.NewDataset(conn, 'Customers'); + + { Note: we could have also created the dataset along with the field mappings and statements manually via code. + In some extremely dynamic situations that might be preferrable. } + + Memo.Lines.Add('Mappings'); + for i := 0 to ds.FieldCount - 1 do + Memo.Lines.Add(ds.fields[i].TableField + ' --> ' + ds.fields[i].Name); + Memo.Lines.Add(''); + + ds.Where.AddCondition('ID', cLike, eID.Text); + + if (eCompanyName.Text <> '') and (ds.Where.Clause <> '') then ds.Where.AddOperator(opAND); + + ds.Where.AddCondition('CompanyName', cDifferent, eCompanyName.Text); + + if (ePhoneNumber.Text <> '') and (ds.Where.Clause <> '') then ds.Where.AddOperator(opOR); + + ds.Where.AddCondition('PhoneNumber', cEqual, ePhoneNumber.Text); + + orderby := POS('order by', lowercase(ds.SQL)); + + if (orderby = 0) then begin + if (cbOrderBy.Text <> '') then ds.SQL := ds.SQL + ' ORDER BY ' + ds.Fieldbyname(cbOrderBy.Text).TableField; + end + else begin + if (cbOrderBy.Text = '') then ds.SQL := copy(ds.sql, 1, orderby - 1) + else + ds.SQL := copy(ds.sql, 1, orderby - 1) + ' ORDER BY ' + ds.Fieldbyname(cbOrderBy.Text).TableField; + end; + ds.Open; + finally + Memo.Lines.Add('SQL >>> ' + ds.SQL); + Memo.Lines.Add('WHERE >>> ' + ds.Where.Clause); + end; +end; + +procedure TSQLAccessMainForm.FormCreate(Sender: TObject); +var + i: integer; + conn: IDAConnection; + ds: IDADataset; +begin + with DAConnectionManager do + for i := 0 to (Connections.Count - 1) do begin + rgConnections.Items.Add(Connections[i].Name + ' - ' + Connections[i].Description); + end; + + rgConnections.ItemIndex := 0; + + conn := DAConnectionManager.NewConnection('NorthwindCustomers'); + ds := DASchema.NewDataset(conn, 'Customers'); + cbOrderBy.Items.Add(''); + for i := 0 to (ds.FieldCount - 1) do begin + cbOrderBy.Items.Add(ds.Fields[i].Name); + end; +end; + +procedure TSQLAccessMainForm.ProcessSQLButtonClick(Sender: TObject); +var + processor: TDASQLMacroProcessor; + savedShortDateFormat: string; + SavedDateSeparator, savedTimeSeparator: Char; +begin + case rgProcessors.ItemIndex of + 0: processor := TDAMSSQLMacroProcessor.Create; + 1: processor := TDAIBMacroProcessor.Create; + 2: processor := TDAOracleMacroProcessor.Create; + 3: processor := TDADBISAMMacroProcessor.Create; + else Exit; + end; + savedShortDateFormat := ShortDateFormat; + savedDateSeparator := DateSeparator; + savedTimeSeparator := TimeSeparator; + try + ShortDateFormat := 'MM/DD/YYYY'; + DateSeparator := '/'; + TimeSeparator := ':'; + Memo2.Lines.Text := processor.Eval(Memo1.Lines.Text) + finally + ShortDateFormat := savedShortDateFormat; + DateSeparator := savedDateSeparator; + TimeSeparator := savedTimeSeparator; + processor.Free; + end; +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Samples.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/Samples.html new file mode 100644 index 0000000..85e9711 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Samples.html @@ -0,0 +1,556 @@ + + + + + + + + + +

+ Data Abstract™ Samples for Delphi +

+ Please keep the following things in mind when working with the samples: +
    +
  • + ADO / Northwind Database. Most samples work on the Northwind database + that comes with Microsoft SQL Server 7.0 and 2003. For simplicity, the + samples + assume that MSSQL is running on the local machine and using an empty "sa" + password*. +
  • +
  • + If your setup differs, ensure that you adjust the samples accordingly before + trying to run them; locate and double-click the Schema component, select + the + ADO connection in Schema Modeler and change the connection string.
  • +
  • + *an empty "sa" password is NOT recommended on production systems.
  • +
  • + InterBase (or FireBird) / Employee Database. Those samples working with Borland + InterBase + will usually work against the EMPLOYEE.GDB database that is provided with + InterBase. + They will expect this database in the default location (c:\Program Files\Borland\InterBase\Examples). +
  • +
  • + If your setup differs,ensure that you adjust the samples accordingly before + trying to run them; locate and double-click the Schema component, select + the + IBX or DBX connection in Schema Modeler, and change the connection string.
  • + SDAC. Some of the sample applications provide the option to use + an SDAC based connection instead of ADO to talk to MSSQL. Please note that + to use + this option, you will need to drop a SDACDriver on the sample's form manually + and rebuild the sample; you will also need a valid license for SDAC from + Core + Lab for this.
  • + +
  • +

    + Report Builder Sample. This sample will require ReportBuilder 7 + from + Digital Metaphors. +

    +
  • +
+

+ + Getting Started

+

+ Most of the samples provide a project group containing + server and client projects. The standard procedure for testing these is as follows: + +

+
    +
  • Build or compile both projects.
  • +
  • Ensure that the server is the current project. Note: if there is + only one RemObjects SDK server contained within the project group, this step is + not needed because the next step will still work even if the lient is the current + project. 
  • +
  • Launch the server (IDE menu: RemObjects | Launch Server Executable).
  • +
  • Examine the server window. Some samples require that you activate one or more channels. +
  • +
  • Make the client the current project.
  • +
  • Run the client.
  • +
+

+ Having tested the sample, next examine the database schema and the services provided. Do this by examining + the Schema Modeler and Service Builder tools provided: +

+
    +
  • Schema Modeler +
      +
    • locate the server form or datamodule containing the TDASchema component
    • +
    • double click on the TDASchema
    • +
    +
  • +
  • Service Builder +
      +
    • Ensure that the server is the current project.
    • +
    • Open the Service Builder (IDE menu: RemObjects | Edit Service Library).
    • +
    +
  • +
+

+ Note: the Schema Modeler item available via the IDE's main menu + (RemObjects | Schema Modeler) will open a fresh instance, not the one already referenced + by the other components.

+

+

+

+ + Sample Categories

+
    +
  • Some samples are shown below in more than one category. 
  • +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Category +

+
+

+ Samples +

+
+ Introduction + First Sample
+ Login Sample
+ Calculated Fields
+ Custom User Logon
+ MegaDemo
+ Local Schema
+ Quick Open
+ Intermediate + Briefcase
+ Business Processor
+ BusinessRulesScripts
+ Data Streamers
+ Dynamic Where
+ Fetch
+ Memory Data
+ Multi Level Detail
+ SQL Access
+ Stored Procedures
+ Strongly Typed
+ Architecture + Connection By User
+ Local Schema +
+ Service Methods
+ Strongly Typed
+ Advanced + Connection By User
+ Connection Pooling
+ Dynamic SQL
+ Exported DataTables
+ Regular Expressions
+ Service Methods
+ XSLT
+ Third Party + + QuantumGrid 4
+ Report Builder
+

+ Sample Descriptions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Name + Category + Description
+ Briefcase + Intermediate + This example shows how to create a briefcase model using a Data Abstract + Client.
+ Business Processor + Intermediate + This is a good example to show the advantages of a multi-tier architecture: systems + can be updated via a server re-deploy without the need to update any client. Also, + the sample shows advanced handling on the client of any errors returned from the + server.
+ BusinessRulesScripts + Intermediate +

+ This example demonstrates how client side scripts can be modified on the server + and then downloaded to the client via a simple call.
+ When you compile and launch the server, it displays a memo containing various client + side rules executed within event handlers such as BeforePost.

+
+ Calculated Fields + Introduction + This example shows how to handle calculated fields on the server side and client + side. +
+ Connection By User + Architecture
+ Advanced
+ Shows various methods how a standard application (i.e. not a RemObjects server or + client) can obtain a database connection at runtime. +
+ The application uses four Data Abstract components:  TDAADODriver, + TDADriverManager, TDAConnectionManager and + TROInMemorySessionManager.
+ Connection Pooling + Advanced + Shows how connections can be managed via a pool (ADO/Northwind & IBX/Employee + connections). +
+ Custom User Logon + Introduction +

+ A very simple example showing two methods of opening a connection at runtime:

+
    +
  • creates and opens the connection in a single call passing the UserID/Password values + supplied.
  • +
  • creates the connection and opens it afterwards.
  • +
+
+ Data Streamers + Intermediate +

+ This example shows how a dataset can be written to a stream and read from it using + the TDABinDataStreamer class.
+ When you compile and launch this example it displays two grids, the sources for + which are datasets dynamically read using TStream.

+
+ Dynamic SQL + Advanced +

+ This demo shows how to retrieve schema and/or data via SQL generated at runtime.
+ When you compile and run the server, you will see it contains a memo displaying + "SQL details generated for Update will be displayed here". The demo does + not actually attempt to update server data but merely displays the fields that would + be updated by processing the delta.

+
+ Dynamic Where + Intermediate + This example illustrates how work with the Dynamic Where.
+ Exported DataTables + Advanced + This example illustrates the functionality of Exported Datatables.This allows + you to receive and update data not declared within the Schema.
+ Fetch + Intermediate + This demo shows how to fetch paged orders and also master/detail via single server + call. +
+ First Sample + Introduction + This sample illustrates the basic functionality of Data Abstract. +
+ The application, which shows how to receive data from a remote database, was created + using the Data Abstract 4.0 Combo Server wizard.
+ Local Schema + Introduction
+ Architecture
+ A simple demo showing the use of several Data Abstract components to select/update + a range of Customer records.
+ Login Sample + Introduction +

+ This example shows how to provide a simple Login.
+ The login data is held in Northwind's Employees table, with the FirstName + and LastName fields used for UserName and Password respectively. +

+
+ MegaDemo + Introduction + The sample shows: +
    +
  • How we can work with several connections to different databases (Northwind - MS + SQL and Employee - Firebird).
  • +
  • How we can implement security and access rights in our application.
  • +
  • Master-detail relations between tables is implemented via a service that provides + a list of orders by user id.
  • +
+
+ Memory Data + Intermediate +

+ This example shows how to create and populate a virtual dataset dynamically.
+ The client displays two grids: +

+
    +
  • Top Grid: this displays the primary keys of one or more datasets from Northwind.  +
  • +
  • Bottom Grid: this displays the names and sizes of files contained in the + specified disk folder.
  • +
+
+ Multi Level Detail + Intermediate + This sample shows how to implement master/detail/detail updates as simply as possible.
+ QuantumGrid 4 + Third Party + This example demonstrates how to use the QuantumGrid4 (or QuantumGrid5) + product from Developer Express (contact www.devexpress.com. for licensing + information if you do not already have the product). +
+ Quick Open + Introduction + This example shows how to load TDACDSDataTable data using the TDABinDataStreamer.
+ Regular Expressions + Advanced + This sample illustrates the support provided for regular expressions.
+ Report Builder + Third Party + Requires ReportBuilder 7 from Digital Metaphors.
+ This example shows how to create the report on the server, stream it to the client + and then display to the client.
+ Service Methods + Architecture
+ Advanced
+  This example illustrates the methods of the IDataAbstractService base + service. It shows the options available to change the server's operations and also + shows the order in which server methods are invoked. +
+ SQL Access + Intermediate + This example treats two different SQL queries as if they are the same one. One takes + data from the SHIPPERS table and the other from the CUSTOMERS + table. +
+ The field mappings used when building the where clause isolate the developer from + the SQL details and so allow the building of fairly complex where clauses without + the need to do string concatenations in code.
+ This sample also illustrates the use of various macro processors (TMSSQLMacroProcessor, + TIBMacroProcessor, TOracleMacroProcessor, + TDBISAMMacroProcessor). +
+ Stored Procedures + Intermediate +  This example shows how to use the IDAConnection's GetStoredProcedureNames + method to retrieve a list of stored procedures for the connection. +
+ It also shows how to use IDAConnection's NewCommand to access the IDASQLCommand + interface
+ Strongly Typed + Architecture
+ Intermediate
+  This example shows usage of business rules. It enforces additional rules that + might change over time. This is a good example to show the advantages of a multi-tier + architecture: systems can be updated via a server re-deploy without the need to + update any client.
+ XSLT + Advanced + This example shows how to import dataset data into an .xml file by using the TDAXmlDataStreamer. + Exporting dataset changes to an .xml file is also shown.
+
+

+ Support

+ +

+ If you encounter any problems or have questions regarding the Samples, + please feel + free to ask on our newsgroup at + news://news.remobjects.com/remobjects.public.dataabstract.delphi. +

+

+ Thank you very much,
Your RemObjects Team
http://www.remobjects.com +

+

+   +

+ + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/RODLFILE.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/RODLFILE.res new file mode 100644 index 0000000..c0b5ce3 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/RODLFILE.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods.Sample.html new file mode 100644 index 0000000..2868c91 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods.Sample.html @@ -0,0 +1,27 @@ + + + + + + + + +

Service Methods

+
+

Purpose

+ +

This example illustrates the methods of the IDataAbstractService base service. + It shows the options available to change the server's operations and also shows the order in which server methods are invoked.
+ In this example, all server methods are called manually. Normally, this is not necessary, as the TDARemoteDataAdapter calls them all for you. +

+

Examine the Code

+

+ See how the + IDataAbstractService methods are called manually in + ServiceMethods_ClientMain.pas +

+ + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods.bdsgroup b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods.bdsgroup new file mode 100644 index 0000000..8333b42 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods.bdsgroup @@ -0,0 +1,20 @@ + + + + + + + + + + + + + ServiceMethods_Server.bdsproj + ServiceMethods_Client.bdsproj + ServiceMethods_Server.exe ServiceMethods_Client.exe + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods.bpg b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods.bpg new file mode 100644 index 0000000..fe9fcfa --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = ServiceMethods_Server.exe ServiceMethods_Client.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +ServiceMethods_Client.exe: ServiceMethods_Client.dpr + $(DCC) + +ServiceMethods_Server.exe: ServiceMethods_Server.dpr + $(DCC) + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods.groupproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods.groupproj new file mode 100644 index 0000000..143ef56 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods.groupproj @@ -0,0 +1,40 @@ + + + {e6c919e3-5360-42fe-9531-375446f3300f} + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethodsLibrary.rodl b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethodsLibrary.rodl new file mode 100644 index 0000000..ae93bfa --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethodsLibrary.rodl @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethodsLibrary_Intf.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethodsLibrary_Intf.pas new file mode 100644 index 0000000..588654f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethodsLibrary_Intf.pas @@ -0,0 +1,77 @@ +unit ServiceMethodsLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf, + {Used RODLs:} DataAbstract4_Intf; + +const + { Library ID } + LibraryUID = '{4E3F13F7-7BFC-4A77-AAB9-D9A3CF49CEB8}'; + TargetNamespace = ''; + + { Service Interface ID's } + IServiceMethods_Service_IID : TGUID = '{7FD71BB0-07C8-479C-B684-75CD9DEF3917}'; + + { Event ID's } + +type + { Forward declarations } + IServiceMethods_Service = interface; + + + { IServiceMethods_Service } + IServiceMethods_Service = interface(IDataAbstractService) + ['{7FD71BB0-07C8-479C-B684-75CD9DEF3917}'] + end; + + { CoServiceMethods_Service } + CoServiceMethods_Service = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IServiceMethods_Service; + end; + + { TServiceMethods_Service_Proxy } + TServiceMethods_Service_Proxy = class(TDataAbstractService_Proxy, IServiceMethods_Service) + protected + function __GetInterfaceName:string; override; + + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uROSerializer, uRORes; + +{ CoServiceMethods_Service } + +class function CoServiceMethods_Service.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IServiceMethods_Service; +begin + result := TServiceMethods_Service_Proxy.Create(aMessage, aTransportChannel); +end; + +function TServiceMethods_Service_Proxy.__GetInterfaceName:string; +begin + result := 'ServiceMethods_Service'; +end; + +initialization + RegisterProxyClass(IServiceMethods_Service_IID, TServiceMethods_Service_Proxy); + + +finalization + UnregisterProxyClass(IServiceMethods_Service_IID); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethodsLibrary_Invk.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethodsLibrary_Invk.pas new file mode 100644 index 0000000..4c2758a --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethodsLibrary_Invk.pas @@ -0,0 +1,36 @@ +unit ServiceMethodsLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Used RODL Intf's:} DataAbstract4_Intf, + {Used RODL Invk's:} DataAbstract4_Invk, + {Generated:} ServiceMethodsLibrary_Intf; + +type + {$M+} + TServiceMethods_Service_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + end; + {$M-} + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Client.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Client.bdsproj new file mode 100644 index 0000000..6e397d1 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Client.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + ServiceMethods_Client.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Client.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Client.dpr new file mode 100644 index 0000000..c73ae67 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Client.dpr @@ -0,0 +1,13 @@ +program ServiceMethods_Client; + +uses + Forms, + ServiceMethods_ClientMain in 'ServiceMethods_ClientMain.pas' {ServiceMethods_ClientMainForm}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TServiceMethods_ClientMainForm, ServiceMethods_ClientMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Client.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Client.dproj new file mode 100644 index 0000000..b9baccc --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Client.dproj @@ -0,0 +1,72 @@ + + + {f5641855-869a-4e82-b3c8-167372a7b6d0} + ServiceMethods_Client.dpr + Debug + AnyCPU + DCC32 + ServiceMethods_Client.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + ServiceMethods_Client.dpr + + + + + + + MainSource + + +
ServiceMethods_ClientMainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Client.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Client.res new file mode 100644 index 0000000..b946fbb Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Client.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_ClientMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_ClientMain.dfm new file mode 100644 index 0000000..2d0478e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_ClientMain.dfm @@ -0,0 +1,674 @@ +object ServiceMethods_ClientMainForm: TServiceMethods_ClientMainForm + Left = 328 + Top = 246 + AutoScroll = False + Caption = 'ServiceMethods Client' + ClientHeight = 445 + ClientWidth = 804 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + ShowHint = True + OnCreate = FormCreate + OnDestroy = FormDestroy + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object LogMessage: TLabel + Left = 150 + Top = 207 + Width = 647 + Height = 16 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + Caption = 'Please run GetSchema first!' + Font.Charset = DEFAULT_CHARSET + Font.Color = clRed + Font.Height = -15 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object PageControl: TPageControl + Left = 0 + Top = 0 + Width = 804 + Height = 198 + ActivePage = tsGetData + Align = alTop + TabOrder = 0 + OnChange = PageControlChange + object tsGetSchema: TTabSheet + Caption = 'GetSchema' + object Label1: TLabel + Left = 0 + Top = 0 + Width = 796 + Height = 26 + Align = alTop + AutoSize = False + Caption = 'Requires that '#39'AllowSchemaAccess'#39' is enabled on the server' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + WordWrap = True + end + end + object tsGetTableSchema: TTabSheet + Caption = 'GetTableSchema' + ImageIndex = 4 + object Label2: TLabel + Left = 9 + Top = 37 + Width = 40 + Height = 13 + Caption = 'Dataset:' + end + object Label8: TLabel + Left = 0 + Top = 0 + Width = 796 + Height = 26 + Align = alTop + AutoSize = False + Caption = 'Requires that '#39'AllowSchemaAccess'#39' is enabled on the server' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + WordWrap = True + end + object cbGetTableSchema: TComboBox + Left = 126 + Top = 33 + Width = 145 + Height = 21 + Style = csDropDownList + ItemHeight = 0 + TabOrder = 0 + end + end + object tsGetData: TTabSheet + Caption = 'GetData' + ImageIndex = 1 + object Label6: TLabel + Left = 9 + Top = 37 + Width = 40 + Height = 13 + Caption = 'Dataset:' + end + object Label7: TLabel + Left = 0 + Top = 0 + Width = 796 + Height = 26 + Align = alTop + AutoSize = False + Caption = + 'Requires that '#39'AllowDataAccess'#39', '#39'AcquireConnection'#39' and '#39'AllowW' + + 'hereSQL'#39' is enabled on the server. (AllowWhereSQL is needed for ' + + 'UserFilter)' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + WordWrap = True + end + object Label4: TLabel + Left = 9 + Top = 84 + Width = 58 + Height = 13 + Caption = 'MaxRecord:' + end + object Label19: TLabel + Left = 9 + Top = 108 + Width = 47 + Height = 13 + Caption = 'UserFilter:' + end + object cbGetData: TComboBox + Left = 126 + Top = 33 + Width = 145 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 0 + OnChange = cbGetDataChange + end + object cbIncludeSchema: TCheckBox + Left = 9 + Top = 58 + Width = 130 + Height = 17 + Alignment = taLeftJustify + Caption = 'IncludeSchema' + Checked = True + State = cbChecked + TabOrder = 1 + end + object spMaxRecord: TSpinEdit + Left = 126 + Top = 79 + Width = 50 + Height = 22 + MaxValue = 0 + MinValue = 0 + TabOrder = 2 + Value = 10 + end + object vleGetData: TValueListEditor + Left = 610 + Top = 26 + Width = 186 + Height = 144 + Align = alRight + TabOrder = 3 + TitleCaptions.Strings = ( + 'Parameter' + 'Value') + ColWidths = ( + 86 + 94) + end + object GetDataUserFilter: TEdit + Left = 126 + Top = 103 + Width = 477 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 4 + end + end + object tsUpdateData: TTabSheet + Caption = 'UpdateData' + ImageIndex = 2 + object Label18: TLabel + Left = 0 + Top = 0 + Width = 796 + Height = 26 + Align = alTop + AutoSize = False + Caption = + 'Requires that '#39'AllowDataAccess'#39', '#39'ProcessDeltasWithoutUpdateRule' + + 's'#39' and '#39'AcquireConnection'#39' is enabled on the server' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + WordWrap = True + end + object Panel1: TPanel + Left = 0 + Top = 26 + Width = 610 + Height = 144 + Align = alClient + BevelOuter = bvNone + TabOrder = 0 + object Panel2: TPanel + Left = 0 + Top = 0 + Width = 610 + Height = 26 + Align = alTop + BevelOuter = bvNone + TabOrder = 0 + object Label15: TLabel + Left = 9 + Top = 6 + Width = 40 + Height = 13 + Caption = 'Dataset:' + end + object Label17: TLabel + Left = 360 + Top = 6 + Width = 58 + Height = 13 + Caption = 'MaxRecord:' + end + object RefreshButton: TBitBtn + Left = 208 + Top = 1 + Width = 77 + Height = 22 + Caption = 'Refresh' + TabOrder = 1 + OnClick = RefreshButtonClick + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000000000000000000000000000000000000FF00FF00A377 + 7400A3777400A3777400A3777400A3777400A3777400A3777400A3777400A377 + 7400A3777400A3777400A377740090605D00FF00FF00FF00FF00FF00FF00A67B + 7500F2E2D300F2E2D300FFE8D100EFDFBB00FFE3C500FFDEBD00FFDDBA00FFD8 + B200FFD6AE00FFD2A500FFD2A30093635F00FF00FF00FF00FF00FF00FF00AB7F + 7700F3E7DA00F3E7DA0000990000AFD8A00070C56F0040AA2F0080BB5D00EFD4 + A600FFD6AE00FFD2A300FFD2A30096666200FF00FF00FF00FF00FF00FF00B083 + 7900F4E9DD00F4E9DD00009900000099000000990000009900000099000040AA + 2E00FFD8B200FFD4A900FFD4A9009A696400FF00FF00FF00FF00FF00FF00B689 + 7C00F5EDE400F5EDE4000099000000990000109E0D00CFD6A300FFE4C80020A2 + 1900FFD8B200FFD7B000FFD7B0009E6C6600FF00FF00FF00FF00FF00FF00BC8E + 7E00F7EFE800F7EFE80000990000009900000099000000990000FFE4C800EFDE + BA00FFD8B200FFD7B000FFD9B400A26F6800FF00FF00FF00FF00FF00FF00C395 + 8100F8F3EF00F8F3EF00F8F3EF00FFF4E800FFF4E800FFF4E800EFE3C400EFE3 + C400FFE4C800FFDEBD00FFDDBB00A5736A00FF00FF00FF00FF00FF00FF00CA9B + 8400F9F5F200FBFBFB00FFF4E800FFF4E800FFF4E80000990000009900000099 + 0000FFE8D100FFE3C500FFE1C200A8766C00FF00FF00FF00FF00FF00FF00D2A1 + 8700F9F9F900FBFBFB00109F0F00AFD8A000FFF4E800AFD8A000009900000099 + 0000FFE8D100FFE4C800FFE3C600AC796E00FF00FF00FF00FF00FF00FF00D9A8 + 8A00FBFBFB00FFFFFF0070C56F00009900000099000000990000009900000099 + 0000FFE8D100FFE8D100FFE6CE00AE7B7100FF00FF00FF00FF00FF00FF00DFAE + 8C00FCFCFC00FFFFFF00FFFFFF0070C56F000099000000990000AFD8A0000099 + 0000FFE8D100FFC8C200FFB0B000B07D7200FF00FF00FF00FF00FF00FF00E5B3 + 8F00FDFDFD00FDFDFD00FFFFFF00FFFFFF00FFFFFE00FFFAF600FFF9F300FFF5 + EA00F4DECE00B27F7300B27F7300B27F7300FF00FF00FF00FF00FF00FF00EAB8 + 9100FEFEFE00FEFEFE00FFFFFF00FFFFFF00FFFFFF00FFFFFE00FFFAF600FFF9 + F300F5E1D200B27F7300EDA75400CB987F00FF00FF00FF00FF00FF00FF00EFBC + 9200FFFFFF00FFFFFF00FCFCFC00FAFAFA00F7F7F700F5F5F500F2F1F100F0ED + EA00E9DAD000B27F7300D4A18300D09D8100FF00FF00FF00FF00FF00FF00F2BF + 9400DCA98700DCA98700DCA98700DCA98700DCA98700DCA98700DCA98700DCA9 + 8700DCA98700B27F7300D8A58500FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00} + end + object cbUpdateData: TComboBox + Left = 57 + Top = 2 + Width = 145 + Height = 21 + Style = csDropDownList + ItemHeight = 0 + TabOrder = 0 + OnChange = cbUpdateDataChange + end + object updateDataMaxRecord: TSpinEdit + Left = 431 + Top = 1 + Width = 50 + Height = 22 + MaxValue = 0 + MinValue = 0 + TabOrder = 2 + Value = 10 + end + end + object DBGrid1: TDBGrid + Left = 0 + Top = 26 + Width = 610 + Height = 96 + Align = alClient + DataSource = DataSource + TabOrder = 1 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object DBNavigator1: TDBNavigator + Left = 0 + Top = 122 + Width = 610 + Height = 22 + DataSource = DataSource + VisibleButtons = [nbFirst, nbPrior, nbNext, nbLast, nbInsert, nbDelete, nbEdit, nbPost, nbCancel] + Align = alBottom + TabOrder = 2 + end + end + object ParamPanel: TPanel + Left = 610 + Top = 26 + Width = 186 + Height = 144 + Align = alRight + BevelOuter = bvNone + TabOrder = 1 + object vleUpdateData: TValueListEditor + Left = 0 + Top = 0 + Width = 186 + Height = 144 + Align = alClient + TabOrder = 0 + ColWidths = ( + 93 + 87) + end + end + end + object tsSQLGetData: TTabSheet + Caption = 'SQLGetData' + ImageIndex = 6 + object Label11: TLabel + Left = 9 + Top = 33 + Width = 24 + Height = 13 + Caption = 'SQL:' + end + object Label12: TLabel + Left = 9 + Top = 139 + Width = 58 + Height = 13 + Caption = 'MaxRecord:' + end + object Label13: TLabel + Left = 0 + Top = 0 + Width = 796 + Height = 26 + Align = alTop + AutoSize = False + Caption = + 'Requires that '#39'AllowDataAccess'#39', '#39'AllowExecuteSQL'#39' and '#39'AcquireC' + + 'onnection'#39' is enabled on the server' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + WordWrap = True + end + object sqlIncludeSchema: TCheckBox + Left = 9 + Top = 113 + Width = 130 + Height = 17 + Alignment = taLeftJustify + Caption = 'IncludeSchema' + Checked = True + State = cbChecked + TabOrder = 1 + end + object sqlMaxRecords: TSpinEdit + Left = 126 + Top = 134 + Width = 50 + Height = 22 + MaxValue = 0 + MinValue = 0 + TabOrder = 2 + Value = 10 + end + object memoDQLGetData: TMemo + Left = 126 + Top = 33 + Width = 600 + Height = 75 + Lines.Strings = ( + 'select * from customers') + ScrollBars = ssVertical + TabOrder = 0 + end + end + object tsGetCommandSchema: TTabSheet + Caption = 'GetCommandSchema' + ImageIndex = 5 + object Label5: TLabel + Left = 9 + Top = 37 + Width = 50 + Height = 13 + Caption = 'Command:' + end + object Label3: TLabel + Left = 0 + Top = 0 + Width = 800 + Height = 26 + Align = alTop + AutoSize = False + Caption = 'Requires that '#39'AllowSchemaAccess'#39' is enabled on the server' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + WordWrap = True + end + object cbGetCommandSchema: TComboBox + Left = 126 + Top = 33 + Width = 145 + Height = 24 + Style = csDropDownList + ItemHeight = 0 + TabOrder = 0 + end + end + object tsExecuteCommand: TTabSheet + Caption = 'ExecuteCommand' + ImageIndex = 3 + object Label9: TLabel + Left = 9 + Top = 37 + Width = 50 + Height = 13 + Caption = 'Command:' + end + object Label10: TLabel + Left = 0 + Top = 0 + Width = 800 + Height = 26 + Align = alTop + AutoSize = False + Caption = + 'Requires that '#39'AllowDataAccess'#39', '#39'AllowExecuteCommands'#39' and '#39'Acq' + + 'uireConnection'#39' is enabled on the server' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + WordWrap = True + end + object cbExecuteCommand: TComboBox + Left = 126 + Top = 33 + Width = 145 + Height = 24 + Style = csDropDownList + ItemHeight = 0 + TabOrder = 0 + OnChange = cbExecuteCommandChange + end + object vleExecuteCommand: TValueListEditor + Left = 610 + Top = 26 + Width = 186 + Height = 144 + Align = alRight + KeyOptions = [keyUnique] + TabOrder = 1 + TitleCaptions.Strings = ( + 'Parameter' + 'Value') + ColWidths = ( + 81 + 141) + end + end + object tsExecuteCommandEx: TTabSheet + Caption = 'ExecuteCommandEx' + ImageIndex = 8 + object Label20: TLabel + Left = 0 + Top = 0 + Width = 800 + Height = 26 + Align = alTop + AutoSize = False + Caption = + 'Requires that '#39'AllowDataAccess'#39', '#39'AllowExecuteCommands'#39' and '#39'Acq' + + 'uireConnection'#39' is enabled on the server' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + WordWrap = True + end + object Label21: TLabel + Left = 9 + Top = 37 + Width = 50 + Height = 13 + Caption = 'Command:' + end + object cbExecuteCommandEx: TComboBox + Left = 126 + Top = 33 + Width = 145 + Height = 24 + Style = csDropDownList + ItemHeight = 0 + TabOrder = 0 + OnChange = cbExecuteCommandExChange + end + object vleExecuteCommandEx: TValueListEditor + Left = 610 + Top = 26 + Width = 186 + Height = 144 + Align = alRight + KeyOptions = [keyUnique] + TabOrder = 1 + TitleCaptions.Strings = ( + 'Parameter' + 'Value') + ColWidths = ( + 81 + 141) + end + end + object tsSQLExecuteCommand: TTabSheet + Caption = 'SQLExecuteCommand' + ImageIndex = 7 + object Label14: TLabel + Left = 0 + Top = 0 + Width = 796 + Height = 26 + Align = alTop + AutoSize = False + Caption = + 'Requires that '#39'AllowDataAccess'#39', '#39'AllowExecuteSQL'#39' and '#39'AcquireC' + + 'onnection'#39' is enabled on the server' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + WordWrap = True + end + object Label16: TLabel + Left = 9 + Top = 33 + Width = 24 + Height = 13 + Caption = 'SQL:' + end + object MemoSQLExecuteCommand: TMemo + Left = 126 + Top = 33 + Width = 600 + Height = 75 + Lines.Strings = ( + + 'update orders set CustomerID = '#39'AROUT'#39' where CustomerID = '#39'AROUT' + + #39) + ScrollBars = ssVertical + TabOrder = 0 + end + end + end + object RunButton: TButton + Left = 3 + Top = 204 + Width = 139 + Height = 22 + Caption = 'RunButton' + TabOrder = 1 + OnClick = RunButtonClick + end + object Memo: TMemo + Left = 1 + Top = 232 + Width = 804 + Height = 213 + Align = alCustom + Anchors = [akLeft, akTop, akRight, akBottom] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Courier New' + Font.Style = [] + ParentFont = False + ScrollBars = ssBoth + TabOrder = 2 + end + object ClearLogButton: TButton + Left = 724 + Top = 204 + Width = 75 + Height = 22 + Anchors = [akTop, akRight] + Caption = 'Clear log' + TabOrder = 3 + OnClick = ClearLogButtonClick + end + object Channel: TROWinInetHTTPChannel + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/BIN' + ServerLocators = <> + DispatchOptions = [] + Left = 3 + Top = 234 + end + object BinMessage: TROBinMessage + Left = 30 + Top = 234 + end + object Service: TRORemoteService + Message = BinMessage + Channel = Channel + ServiceName = 'ServiceMethods_Service' + Left = 85 + Top = 234 + end + object Streamer: TDABinDataStreamer + Left = 58 + Top = 234 + end + object DataSource: TDADataSource + Left = 113 + Top = 234 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_ClientMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_ClientMain.pas new file mode 100644 index 0000000..7a56832 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_ClientMain.pas @@ -0,0 +1,688 @@ +unit ServiceMethods_ClientMain; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uRORemoteService, uROClient, uROBinMessage, + uROWinInetHttpChannel, uDAScriptingProvider, uDADataTable, + uDACDSDataTable, uDADataStreamer, uDABinAdapter, uDARemoteDataAdapter, + ComCtrls, StdCtrls, ServiceMethodsLibrary_Intf, uDAClasses, uDAInterfaces, + Spin, Grids, ValEdit, DB, DBCtrls, DBGrids, ExtCtrls, Buttons; + +type + TServiceMethods_ClientMainForm = class(TForm) + Channel: TROWinInetHTTPChannel; + BinMessage: TROBinMessage; + Service: TRORemoteService; + Streamer: TDABinDataStreamer; + PageControl: TPageControl; + tsGetSchema: TTabSheet; + tsGetData: TTabSheet; + tsUpdateData: TTabSheet; + tsExecuteCommand: TTabSheet; + tsGetTableSchema: TTabSheet; + tsGetCommandSchema: TTabSheet; + tsSQLGetData: TTabSheet; + tsSQLExecuteCommand: TTabSheet; + Label1: TLabel; + RunButton: TButton; + Memo: TMemo; + cbGetTableSchema: TComboBox; + Label2: TLabel; + Label5: TLabel; + cbGetCommandSchema: TComboBox; + Label6: TLabel; + cbGetData: TComboBox; + Label7: TLabel; + Label8: TLabel; + Label3: TLabel; + cbIncludeSchema: TCheckBox; + Label4: TLabel; + spMaxRecord: TSpinEdit; + cbExecuteCommand: TComboBox; + Label9: TLabel; + vleGetData: TValueListEditor; + vleExecuteCommand: TValueListEditor; + Label10: TLabel; + Label11: TLabel; + sqlIncludeSchema: TCheckBox; + Label12: TLabel; + sqlMaxRecords: TSpinEdit; + Label13: TLabel; + memoDQLGetData: TMemo; + Label14: TLabel; + MemoSQLExecuteCommand: TMemo; + Label16: TLabel; + LogMessage: TLabel; + Panel1: TPanel; + Panel2: TPanel; + Label15: TLabel; + cbUpdateData: TComboBox; + DBGrid1: TDBGrid; + DBNavigator1: TDBNavigator; + DataSource: TDADataSource; + ParamPanel: TPanel; + vleUpdateData: TValueListEditor; + Label17: TLabel; + updateDataMaxRecord: TSpinEdit; + RefreshButton: TBitBtn; + Label19: TLabel; + GetDataUserFilter: TEdit; + Label18: TLabel; + ClearLogButton: TButton; + tsExecuteCommandEx: TTabSheet; + Label20: TLabel; + Label21: TLabel; + cbExecuteCommandEx: TComboBox; + vleExecuteCommandEx: TValueListEditor; + procedure PageControlChange(Sender: TObject); + procedure RunButtonClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure cbGetDataChange(Sender: TObject); + procedure cbExecuteCommandChange(Sender: TObject); + procedure cbUpdateDataChange(Sender: TObject); + procedure RefreshButtonClick(Sender: TObject); + procedure ClearLogButtonClick(Sender: TObject); + procedure cbExecuteCommandExChange(Sender: TObject); + private + { Private declarations } + FService: IServiceMethods_Service; + Schema: TDASchema; + procedure Log(Str: string); + procedure FillCB(ACombobox: Tcombobox; AItems: TDASQLCommandCollection); + function isNeedSchema: boolean; + procedure LogDataset(ADataset: TDACDSDataTable); + procedure FillUpdateDataDataset; + public + { Public declarations } + procedure GetSchema; + procedure GetData; + procedure UpdateData; + procedure ExecuteCommand; + procedure ExecuteCommandEx; + procedure GetTableSchema; + procedure GetCommandSchema; + procedure SQLGetData; + procedure SQLExecuteCommand; + end; + +var + ServiceMethods_ClientMainForm: TServiceMethods_ClientMainForm; + +implementation +uses + DataAbstract4_Intf, uDADelta, uROTypes, uROXMLIntf; +{$R *.dfm} + +procedure TServiceMethods_ClientMainForm.PageControlChange( + Sender: TObject); +begin + RunButton.Caption := PageControl.ActivePage.Caption; + isNeedSchema; + if PageControl.ActivePage = tsGetData then cbGetDataChange(cbGetData) + else if PageControl.ActivePage = tsExecuteCommand then cbExecuteCommandChange(cbExecuteCommand) + else if PageControl.ActivePage = tsExecuteCommandEx then cbExecuteCommandExChange(cbExecuteCommandEx) + else if PageControl.ActivePage = tsUpdateData then cbUpdateDataChange(cbUpdateData); + +end; + +procedure TServiceMethods_ClientMainForm.RunButtonClick(Sender: TObject); +begin + if PageControl.ActivePage = tsGetSchema then GetSchema + else if PageControl.ActivePage = tsGetData then GetData + else if PageControl.ActivePage = tsUpdateData then UpdateData + else if PageControl.ActivePage = tsExecuteCommand then ExecuteCommand + else if PageControl.ActivePage = tsExecuteCommandEx then ExecuteCommandEx + else if PageControl.ActivePage = tsGetTableSchema then GetTableSchema + else if PageControl.ActivePage = tsGetCommandSchema then GetCommandSchema + else if PageControl.ActivePage = tsSQLGetData then SQLGetData + else if PageControl.ActivePage = tsSQLExecuteCommand then SQLExecuteCommand + ; + Log(''); +end; + +procedure TServiceMethods_ClientMainForm.ExecuteCommand; +var + aRowsAffacted: integer; + dataparam: DataParameterArray; + i: integer; +begin + if isNeedSchema then Exit; + Log('***ExecuteCommand***'); + try + dataparam := DataParameterArray.Create; + try + for i := 0 to vleExecuteCommand.Strings.Count - 1 do begin + with dataparam.Add do begin + Name := AnsiToUtf8(vleExecuteCommand.Keys[i + 1]); + Value := vleExecuteCommand.Values[Name]; + end; + end; + aRowsAffacted := FService.ExecuteCommand(AnsiToUtf8(cbExecuteCommand.Text), dataparam); + finally + dataparam.Free; + end; + log('aRowsAffacted:'#9 + intToStr(aRowsAffacted)); + except + on e: Exception do Log(e.Message); + end; + Log('*******************'); +end; + +procedure TServiceMethods_ClientMainForm.GetCommandSchema; +var + str: string; + strArr: StringArray; + doc: IXMLDocument; + List: IXMLNodeList; + j, i: integer; + node, ParamsNode, ParamNode: IXMLNode; +begin + if isNeedSchema then Exit; + + Log('***GetCommandSchema***'); + StrArr := StringArray.Create; + try + strArr.Add(AnsiToUtf8(cbGetCommandSchema.Text)); + try + str := FService.GetCommandSchema(StrArr); + doc := NewROXmlDocument; + doc.New; + doc.XML :=Utf8ToAnsi(str); + List := doc.DocumentNode.GetNodesByName('SchemaCommand'); + for i := 0 to List.Count - 1 do begin + Node := List.Nodes[i]; + if Node = nil then continue; + Log('Command: ' + Node.GetNodeValue('Name', '')); + ParamsNode := Node.GetNodeByName('Params'); + if ParamsNode = nil then Continue; + for j := 0 to ParamsNode.GetAttributeValue('Count', 0) - 1 do begin + ParamNode := ParamsNode.GetNodeByName('Item' + IntToStr(j)); + if ParamNode = nil then Continue; + Log('Params[' + IntToStr(j) + ']: ' + ParamNode.GetNodeValue('Name', '')); + end; + end; + except + on E: Exception do Log(E.Message); + end; + finally + strArr.Free; + end; + Log('********************'); +end; + +procedure TServiceMethods_ClientMainForm.GetData; +var + Stream: TMemoryStream; + CDSDataTable: TDACDSDataTable; + aTableRequestInfoArray: TableRequestInfoArray; + aTableNameArray: StringArray; + i: integer; + aTableRequestInfo: TableRequestInfo; +begin + if isNeedSchema then exit; + Log('***GetData***'); + + aTableNameArray := StringArray.Create; + aTableRequestInfoArray := TableRequestInfoArray.Create; + try + aTableNameArray.Add(AnsiToUtf8(cbGetData.Text)); + aTableRequestInfo := aTableRequestInfoArray.Add; + with aTableRequestInfo do begin + IncludeSchema := cbIncludeSchema.checked; + MaxRecords := spMaxRecord.Value; + UserFilter := AnsiToUtf8(GetDataUserFilter.Text); + for i := 0 to vleGetData.Strings.Count - 1 do + with Parameters.Add do begin + Name := AnsiToUtf8(vleGetData.Keys[i + 1]); + Value := vleGetData.Values[Name]; + end; + end; + try + Stream := FService.GetData(aTableNameArray, aTableRequestInfoArray); + if Stream <> nil then try + CDSDataTable := TDACDSDataTable.Create(nil); + try + CDSDataTable.Name := 'TEST'; + CDSDataTable.LocalDataStreamer := Streamer; + CDSDataTable.RemoteFetchEnabled := False; + Streamer.ReadDataset(Stream, CDSDataTable, True); + log('RecordCount:'#9 + intToStr(CDSDataTable.RecordCount)); + Log('FieldCount:'#9 + intToStr(CDSDataTable.FieldCount)); + if (CDSDataTable.FieldCount <> 0) then LogDataset(CDSDataTable); + finally + CDSDataTable.Free; + end; + finally + Stream.Free; + end; + except + on e: Exception do Log(e.Message); + end; + finally + aTableRequestInfoArray.Free; + aTableNameArray.Free; + end; + Log('*************'); +end; + +procedure TServiceMethods_ClientMainForm.GetSchema; +var + i: integer; +begin + cbGetTableSchema.Clear; + cbGetCommandSchema.Clear; + cbGetData.Clear; + + Log('***GetSchema***'); + try + Schema.LoadFromXml(Utf8ToAnsi(FService.GetSchema(''))); + + Log('Datasets.Count:'#9 + IntToStr(Schema.Datasets.Count)); + for i := 0 to Schema.Datasets.Count - 1 do + Log('Datasets[' + IntTostr(i) + ']:'#9 + Schema.Datasets[i].Name); + FillCB(cbGetTableSchema, Schema.Datasets); + FillCB(cbGetData, Schema.Datasets); + FillCB(cbUpdateData, Schema.Datasets); + + Log('Commands.Count:'#9 + IntToStr(Schema.Commands.Count)); + for i := 0 to Schema.Commands.Count - 1 do + Log('Commands[' + IntTostr(i) + ']:'#9 + Schema.Commands[i].Name); + FillCB(cbGetCommandSchema, Schema.Commands); + FillCB(cbExecuteCommand, Schema.Commands); + FillCB(cbExecuteCommandEx, Schema.Commands); + except + on E: Exception do Log(E.Message); + end; + Log('***************'); +end; + +procedure TServiceMethods_ClientMainForm.GetTableSchema; +var + str: string; + strArr: StringArray; + doc: IXMLDocument; + List: IXMLNodeList; + j, i: integer; + node, FieldsNode, FieldNode: IXMLNode; +begin + if isNeedSchema then Exit; + Log('***GetTableSchema***'); + StrArr := StringArray.Create; + try + strArr.Add(AnsiToUtf8(cbGetTableSchema.Text)); + try + str := FService.GetTableSchema(StrArr); + doc := NewROXmlDocument; + doc.New; + doc.XML := Utf8ToAnsi(str); + List := doc.DocumentNode.GetNodesByName('SchemaDataTable'); + for i := 0 to List.Count - 1 do begin + Node := List.Nodes[i]; + if Node = nil then continue; + Log('table: ' + Node.GetNodeValue('Name', '')); + FieldsNode := Node.GetNodeByName('Fields'); + if FieldsNode = nil then Continue; + for j := 0 to FieldsNode.GetAttributeValue('Count', 0) - 1 do begin + FieldNode := FieldsNode.GetNodeByName('Item' + IntToStr(j)); + if FieldNode = nil then Continue; + Log('Fields[' + IntToStr(j) + ']: ' + FieldNode.GetNodeValue('Name', '')); + end; + end; + except + on E: Exception do Log(E.Message); + end; + finally + strArr.Free; + end; + Log('********************'); +end; + +procedure TServiceMethods_ClientMainForm.SQLExecuteCommand; +var + aRowsAffacted: integer; +begin + Log('***SQLExecuteCommand***'); + try + aRowsAffacted := FService.SQLExecuteCommand(AnsiToUtf8(MemoSQLExecuteCommand.Text)); + log('aRowsAffacted:'#9 + intToStr(aRowsAffacted)); + except + on e: Exception do Log(e.Message); + end; + Log('*********************'); +end; + +procedure TServiceMethods_ClientMainForm.SQLGetData; +var + Stream: TMemoryStream; + CDSDataTable: TDACDSDataTable; +begin + Log('***SQLGetData***'); + try + Stream := FService.SQLGetData(AnsiToUtf8(memoDQLGetData.Text), sqlIncludeSchema.Checked, sqlMaxRecords.Value); + if Stream <> nil then try + CDSDataTable := TDACDSDataTable.Create(nil); + try + CDSDataTable.Name := 'TEST'; + CDSDataTable.LocalDataStreamer := Streamer; + CDSDataTable.RemoteFetchEnabled := False; + Streamer.ReadDataset(Stream, CDSDataTable, True); + log('RecordCount:'#9 + intToStr(CDSDataTable.RecordCount)); + Log('FieldCount:'#9 + intToStr(CDSDataTable.FieldCount)); + if (CDSDataTable.FieldCount <> 0) then LogDataset(CDSDataTable); + finally + CDSDataTable.Free; + end; + finally + Stream.Free; + end; + except + on e: Exception do Log(e.Message); + end; +end; + +procedure TServiceMethods_ClientMainForm.UpdateData; +var + stream1, stream: Binary; + i, j: integer; + +begin + if isNeedSchema then Exit; + if DataSource.DataTable = nil then begin + ShowMessage('Please select dataset from combobox'); + Exit; + end; + Log('***UpdateData***'); + Log('Delta.Count:'#9 + intToStr(DataSource.DataTable.Delta.Count)); + + with DataSource.DataTable.Delta do + for i := 0 to Count - 1 do begin + Log('----- Delta ' + IntToStr(i) + '-----'); + with Changes[i] do + for j := 0 to (LoggedFieldCount - 1) do + Log(LoggedFieldNames[j] + ':'#9 + VarToStr(OldValueByName[LoggedFieldNames[j]]) + ' -> ' + VarToStr(NewValueByName[LoggedFieldNames[j]])); + end; + + stream := binary.Create; + try + Streamer.Initialize(stream, aiWrite); + DataSource.DataTable.WriteDeltaToStream(Streamer); + Streamer.Finalize; + try + stream1 := FService.UpdateData(Stream); + if Stream1 <> nil then try + DataSource.DataTable.Delta.Clear(); + Streamer.Initialize(stream1, aiRead); + DataSource.DataTable.ReadDeltaFromStream(Streamer); + Streamer.Finalize; + DataSource.DataTable.MergeDelta; + finally + Stream1.Free; + end; + except + on e: Exception do Log(e.Message); + end; + finally + Stream.Free; + end; + Log('***************'); +end; + +procedure TServiceMethods_ClientMainForm.Log(Str: string); +begin + Memo.Lines.Add(Str); +end; + +procedure TServiceMethods_ClientMainForm.FormCreate(Sender: TObject); +begin + FService := Service as IServiceMethods_Service; + Schema := TDASchema.Create(nil); +end; + +procedure TServiceMethods_ClientMainForm.FormDestroy(Sender: TObject); +begin + if DataSource.DataTable <> nil then DataSource.DataTable.Free; + Schema.Free; +end; + +procedure TServiceMethods_ClientMainForm.FormShow(Sender: TObject); +begin + PageControl.ActivePage := tsGetSchema; + PageControlChange(PageControl); +end; + +procedure TServiceMethods_ClientMainForm.FillCB(ACombobox: Tcombobox; AItems: TDASQLCommandCollection); +var + i: integer; +begin + ACombobox.Items.Clear; + for i := 0 to AItems.Count - 1 do + ACombobox.Items.Add(AItems[i].Name); + if ACombobox.Items.Count > 0 then ACombobox.ItemIndex := 0; +end; + +function TServiceMethods_ClientMainForm.isNeedSchema: Boolean; +begin + Result := (Schema.Datasets.Count = 0) or (Schema.Commands.Count = 0); + LogMessage.Visible := Result and + (PageControl.ActivePage <> tsGetSchema) and + (PageControl.ActivePage <> tsSQLGetData) and + (PageControl.ActivePage <> tsSQLExecuteCommand); + RunButton.Enabled := not LogMessage.Visible; +end; + +procedure TServiceMethods_ClientMainForm.LogDataset( + ADataset: TDACDSDataTable); +var + i: integer; + s: string; +begin + log(''); + s := ''; + for i := 0 to ADataset.FieldCount - 1 do + s := s + ADataset.Fields[i].Name + #9; + Log(s); + ADataset.first; + while not ADataset.Eof do begin + s := ''; + for i := 0 to ADataset.FieldCount - 1 do + s := s + ADataset.Fields[i].AsString + #9; + Log(s); + ADataset.next; + end; + Log(''); +end; + +procedure TServiceMethods_ClientMainForm.cbGetDataChange(Sender: TObject); +var + fDataset: TDADataset; + i: integer; +begin + vleGetData.Strings.Clear; + try + if cbGetData.text = '' then Exit; + fDataset := Schema.Datasets.DatasetByName(cbGetData.Text); + if fDataset = nil then Exit; + for i := 0 to fDataset.Params.Count - 1 do + if vleGetData.Strings.IndexOfName(fDataset.Params[i].Name) = -1 then + vleGetData.InsertRow(fDataset.Params[i].Name, '', True); + finally + vleGetData.Visible := vleGetData.Strings.Count > 0; + end; + Log('*************SQL**************'); + if fDataset.Statements.Count > 0 then + Log(fDataset.Statements[0].SQL) + else + Log('SQL statement is not found. Probably this table is ExportedDataTable.'); + Log('******************************'); + +end; + +procedure TServiceMethods_ClientMainForm.cbExecuteCommandChange( + Sender: TObject); +var + fcommand: TDASQLCommand; + i: integer; +begin + vleExecuteCommand.Strings.Clear; + try + if cbExecuteCommand.text = '' then Exit; + fcommand := Schema.Commands.SQLCommandByName(cbExecuteCommand.Text); + if fcommand = nil then Exit; + for i := 0 to fcommand.Params.Count - 1 do + if fcommand.Params[i].ParamType in [daptInput, daptInputOutput] then + if vleExecuteCommand.Strings.IndexOfName(fcommand.Params[i].Name) = -1 then + vleExecuteCommand.InsertRow(fcommand.Params[i].Name, '', True); + finally + vleExecuteCommand.Visible := vleExecuteCommand.Strings.Count > 0; + end; + + Log('*************SQL**************'); + Log(fcommand.Statements[0].SQL); + Log('******************************'); + +end; + +procedure TServiceMethods_ClientMainForm.cbUpdateDataChange(Sender: TObject); +var + CDSDataTable: TDACDSDataTable; +var + i: integer; +begin + vleUpdateData.Strings.Clear; + if cbUpdateData.text = '' then Exit; + if DataSource.DataTable = nil then DataSource.DataTable := TDACDSDataTable.Create(nil); + CDSDataTable := TDACDSDataTable(DataSource.DataTable); + Log('Try to get data (call GetData)'); + CDSDataTable.LogicalName := cbUpdateData.Text; + FillUpdateDataDataset; + try + for i := 0 to CDSDataTable.Params.Count - 1 do + if vleUpdateData.Strings.IndexOfName(CDSDataTable.Params[i].Name) = -1 then + vleUpdateData.InsertRow(CDSDataTable.Params[i].Name, '', True); + finally + ParamPanel.Visible := vleUpdateData.Strings.Count > 0; + end; +end; + +procedure TServiceMethods_ClientMainForm.FillUpdateDataDataset; +var + Stream: TMemoryStream; + aTableRequestInfoArray: TableRequestInfoArray; + aTableNameArray: StringArray; + i: integer; + aTableRequestInfo: TableRequestInfo; + CDSDataTable: TDACDSDataTable; +begin + CDSDataTable := TDACDSDataTable(DataSource.DataTable); + if CDSDataTable = nil then Exit; + CDSDataTable.Close; + aTableNameArray := StringArray.Create; + aTableRequestInfoArray := TableRequestInfoArray.Create; + try + aTableNameArray.Add(CDSDataTable.LogicalName); + aTableRequestInfo := aTableRequestInfoArray.Add; + with aTableRequestInfo do begin + IncludeSchema := true; + MaxRecords := updateDataMaxRecord.Value; + UserFilter := ''; + for i := 0 to vleUpdateData.Strings.Count - 1 do + with Parameters.Add do begin + Name := vleUpdateData.Keys[i + 1]; + Value := vleUpdateData.Values[Name]; + end; + end; + try + Stream := FService.GetData(aTableNameArray, aTableRequestInfoArray); + if Stream <> nil then try + CDSDataTable.Name := 'TEST'; + CDSDataTable.LocalDataStreamer := Streamer; + CDSDataTable.RemoteFetchEnabled := False; + Streamer.ReadDataset(Stream, CDSDataTable, True); + finally + Stream.Free; + end; + except + on e: Exception do Log(e.Message); + end; + finally + aTableRequestInfoArray.Free; + aTableNameArray.Free; + end; + CDSDataTable.Open; +end; + +procedure TServiceMethods_ClientMainForm.RefreshButtonClick( + Sender: TObject); +begin + FillUpdateDataDataset; +end; + +procedure TServiceMethods_ClientMainForm.ClearLogButtonClick( + Sender: TObject); +begin + Memo.Lines.Clear; +end; + +procedure TServiceMethods_ClientMainForm.ExecuteCommandEx; +var + aRowsAffacted: integer; + dataparam, outputdataparam: DataParameterArray; + i: integer; +begin + if isNeedSchema then Exit; + Log('***ExecuteCommandEx***'); + try + dataparam := DataParameterArray.Create; + try + for i := 0 to vleExecuteCommandEx.Strings.Count - 1 do begin + with dataparam.Add do begin + Name := vleExecuteCommandEx.Keys[i + 1]; + Value := vleExecuteCommandEx.Values[Name]; + end; + end; + aRowsAffacted := FService.ExecuteCommandEx(AnsiToUtf8(cbExecuteCommandEx.Text), dataparam, outputdataparam); + log('aRowsAffacted:'#9 + intToStr(aRowsAffacted)); + Log('Output parameters count:'#9 + IntToStr(outputdataparam.Count)); + for i := 0 to outputdataparam.Count - 1 do + Log(outputdataparam.Items[i].Name + ':'#9 + VarToStr(outputdataparam.Items[i].Value)); + + finally + outputdataparam.Free; + dataparam.Free; + end; + except + on e: Exception do Log(e.Message); + end; + Log('*******************'); +end; + +procedure TServiceMethods_ClientMainForm.cbExecuteCommandExChange( + Sender: TObject); +var + fcommand: TDASQLCommand; + i: integer; +begin + vleExecuteCommandEx.Strings.Clear; + try + if cbExecuteCommandEx.text = '' then Exit; + fcommand := Schema.Commands.SQLCommandByName(cbExecuteCommandEx.Text); + if fcommand = nil then Exit; + for i := 0 to fcommand.Params.Count - 1 do + if fcommand.Params[i].ParamType in [daptInput, daptInputOutput] then + if vleExecuteCommandEx.Strings.IndexOfName(fcommand.Params[i].Name) = -1 then + vleExecuteCommandEx.InsertRow(fcommand.Params[i].Name, '', True); + finally + vleExecuteCommandEx.Visible := vleExecuteCommandEx.Strings.Count > 0; + end; + + Log('*************SQL**************'); + Log(fcommand.Statements[0].SQL); + Log('******************************'); +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Server.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Server.bdsproj new file mode 100644 index 0000000..6364664 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Server.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + ServiceMethods_Server.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Server.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Server.dpr new file mode 100644 index 0000000..5fd9d20 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Server.dpr @@ -0,0 +1,20 @@ +program ServiceMethods_Server; + +uses + uROCOMInit, + Forms, + ServiceMethods_ServerMain in 'ServiceMethods_ServerMain.pas' {ServiceMethods_ServerMainForm}, + ServiceMethodsLibrary_Intf in 'ServiceMethodsLibrary_Intf.pas', + ServiceMethodsLibrary_Invk in 'ServiceMethodsLibrary_Invk.pas', + ServiceMethods_Service_Impl in 'ServiceMethods_Service_Impl.pas' {ServiceMethods_Service: TDataAbstractService}; + +{#ROGEN:ServiceMethodsLibrary.rodl}// RemObjects: Careful, do not remove! +{$R RODLFILE.res} +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TServiceMethods_ServerMainForm, ServiceMethods_ServerMainForm); + Application.Run; +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Server.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Server.dproj new file mode 100644 index 0000000..9cc8b12 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Server.dproj @@ -0,0 +1,77 @@ + + + {e615b2bf-3d4f-42f0-a57b-40e742fbf754} + ServiceMethods_Server.dpr + Debug + AnyCPU + DCC32 + ServiceMethods_Server.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + ServiceMethods_Server.dpr + + + + + + + MainSource + + + + +
ServiceMethods_ServerMainForm
+
+ +
ServiceMethods_Service
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Server.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Server.res new file mode 100644 index 0000000..2435bfa Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Server.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_ServerMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_ServerMain.dfm new file mode 100644 index 0000000..160b6f7 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_ServerMain.dfm @@ -0,0 +1,469 @@ +object ServiceMethods_ServerMainForm: TServiceMethods_ServerMainForm + Left = 270 + Top = 153 + AutoScroll = False + Caption = 'ServiceMethods Server' + ClientHeight = 435 + ClientWidth = 596 + Color = clBtnFace + Constraints.MinWidth = 604 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + OnCreate = FormCreate + OnDestroy = FormDestroy + PixelsPerInch = 96 + TextHeight = 13 + object Memo: TMemo + Left = 0 + Top = 250 + Width = 596 + Height = 129 + Align = alBottom + Anchors = [akLeft, akTop, akRight, akBottom] + ScrollBars = ssVertical + TabOrder = 6 + end + object GroupBox1: TGroupBox + Left = 202 + Top = 2 + Width = 390 + Height = 220 + Caption = 'Log events:' + TabOrder = 1 + object cbAfterReleaseConnection: TCheckBox + Left = 198 + Top = 149 + Width = 187 + Height = 17 + Caption = 'AfterReleaseConnection' + Checked = True + State = cbChecked + TabOrder = 20 + end + object cbAfterProcessDeltas: TCheckBox + Left = 198 + Top = 66 + Width = 187 + Height = 17 + Caption = 'AfterProcessDeltas' + TabOrder = 15 + end + object cbAfterGetDatasetSchema: TCheckBox + Left = 198 + Top = 15 + Width = 187 + Height = 17 + Caption = 'AfterGetDatasetSchema' + Checked = True + State = cbChecked + TabOrder = 12 + end + object cbAfterGetDatasetData: TCheckBox + Left = 7 + Top = 200 + Width = 187 + Height = 17 + Caption = 'AfterGetDatasetData' + TabOrder = 11 + end + object cbAfterExecuteCommand: TCheckBox + Left = 198 + Top = 100 + Width = 187 + Height = 17 + Caption = 'AfterExecuteCommand' + TabOrder = 17 + end + object cbAfterAcquireConnection: TCheckBox + Left = 7 + Top = 66 + Width = 187 + Height = 17 + Caption = 'AfterAcquireConnection' + Checked = True + State = cbChecked + TabOrder = 3 + end + object cbBeforeReleaseConnection: TCheckBox + Left = 198 + Top = 132 + Width = 187 + Height = 17 + Caption = 'BeforeReleaseConnection' + Checked = True + State = cbChecked + TabOrder = 19 + end + object cbBeforeProcessDeltas: TCheckBox + Left = 198 + Top = 32 + Width = 187 + Height = 17 + Caption = 'BeforeProcessDeltas' + TabOrder = 13 + end + object cbBeforeGetDatasetSchema: TCheckBox + Left = 7 + Top = 166 + Width = 187 + Height = 17 + Caption = 'BeforeGetDatasetSchema' + Checked = True + State = cbChecked + TabOrder = 9 + end + object cbBeforeGetDatasetData: TCheckBox + Left = 7 + Top = 183 + Width = 187 + Height = 17 + Caption = 'BeforeGetDatasetData' + TabOrder = 10 + end + object cbBeforeExecuteCommand: TCheckBox + Left = 198 + Top = 83 + Width = 187 + Height = 17 + Caption = 'BeforeExecuteCommand' + TabOrder = 16 + end + object cbBeforeAcquireConnection: TCheckBox + Left = 7 + Top = 32 + Width = 187 + Height = 17 + Caption = 'BeforeAcquireConnection' + Checked = True + State = cbChecked + TabOrder = 1 + end + object cbValidateCommandExecution: TCheckBox + Left = 7 + Top = 100 + Width = 187 + Height = 17 + Caption = 'ValidateCommandExecution' + TabOrder = 5 + end + object cbUpdateDataRollBackTransaction: TCheckBox + Left = 7 + Top = 132 + Width = 187 + Height = 17 + Caption = 'UpdateDataRollBackTransaction' + TabOrder = 7 + end + object cbUpdateDataCommitTransaction: TCheckBox + Left = 198 + Top = 117 + Width = 187 + Height = 17 + Caption = 'UpdateDataCommitTransaction' + Checked = True + State = cbChecked + TabOrder = 18 + end + object cbUpdateDataBeginTransaction: TCheckBox + Left = 7 + Top = 149 + Width = 187 + Height = 17 + Caption = 'UpdateDataBeginTransaction' + Checked = True + State = cbChecked + TabOrder = 8 + end + object cbProcessDeltasError: TCheckBox + Left = 198 + Top = 49 + Width = 187 + Height = 17 + Caption = 'ProcessDeltasError' + TabOrder = 14 + end + object cbGetSchemaAsXMLEvent: TCheckBox + Left = 7 + Top = 15 + Width = 187 + Height = 17 + Caption = 'GetSchemaAsXMLEvent' + TabOrder = 0 + end + object cbValidateDatasetAccess: TCheckBox + Left = 7 + Top = 83 + Width = 187 + Height = 17 + Caption = 'ValidateDatasetAccess' + TabOrder = 4 + end + object cbValidateDirectSQLAccess: TCheckBox + Left = 7 + Top = 117 + Width = 187 + Height = 17 + Caption = 'ValidateDirectSQLAccess' + TabOrder = 6 + end + object cbAcquireConnectionFailure: TCheckBox + Left = 7 + Top = 49 + Width = 187 + Height = 17 + Caption = 'AcquireConnectionFailure' + TabOrder = 2 + end + object cbBusinessProcessorAutoCreated: TCheckBox + Left = 198 + Top = 166 + Width = 187 + Height = 17 + Caption = 'BusinessProcessorAutoCreated' + TabOrder = 21 + end + end + object GroupBox2: TGroupBox + Left = 2 + Top = 2 + Width = 197 + Height = 220 + Caption = 'Server options:' + TabOrder = 0 + DesignSize = ( + 197 + 220) + object cbProcessDeltasErrorRaise: TCheckBox + Left = 5 + Top = 134 + Width = 190 + Height = 17 + Anchors = [akLeft, akTop, akRight] + Caption = 'Raise ProcessDeltasError' + TabOrder = 7 + end + object cbProcessDeltasWithoutUpdateRules: TCheckBox + Left = 5 + Top = 117 + Width = 190 + Height = 17 + Anchors = [akLeft, akTop, akRight] + Caption = 'ProcessDeltasWithoutUpdateRules' + TabOrder = 6 + end + object cbAllowExecuteCommands: TCheckBox + Left = 5 + Top = 83 + Width = 190 + Height = 17 + Anchors = [akLeft, akTop, akRight] + Caption = 'AllowExecuteCommands' + TabOrder = 4 + end + object cbAllowWhereSQL: TCheckBox + Left = 5 + Top = 66 + Width = 190 + Height = 17 + Anchors = [akLeft, akTop, akRight] + Caption = 'AllowWhereSQL' + TabOrder = 3 + end + object cbAllowExecuteSQL: TCheckBox + Left = 5 + Top = 100 + Width = 190 + Height = 17 + Anchors = [akLeft, akTop, akRight] + Caption = 'AllowExecuteSQL' + TabOrder = 5 + end + object cbAllowSchemaAccess: TCheckBox + Left = 5 + Top = 15 + Width = 190 + Height = 17 + Anchors = [akLeft, akTop, akRight] + Caption = 'AllowSchemaAccess' + Checked = True + State = cbChecked + TabOrder = 0 + end + object cbAllowDataAccess: TCheckBox + Left = 5 + Top = 49 + Width = 190 + Height = 17 + Anchors = [akLeft, akTop, akRight] + Caption = 'AllowDataAccess' + Checked = True + State = cbChecked + TabOrder = 2 + end + object cbAcquireConnection: TCheckBox + Left = 5 + Top = 32 + Width = 190 + Height = 17 + Anchors = [akLeft, akTop, akRight] + Caption = 'AcquireConnection' + Checked = True + State = cbChecked + TabOrder = 1 + end + object cbAllowDynamicSelect: TCheckBox + Left = 5 + Top = 151 + Width = 190 + Height = 14 + Anchors = [akLeft, akTop, akRight] + Caption = 'AllowDynamicSelect' + Checked = True + State = cbChecked + TabOrder = 8 + end + object cbAllowDynamicWhere: TCheckBox + Left = 5 + Top = 168 + Width = 190 + Height = 14 + Anchors = [akLeft, akTop, akRight] + Caption = 'AllowDynamicWhere' + Checked = True + State = cbChecked + TabOrder = 9 + end + object cbAllowUpdates: TCheckBox + Left = 5 + Top = 185 + Width = 190 + Height = 14 + Anchors = [akLeft, akTop, akRight] + Caption = 'AllowUpdates' + Checked = True + State = cbChecked + TabOrder = 10 + end + object cbAutoCreateBusinessProcessors: TCheckBox + Left = 5 + Top = 202 + Width = 190 + Height = 14 + Anchors = [akLeft, akTop, akRight] + Caption = 'AutoCreateBusinessProcessors' + Checked = True + State = cbChecked + TabOrder = 11 + end + end + object CheckAllOptionsButton: TButton + Left = 21 + Top = 225 + Width = 75 + Height = 22 + Caption = 'Check all' + TabOrder = 2 + OnClick = CheckAllOptionsButtonClick + end + object CheckNoneOptionsButton: TButton + Left = 101 + Top = 225 + Width = 75 + Height = 22 + Caption = 'Check none' + TabOrder = 3 + OnClick = CheckNoneOptionsButtonClick + end + object CheckAllEventsButton: TButton + Left = 323 + Top = 225 + Width = 74 + Height = 22 + Caption = 'Check all' + TabOrder = 4 + OnClick = CheckAllEventsButtonClick + end + object CheckNoneEventsButton: TButton + Left = 402 + Top = 225 + Width = 76 + Height = 22 + Caption = 'Check none' + TabOrder = 5 + OnClick = CheckNoneEventsButtonClick + end + object Panel1: TPanel + Left = 0 + Top = 379 + Width = 596 + Height = 56 + Align = alBottom + BevelOuter = bvNone + TabOrder = 7 + DesignSize = ( + 596 + 56) + object DAPoweredByDataAbstractButton2: TDAPoweredByDataAbstractButton + Left = 212 + Top = 6 + Width = 212 + Height = 48 + Cursor = crHandPoint + end + object ClearLogButton: TButton + Left = 515 + Top = 3 + Width = 75 + Height = 22 + Anchors = [akTop, akRight] + Caption = 'Clear log' + TabOrder = 0 + OnClick = ClearLogButtonClick + end + end + object ConnectionManager: TDAConnectionManager + Connections = < + item + Name = 'Northwind' + ConnectionString = + 'ADO?AuxDriver=SQLOLEDB.1;Server=localhost;Database=Northwind;Use' + + 'rID=sa;Password=;' + Default = True + end> + DriverManager = DriverManager + PoolingEnabled = True + Left = 278 + Top = 395 + end + object DriverManager: TDADriverManager + DriverDirectory = '%SYSTEM%\' + TraceActive = False + TraceFlags = [] + Left = 305 + Top = 395 + end + object ADODriver: TDAADODriver + Left = 389 + Top = 395 + end + object Server: TROIndyHTTPServer + Dispatchers = < + item + Name = 'Message' + Message = Message + Enabled = True + PathInfo = 'Bin' + end> + Port = 8099 + Left = 333 + Top = 395 + end + object Message: TROBinMessage + Left = 361 + Top = 395 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_ServerMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_ServerMain.pas new file mode 100644 index 0000000..748b637 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_ServerMain.pas @@ -0,0 +1,186 @@ +unit ServiceMethods_ServerMain; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uROPoweredByRemObjectsButton, uDAPoweredByDataAbstractButton, + StdCtrls, SyncObjs, uDAEngine, uDAADODriver, uDADriverManager, uDAClasses, + uROClient, uROBinMessage, uROServer, uROIndyTCPServer, uROIndyHTTPServer, + ExtCtrls; + +type + TServiceMethods_ServerMainForm = class(TForm) + Memo: TMemo; + ConnectionManager: TDAConnectionManager; + DriverManager: TDADriverManager; + ADODriver: TDAADODriver; + Server: TROIndyHTTPServer; + Message: TROBinMessage; + GroupBox1: TGroupBox; + cbAfterReleaseConnection: TCheckBox; + cbAfterProcessDeltas: TCheckBox; + cbAfterGetDatasetSchema: TCheckBox; + cbAfterGetDatasetData: TCheckBox; + cbAfterExecuteCommand: TCheckBox; + cbAfterAcquireConnection: TCheckBox; + cbBeforeReleaseConnection: TCheckBox; + cbBeforeProcessDeltas: TCheckBox; + cbBeforeGetDatasetSchema: TCheckBox; + cbBeforeGetDatasetData: TCheckBox; + cbBeforeExecuteCommand: TCheckBox; + cbBeforeAcquireConnection: TCheckBox; + cbValidateCommandExecution: TCheckBox; + cbUpdateDataRollBackTransaction: TCheckBox; + cbUpdateDataCommitTransaction: TCheckBox; + cbUpdateDataBeginTransaction: TCheckBox; + cbProcessDeltasError: TCheckBox; + cbGetSchemaAsXMLEvent: TCheckBox; + cbValidateDatasetAccess: TCheckBox; + cbValidateDirectSQLAccess: TCheckBox; + cbAcquireConnectionFailure: TCheckBox; + GroupBox2: TGroupBox; + cbProcessDeltasErrorRaise: TCheckBox; + cbProcessDeltasWithoutUpdateRules: TCheckBox; + cbAllowExecuteCommands: TCheckBox; + cbAllowWhereSQL: TCheckBox; + cbAllowExecuteSQL: TCheckBox; + cbAllowSchemaAccess: TCheckBox; + cbAllowDataAccess: TCheckBox; + cbAcquireConnection: TCheckBox; + CheckAllOptionsButton: TButton; + CheckNoneOptionsButton: TButton; + CheckAllEventsButton: TButton; + CheckNoneEventsButton: TButton; + Panel1: TPanel; + DAPoweredByDataAbstractButton2: TDAPoweredByDataAbstractButton; + ClearLogButton: TButton; + cbAllowDynamicSelect: TCheckBox; + cbAllowDynamicWhere: TCheckBox; + cbAllowUpdates: TCheckBox; + cbAutoCreateBusinessProcessors: TCheckBox; + cbBusinessProcessorAutoCreated: TCheckBox; + procedure FormCreate(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure ClearLogButtonClick(Sender: TObject); + procedure CheckAllOptionsButtonClick(Sender: TObject); + procedure CheckNoneOptionsButtonClick(Sender: TObject); + procedure CheckAllEventsButtonClick(Sender: TObject); + procedure CheckNoneEventsButtonClick(Sender: TObject); + private + { Private declarations } + FcriticalSection: TCriticalSection; + procedure ChangeOptions(Mode: Boolean); + procedure ChangeEvent(Mode: Boolean); + public + { Public declarations } + procedure Log(Str: string); + end; + +var + ServiceMethods_ServerMainForm: TServiceMethods_ServerMainForm; + +implementation + +{$R *.dfm} + +{ TServiceMethods_ServerMainForm } + +procedure TServiceMethods_ServerMainForm.Log(Str: string); +begin + FcriticalSection.Enter; + try + Memo.Lines.Add(Str); + finally + FcriticalSection.Leave; + end; +end; + +procedure TServiceMethods_ServerMainForm.FormCreate(Sender: TObject); +begin + FcriticalSection := TCriticalSection.Create; + + Server.Active := True; +end; + +procedure TServiceMethods_ServerMainForm.FormDestroy(Sender: TObject); +begin + FcriticalSection.Free; +end; + +procedure TServiceMethods_ServerMainForm.ClearLogButtonClick( + Sender: TObject); +begin + FcriticalSection.Enter; + try + Memo.Lines.Clear; + finally + FcriticalSection.Leave; + end; +end; + +procedure TServiceMethods_ServerMainForm.CheckAllOptionsButtonClick(Sender: TObject); +begin + ChangeOptions(True); +end; + +procedure TServiceMethods_ServerMainForm.ChangeOptions(Mode: Boolean); +begin + cbAllowSchemaAccess.Checked := Mode; + cbAcquireConnection.Checked := Mode; + cbAllowDataAccess.Checked := Mode; + cbAllowWhereSQL.Checked := Mode; + cbAllowExecuteCommands.Checked := Mode; + cbAllowExecuteSQL.Checked := Mode; + cbProcessDeltasWithoutUpdateRules.Checked := Mode; + cbProcessDeltasErrorRaise.Checked := Mode; + cbAllowDynamicSelect.Checked := Mode; + cbAllowDynamicWhere.Checked := Mode; + cbAllowUpdates.Checked := Mode; + cbAutoCreateBusinessProcessors.Checked := Mode; +end; + +procedure TServiceMethods_ServerMainForm.CheckNoneOptionsButtonClick( + Sender: TObject); +begin + ChangeOptions(False); +end; + +procedure TServiceMethods_ServerMainForm.ChangeEvent(Mode: Boolean); +begin + cbAfterReleaseConnection.Checked := Mode; + cbAfterProcessDeltas.Checked := Mode; + cbAfterGetDatasetSchema.Checked := Mode; + cbAfterGetDatasetData.Checked := Mode; + cbAfterExecuteCommand.Checked := Mode; + cbAfterAcquireConnection.Checked := Mode; + cbBeforeReleaseConnection.Checked := Mode; + cbBeforeProcessDeltas.Checked := Mode; + cbBeforeGetDatasetSchema.Checked := Mode; + cbBeforeGetDatasetData.Checked := Mode; + cbBeforeExecuteCommand.Checked := Mode; + cbBeforeAcquireConnection.Checked := Mode; + cbValidateCommandExecution.Checked := Mode; + cbUpdateDataRollBackTransaction.Checked := Mode; + cbUpdateDataCommitTransaction.Checked := Mode; + cbUpdateDataBeginTransaction.Checked := Mode; + cbProcessDeltasError.Checked := Mode; + cbGetSchemaAsXMLEvent.Checked := Mode; + cbValidateDatasetAccess.Checked := Mode; + cbValidateDirectSQLAccess.Checked := Mode; + cbAcquireConnectionFailure.Checked := Mode; + cbBusinessProcessorAutoCreated.Checked := Mode; +end; + +procedure TServiceMethods_ServerMainForm.CheckAllEventsButtonClick(Sender: TObject); +begin + ChangeEvent(True); +end; + +procedure TServiceMethods_ServerMainForm.CheckNoneEventsButtonClick(Sender: TObject); +begin + ChangeEvent(False); +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Service_Impl.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Service_Impl.dfm new file mode 100644 index 0000000..86b9676 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Service_Impl.dfm @@ -0,0 +1,356 @@ +object ServiceMethods_Service: TServiceMethods_Service + OldCreateOrder = True + OnCreate = DataAbstractServiceCreate + OnDestroy = DataAbstractServiceDestroy + OnActivate = DataAbstractServiceActivate + OnDeactivate = DataAbstractServiceDeactivate + AcquireConnection = False + ServiceSchema = DASchema + ServiceDataStreamer = BinDataStreamer + ExportedDataTables = <> + BeforeAcquireConnection = DataAbstractServiceBeforeAcquireConnection + AfterAcquireConnection = DataAbstractServiceAfterAcquireConnection + BeforeReleaseConnection = DataAbstractServiceBeforeReleaseConnection + AfterReleaseConnection = DataAbstractServiceAfterReleaseConnection + OnAcquireConnectionFailure = DataAbstractServiceAcquireConnectionFailure + BeforeProcessDeltas = DataAbstractServiceBeforeProcessDeltas + AfterProcessDeltas = DataAbstractServiceAfterProcessDeltas + OnProcessDeltasError = DataAbstractServiceProcessDeltasError + BeforeGetDatasetSchema = DataAbstractServiceBeforeGetDatasetSchema + BeforeGetDatasetData = DataAbstractServiceBeforeGetDatasetData + AfterGetDatasetSchema = DataAbstractServiceAfterGetDatasetSchema + AfterGetDatasetData = DataAbstractServiceAfterGetDatasetData + OnBusinessProcessorAutoCreated = DataAbstractServiceBusinessProcessorAutoCreated + BeforeExecuteCommand = DataAbstractServiceBeforeExecuteCommand + AfterExecuteCommand = DataAbstractServiceAfterExecuteCommand + OnGetSchemaAsXMLEvent = DataAbstractServiceGetSchemaAsXMLEvent + ValidateDatasetAccess = DataAbstractServiceValidateDatasetAccess + ValidateCommandExecution = DataAbstractServiceValidateCommandExecution + ValidateDirectSQLAccess = DataAbstractServiceValidateDirectSQLAccess + OnUpdateDataBeginTransaction = DataAbstractServiceUpdateDataBeginTransaction + OnUpdateDataCommitTransaction = DataAbstractServiceUpdateDataCommitTransaction + OnUpdateDataRollBackTransaction = DataAbstractServiceUpdateDataRollBackTransaction + Left = 576 + Top = 180 + Height = 300 + Width = 300 + object BinDataStreamer: TDABinDataStreamer + Left = 29 + Top = 10 + end + object DASchema: TDASchema + ConnectionManager = ServiceMethods_ServerMainForm.ConnectionManager + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'Northwind' + TargetTable = 'Customers' + SQL = + 'SELECT '#10' CustomerID, CompanyName, ContactName, ContactTitle, ' + + #10' Address, City, Region, PostalCode, Country, Phone, '#10' Fax' + + #10' FROM'#10' Customers' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'CompanyName' + TableField = 'CompanyName' + end + item + DatasetField = 'ContactName' + TableField = 'ContactName' + end + item + DatasetField = 'ContactTitle' + TableField = 'ContactTitle' + end + item + DatasetField = 'Address' + TableField = 'Address' + end + item + DatasetField = 'City' + TableField = 'City' + end + item + DatasetField = 'Region' + TableField = 'Region' + end + item + DatasetField = 'PostalCode' + TableField = 'PostalCode' + end + item + DatasetField = 'Country' + TableField = 'Country' + end + item + DatasetField = 'Phone' + TableField = 'Phone' + end + item + DatasetField = 'Fax' + TableField = 'Fax' + end> + end> + Name = 'Customers' + Fields = < + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + LogChanges = False + InPrimaryKey = True + end + item + Name = 'CompanyName' + DataType = datWideString + Size = 40 + end + item + Name = 'ContactName' + DataType = datWideString + Size = 30 + end + item + Name = 'ContactTitle' + DataType = datWideString + Size = 30 + end + item + Name = 'Address' + DataType = datWideString + Size = 60 + end + item + Name = 'City' + DataType = datWideString + Size = 15 + end + item + Name = 'Region' + DataType = datWideString + Size = 15 + end + item + Name = 'PostalCode' + DataType = datWideString + Size = 10 + end + item + Name = 'Country' + DataType = datWideString + Size = 15 + end + item + Name = 'Phone' + DataType = datWideString + Size = 24 + end + item + Name = 'Fax' + DataType = datWideString + Size = 24 + end> + end + item + Params = < + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + ParamType = daptInput + end> + Statements = < + item + Connection = 'Northwind' + TargetTable = 'Orders' + SQL = + 'SELECT OrderID, CustomerID, EmployeeID, OrderDate, RequiredDate,' + + ' ShippedDate, ShipVia, Freight, ShipName, ShipAddress, ShipCity,' + + ' ShipRegion, ShipPostalCode, ShipCountry FROM Orders Where Custo' + + 'merID = :CustomerID' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'OrderID' + TableField = 'OrderID' + end + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'EmployeeID' + TableField = 'EmployeeID' + end + item + DatasetField = 'OrderDate' + TableField = 'OrderDate' + end + item + DatasetField = 'RequiredDate' + TableField = 'RequiredDate' + end + item + DatasetField = 'ShippedDate' + TableField = 'ShippedDate' + end + item + DatasetField = 'ShipVia' + TableField = 'ShipVia' + end + item + DatasetField = 'Freight' + TableField = 'Freight' + end + item + DatasetField = 'ShipName' + TableField = 'ShipName' + end + item + DatasetField = 'ShipAddress' + TableField = 'ShipAddress' + end + item + DatasetField = 'ShipCity' + TableField = 'ShipCity' + end + item + DatasetField = 'ShipRegion' + TableField = 'ShipRegion' + end + item + DatasetField = 'ShipPostalCode' + TableField = 'ShipPostalCode' + end + item + DatasetField = 'ShipCountry' + TableField = 'ShipCountry' + end> + end> + Name = 'Orders' + Fields = < + item + Name = 'OrderID' + DataType = datInteger + LogChanges = False + InPrimaryKey = True + end + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + end + item + Name = 'EmployeeID' + DataType = datInteger + end + item + Name = 'OrderDate' + DataType = datDateTime + end + item + Name = 'RequiredDate' + DataType = datDateTime + end + item + Name = 'ShippedDate' + DataType = datDateTime + end + item + Name = 'ShipVia' + DataType = datInteger + end + item + Name = 'Freight' + DataType = datFloat + end + item + Name = 'ShipName' + DataType = datWideString + Size = 40 + end + item + Name = 'ShipAddress' + DataType = datWideString + Size = 60 + end + item + Name = 'ShipCity' + DataType = datWideString + Size = 15 + end + item + Name = 'ShipRegion' + DataType = datWideString + Size = 15 + end + item + Name = 'ShipPostalCode' + DataType = datWideString + Size = 10 + end + item + Name = 'ShipCountry' + DataType = datWideString + Size = 15 + end> + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = < + item + Params = < + item + Name = 'CUSTOMERS_CNT' + DataType = datInteger + ParamType = daptOutput + end> + Statements = < + item + Connection = 'Northwind' + SQL = 'SELECT :CUSTOMERS_CNT = count(*) from customers'#10 + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'CustomersCount' + end + item + Params = < + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + ParamType = daptInput + end + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + ParamType = daptInput + end> + Statements = < + item + Connection = 'Northwind' + TargetTable = 'Orders' + SQL = + 'update orders set CustomerID = :CustomerID where CustomerID = :C' + + 'ustomerID'#10 + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'UpdateOrders' + end> + RelationShips = <> + UpdateRules = <> + Version = 0 + Left = 29 + Top = 55 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Service_Impl.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Service_Impl.pas new file mode 100644 index 0000000..9dde52d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Service Methods/ServiceMethods_Service_Impl.pas @@ -0,0 +1,490 @@ +unit ServiceMethods_Service_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} ServiceMethodsLibrary_Intf, uDADataStreamer, uDABinAdapter, + uDAInterfaces, uDABusinessProcessor, uDAClasses, uRORemoteDataModule; + +type + { TServiceMethods_Service } + TServiceMethods_Service = class(TDataAbstractService, IServiceMethods_Service) + BinDataStreamer: TDABinDataStreamer; + DASchema: TDASchema; + procedure DataAbstractServiceAfterAcquireConnection(aSender: TObject; + const aConnectionName: string; + const aAcquiredConnection: IDAConnection); + procedure DataAbstractServiceAfterExecuteCommand(aSender: TObject; + const aCommand: IDASQLCommand; aRowsAffacted: Integer); + procedure DataAbstractServiceAfterGetDatasetData(aSender: TObject; + const aDataset: IDADataset; const aIncludeSchema: Boolean; + const aMaxRecords: Integer); + procedure DataAbstractServiceAfterGetDatasetSchema(aSender: TObject; + const aDataset: IDADataset); + procedure DataAbstractServiceAfterProcessDeltas(aSender: TObject; + aDeltaStructs: TDADeltaStructList); + procedure DataAbstractServiceAfterReleaseConnection(aSender: TObject; + const aConnectionName: string); + procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject; + var aConnectionName: string); + procedure DataAbstractServiceBeforeExecuteCommand(aSender: TObject; + const aCommand: IDASQLCommand); + procedure DataAbstractServiceBeforeGetDatasetData(aSender: TObject; + const aDataset: IDADataset; const aIncludeSchema: Boolean; + const aMaxRecords: Integer); + procedure DataAbstractServiceBeforeGetDatasetSchema(aSender: TObject; + const aDataset: IDADataset); + procedure DataAbstractServiceBeforeProcessDeltas(aSender: TObject; + aDeltaStructs: TDADeltaStructList); + procedure DataAbstractServiceBeforeReleaseConnection(aSender: TObject; + const aConnectionName: string; + const aAcquiredConnection: IDAConnection); + procedure DataAbstractServiceGetSchemaAsXMLEvent(aSender: TObject; + var aSchemaXML: string); + procedure DataAbstractServiceProcessDeltasError(aSender: TObject; + aDeltaStructs: TDADeltaStructList; aError: Exception; + var aDoRaise: Boolean); + procedure DataAbstractServiceUpdateDataBeginTransaction( + Sender: TObject; var aUseDefaultTransactionLogic: Boolean); + procedure DataAbstractServiceUpdateDataCommitTransaction( + Sender: TObject; var aUseDefaultTransactionLogic: Boolean); + procedure DataAbstractServiceUpdateDataRollBackTransaction( + Sender: TObject; var aUseDefaultTransactionLogic: Boolean); + procedure DataAbstractServiceValidateCommandExecution(Sender: TObject; + const aConnection: IDAConnection; const aDatasetName: string; + const aParamNames: array of string; + const aParamValues: array of Variant; aSchema: TDASchema; + var Allowed: Boolean); + procedure DataAbstractServiceValidateDatasetAccess(Sender: TObject; + const aConnection: IDAConnection; const aDatasetName: string; + const aParamNames: array of string; + const aParamValues: array of Variant; aSchema: TDASchema; + var Allowed: Boolean); + procedure DataAbstractServiceValidateDirectSQLAccess(Sender: TObject; + const aConnection: IDAConnection; const aSQLText: string; + const aParamNames: array of string; + const aParamValues: array of Variant; var Allowed: Boolean); + procedure DataAbstractServiceAcquireConnectionFailure(aSender: TObject; + const aConnectionName: string; aError: Exception); + procedure DataAbstractServiceCreate(Sender: TObject); + procedure DataAbstractServiceDestroy(Sender: TObject); + procedure DataAbstractServiceActivate(const aClientID: TGUID; + aSession: TROSession; const aMessage: IROMessage); + procedure DataAbstractServiceDeactivate(const aClientID: TGUID; + aSession: TROSession); + procedure DataAbstractServiceBusinessProcessorAutoCreated( + aSender: TRORemoteDataModule; + BusinessProcessor: TDABusinessProcessor); + private + procedure Log(Astr: string); + protected + { IServiceMethods_Service methods } + end; + +implementation + +{$R *.dfm} +uses + {Generated:} ServiceMethodsLibrary_Invk, + ServiceMethods_ServerMain, Variants; + +procedure Create_ServiceMethods_Service(out anInstance: IUnknown); +begin + anInstance := TServiceMethods_Service.Create(nil); +end; + +{ TServiceMethods_Service } + +procedure TServiceMethods_Service.Log(Astr: string); +begin + ServiceMethods_ServerMainForm.Log(Astr); +end; + +procedure TServiceMethods_Service.DataAbstractServiceAfterAcquireConnection( + aSender: TObject; const aConnectionName: string; + const aAcquiredConnection: IDAConnection); +begin + inherited; + if not ServiceMethods_ServerMainForm.cbAfterAcquireConnection.Checked then Exit; + Log('***AfterAcquireConnection***'); + Log('ConnectionName:'#9 + aConnectionName); + Log('aAcquiredConnection.Name:'#9 + aAcquiredConnection.Name); + Log('aAcquiredConnection.ConnectionString:'#9 + aAcquiredConnection.ConnectionString); + Log('****************************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceAfterExecuteCommand( + aSender: TObject; const aCommand: IDASQLCommand; aRowsAffacted: Integer); +begin + inherited; + if not ServiceMethods_ServerMainForm.cbAfterExecuteCommand.Checked then Exit; + Log('***AfterExecuteCommand***'); + Log('aCommand.Name:'#9 + aCommand.Name); + Log('aCommand.SQL:'#9 + aCommand.SQL); + Log('aRowsAffacted:'#9 + IntToStr(aRowsAffacted)); + Log('*************************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceAfterGetDatasetData( + aSender: TObject; const aDataset: IDADataset; + const aIncludeSchema: Boolean; const aMaxRecords: Integer); +begin + inherited; + if not ServiceMethods_ServerMainForm.cbAfterGetDatasetData.Checked then Exit; + Log('***AfterGetDatasetData***'); + Log('aDataset.Name:'#9 + aDataset.Name); + Log('aDataset.SQL:'#9 + aDataset.SQL); + Log('aIncludeSchema:'#9 + BoolStr[aIncludeSchema]); + Log('aMaxRecords:'#9 + IntToStr(aMaxRecords)); + Log('*************************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceAfterGetDatasetSchema( + aSender: TObject; const aDataset: IDADataset); +begin + inherited; + if not ServiceMethods_ServerMainForm.cbAfterGetDatasetSchema.Checked then Exit; + Log('***AfterGetDatasetSchema***'); + Log('aDataset.Name:'#9 + aDataset.Name); + Log('aDataset.SQL:'#9 + aDataset.SQL); + Log('***************************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceAfterProcessDeltas( + aSender: TObject; aDeltaStructs: TDADeltaStructList); +begin + inherited; + if not ServiceMethods_ServerMainForm.cbAfterProcessDeltas.Checked then Exit; + Log('***AfterProcessDeltas***'); + Log('aDeltaStructs.Count:'#9 + IntToStr(aDeltaStructs.Count)); + Log('************************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceAfterReleaseConnection( + aSender: TObject; const aConnectionName: string); +begin + inherited; + if not ServiceMethods_ServerMainForm.cbAfterReleaseConnection.Checked then Exit; + Log('***AfterReleaseConnection***'); + Log('aConnectionName:'#9 + aConnectionName); + Log('****************************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceBeforeAcquireConnection( + aSender: TObject; var aConnectionName: string); +begin + inherited; + if not ServiceMethods_ServerMainForm.cbBeforeAcquireConnection.Checked then Exit; + + Log('***BeforeAcquireConnection***'); + Log('aConnectionName:'#9 + aConnectionName); + Log('************************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceBeforeExecuteCommand( + aSender: TObject; const aCommand: IDASQLCommand); +begin + inherited; + if not ServiceMethods_ServerMainForm.cbBeforeExecuteCommand.Checked then Exit; + Log('***BeforeExecuteCommand***'); + Log('aCommand.Name:'#9 + aCommand.Name); + Log('aCommand.SQL:'#9 + aCommand.SQL); + Log('************************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceBeforeGetDatasetData( + aSender: TObject; const aDataset: IDADataset; + const aIncludeSchema: Boolean; const aMaxRecords: Integer); +begin + inherited; + if not ServiceMethods_ServerMainForm.cbBeforeGetDatasetData.Checked then Exit; + + Log('***BeforeGetDatasetData***'); + Log('aDataset.Name:'#9 + aDataset.Name); + Log('aDataset.SQL:'#9 + aDataset.SQL); + Log('aIncludeSchema:'#9 + BoolStr[aIncludeSchema]); + Log('aMaxRecords:'#9 + IntToStr(aMaxRecords)); + Log('*************************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceBeforeGetDatasetSchema( + aSender: TObject; const aDataset: IDADataset); +begin + inherited; + if not ServiceMethods_ServerMainForm.cbBeforeGetDatasetSchema.Checked then Exit; + + Log('***BeforeGetDatasetSchema***'); + Log('aDataset.Name:'#9 + aDataset.Name); + Log('aDataset.SQL:'#9 + aDataset.SQL); + Log('****************************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceBeforeProcessDeltas( + aSender: TObject; aDeltaStructs: TDADeltaStructList); +begin + inherited; + if not ServiceMethods_ServerMainForm.cbBeforeProcessDeltas.Checked then Exit; + Log('***BeforeProcessDeltas***'); + Log('aDeltaStructs.Count:'#9 + IntToStr(aDeltaStructs.Count)); + Log('*************************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceBeforeReleaseConnection( + aSender: TObject; const aConnectionName: string; + const aAcquiredConnection: IDAConnection); +begin + inherited; + if not ServiceMethods_ServerMainForm.cbBeforeReleaseConnection.Checked then Exit; + + Log('***BeforeReleaseConnection***'); + Log('aConnectionName:'#9 + aConnectionName); + Log('aAcquiredConnection.Name:'#9 + aAcquiredConnection.Name); + Log('aAcquiredConnection.ConnectionString:'#9 + aAcquiredConnection.ConnectionString); + Log('*****************************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceGetSchemaAsXMLEvent( + aSender: TObject; var aSchemaXML: string); +begin + inherited; + if not ServiceMethods_ServerMainForm.cbGetSchemaAsXMLEvent.Checked then Exit; + + Log('***GetSchemaAsXMLEvent***'); + Log('Length(aSchemaXML):'#9 + intTostr(Length(aSchemaXML))); + Log('*************************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceProcessDeltasError( + aSender: TObject; aDeltaStructs: TDADeltaStructList; aError: Exception; + var aDoRaise: Boolean); +begin + inherited; + if not ServiceMethods_ServerMainForm.cbProcessDeltasError.Checked then Exit; + + aDoRaise := ServiceMethods_ServerMainForm.cbProcessDeltasErrorRaise.Checked; + Log('***ProcessDeltasError***'); + Log('aDeltaStructs.Count:'#9 + IntToStr(aDeltaStructs.Count)); + Log('aError.ClassName:'#9 + aError.ClassName); + Log('aError.Message:'#9 + aError.Message); + Log('aDoRaise:'#9 + BoolStr[aDoRaise]); + Log('*************************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceUpdateDataBeginTransaction( + Sender: TObject; var aUseDefaultTransactionLogic: Boolean); +begin + inherited; + if not ServiceMethods_ServerMainForm.cbUpdateDataBeginTransaction.Checked then Exit; + + Log('***UpdateDataBeginTransaction***'); + Log('aUseDefaultTransactionLogic:'#9 + BoolStr[aUseDefaultTransactionLogic]); + Log('********************************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceUpdateDataCommitTransaction( + Sender: TObject; var aUseDefaultTransactionLogic: Boolean); +begin + inherited; + if not ServiceMethods_ServerMainForm.cbUpdateDataCommitTransaction.Checked then Exit; + + Log('***UpdateDataCommitTransaction***'); + Log('aUseDefaultTransactionLogic:'#9 + BoolStr[aUseDefaultTransactionLogic]); + Log('*********************************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceUpdateDataRollBackTransaction( + Sender: TObject; var aUseDefaultTransactionLogic: Boolean); +begin + inherited; + if not ServiceMethods_ServerMainForm.cbUpdateDataRollBackTransaction.Checked then Exit; + Log('***UpdateDataRollBackTransaction***'); + Log('aUseDefaultTransactionLogic:'#9 + BoolStr[aUseDefaultTransactionLogic]); + Log('***********************************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceValidateCommandExecution( + Sender: TObject; const aConnection: IDAConnection; + const aDatasetName: string; const aParamNames: array of string; + const aParamValues: array of Variant; aSchema: TDASchema; + var Allowed: Boolean); +var + i: integer; + SQLCommand: TDASQLCommand; +begin + inherited; + if not ServiceMethods_ServerMainForm.cbValidateCommandExecution.Checked then Exit; + + Log('***ValidateCommandExecution***'); + Log('aConnection.Name:'#9 + aConnection.Name); + Log('aDatasetName:'#9 + aDatasetName); + SQLCommand := aSchema.Commands.SQLCommandByName(aDatasetName); + if (SQLCommand <> nil) and (SQLCommand.Statements.Count > 0) then + Log('Command SQL:'#9 + SQLCommand.Statements[0].SQL); + Log('ParamCount:'#9 + intToStr(1 + ord(High(aParamNames)) - ord(Low(aParamNames)))); + for i := Low(aParamNames) to High(aParamNames) do + Log(#9 + aParamNames[i] + ' = ' + VarToStr(aParamValues[i])); + Log('aSchema.Name:'#9 + aSchema.Name); + Log('Allowed:'#9 + BoolStr[Allowed]); + Log('******************************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceValidateDatasetAccess( + Sender: TObject; const aConnection: IDAConnection; + const aDatasetName: string; const aParamNames: array of string; + const aParamValues: array of Variant; aSchema: TDASchema; + var Allowed: Boolean); +var + i: integer; +begin + inherited; + if not ServiceMethods_ServerMainForm.cbValidateDatasetAccess.Checked then Exit; + + Log('***ValidateDatasetAccess***'); + Log('aConnection.Name:'#9 + aConnection.Name); + Log('aDatasetName:'#9 + aDatasetName); + Log('ParamCount:'#9 + intToStr(1 + ord(High(aParamNames)) - ord(Low(aParamNames)))); + for i := Low(aParamNames) to High(aParamNames) do + Log(#9 + aParamNames[i] + ' = ' + VarToStr(aParamValues[i])); + Log('aSchema.Name:'#9 + aSchema.Name); + Log('Allowed:'#9 + BoolStr[Allowed]); + Log('***************************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceValidateDirectSQLAccess( + Sender: TObject; const aConnection: IDAConnection; + const aSQLText: string; const aParamNames: array of string; + const aParamValues: array of Variant; var Allowed: Boolean); +var + i: integer; +begin + inherited; + if not ServiceMethods_ServerMainForm.cbValidateDirectSQLAccess.Checked then Exit; + + Log('***ValidateDirectSQLAccess***'); + Log('aConnection.Name:'#9 + aConnection.Name); + Log('aSQLText:'#9 + aSQLText); + Log('ParamCount:'#9 + intToStr(1 + ord(High(aParamNames)) - ord(Low(aParamNames)))); + for i := Low(aParamNames) to High(aParamNames) do + Log(#9 + aParamNames[i] + ' = ' + VarToStr(aParamValues[i])); + Log('Allowed:'#9 + BoolStr[Allowed]); + Log('***************************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceAcquireConnectionFailure( + aSender: TObject; const aConnectionName: string; aError: Exception); +begin + inherited; + if not ServiceMethods_ServerMainForm.cbAcquireConnectionFailure.Checked then Exit; + + Log('***AcquireConnectionFailure***'); + Log('aConnectionName:'#9 + aConnectionName); + Log('aError.ClassName:'#9 + aError.ClassName); + Log('aError.Message:'#9 + aError.Message); + Log('******************************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceCreate( + Sender: TObject); +begin + inherited; + AllowSchemaAccess := ServiceMethods_ServerMainForm.cbAllowSchemaAccess.Checked; + AcquireConnection := ServiceMethods_ServerMainForm.cbAcquireConnection.Checked; + AllowDataAccess := ServiceMethods_ServerMainForm.cbAllowDataAccess.Checked; + AllowWhereSQL := ServiceMethods_ServerMainForm.cbAllowWhereSQL.Checked; + AllowExecuteCommands := ServiceMethods_ServerMainForm.cbAllowExecuteCommands.Checked; + AllowExecuteSQL := ServiceMethods_ServerMainForm.cbAllowExecuteSQL.Checked; + ProcessDeltasWithoutUpdateRules := ServiceMethods_ServerMainForm.cbProcessDeltasWithoutUpdateRules.Checked; + AllowDynamicSelect := ServiceMethods_ServerMainForm.cbAllowDynamicSelect.Checked; + AllowDynamicWhere := ServiceMethods_ServerMainForm.cbAllowDynamicWhere.Checked; + AllowUpdates := ServiceMethods_ServerMainForm.cbAllowUpdates.Checked; + AutoCreateBusinessProcessors := ServiceMethods_ServerMainForm.cbAutoCreateBusinessProcessors.Checked; + Exit; + + Log('***Create***'); + Log('************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceDestroy( + Sender: TObject); +begin + Exit; + + Log('***Destroy***'); + Log('*************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceActivate( + const aClientID: TGUID; aSession: TROSession; + const aMessage: IROMessage); +begin + Exit; + + Log('***Activate***'); + Log('aClientID:'#9 + GUIDToString(aClientID)); + // Log('aSession:'#9 + aSession.ClassName); + // Log('aError.Message:'#9 + aError.Message); + Log('**************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceDeactivate( + const aClientID: TGUID; aSession: TROSession); +begin + Exit; + + Log('***Deactivate***'); + Log('aClientID:'#9 + GUIDToString(aClientID)); + Log('****************'); + Log(''); +end; + +procedure TServiceMethods_Service.DataAbstractServiceBusinessProcessorAutoCreated( + aSender: TRORemoteDataModule; BusinessProcessor: TDABusinessProcessor); +begin + if not ServiceMethods_ServerMainForm.cbBusinessProcessorAutoCreated.Checked then Exit; + Log('***BusinessProcessorAutoCreated***'); + Log('****************'); + Log(''); +end; + +initialization + TROClassFactory.Create('ServiceMethods_Service', Create_ServiceMethods_Service, TServiceMethods_Service_Invoker); + +finalization + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Stored Procedures/StoredProcedures.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/Stored Procedures/StoredProcedures.Sample.html new file mode 100644 index 0000000..4252b3c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Stored Procedures/StoredProcedures.Sample.html @@ -0,0 +1,36 @@ + + + + + + + + + +

+ Stored Procedures Sample +

+ + +

Purpose

+ +

+This example shows how to use the IDAConnection's GetStoredProcedureNames method to retrieve a list of stored procedures for the connection. +
+It also shows how to use IDAConnection's NewCommand to access the IDASQLCommand interface: +

+
    +
  • RefreshParams receives the parameters of this stored procedure.
  • +
  • Execute the stored procedure.
  • +
+ +

Examine the Code

+
    +
  • + See the simple code in StoredProceduresMain.pas. +
  • +
+ + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Stored Procedures/StoredProcedures.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Stored Procedures/StoredProcedures.bdsproj new file mode 100644 index 0000000..326beb1 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Stored Procedures/StoredProcedures.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + StoredProcedures.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Stored Procedures/StoredProcedures.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Stored Procedures/StoredProcedures.dpr new file mode 100644 index 0000000..13269b1 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Stored Procedures/StoredProcedures.dpr @@ -0,0 +1,13 @@ +program StoredProcedures; + +uses + Forms, + StoredProceduresMain in 'StoredProceduresMain.pas' {StoredProceduresMainForm}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TStoredProceduresMainForm, StoredProceduresMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Stored Procedures/StoredProcedures.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Stored Procedures/StoredProcedures.dproj new file mode 100644 index 0000000..1c4e47d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Stored Procedures/StoredProcedures.dproj @@ -0,0 +1,72 @@ + + + {d57caf23-caa8-469d-81c2-3f5757a0f663} + StoredProcedures.dpr + Debug + AnyCPU + DCC32 + StoredProcedures.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + StoredProcedures.dpr + + + + + + + MainSource + + +
StoredProceduresMainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Stored Procedures/StoredProcedures.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Stored Procedures/StoredProcedures.res new file mode 100644 index 0000000..b946fbb Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Stored Procedures/StoredProcedures.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Stored Procedures/StoredProceduresMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Stored Procedures/StoredProceduresMain.dfm new file mode 100644 index 0000000..1babfef --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Stored Procedures/StoredProceduresMain.dfm @@ -0,0 +1,197 @@ +object StoredProceduresMainForm: TStoredProceduresMainForm + Left = 43 + Top = 144 + AutoScroll = False + Caption = 'Stored Procedure Demo' + ClientHeight = 340 + ClientWidth = 573 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + OnCreate = FormCreate + OnDestroy = FormDestroy + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 40 + Top = 16 + Width = 54 + Height = 13 + Caption = 'Connection' + end + object Label2: TLabel + Left = 8 + Top = 48 + Width = 86 + Height = 13 + Caption = 'Stored Procedure:' + end + object Label3: TLabel + Left = 408 + Top = 318 + Width = 28 + Height = 13 + Caption = 'Times' + end + object ExecuteButton: TButton + Left = 240 + Top = 312 + Width = 75 + Height = 25 + Caption = 'Execute' + TabOrder = 5 + OnClick = ExecuteButtonClick + end + object cbConnName: TComboBox + Left = 104 + Top = 12 + Width = 225 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 0 + end + object cbSPNames: TComboBox + Left = 104 + Top = 44 + Width = 225 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 2 + end + object ConnectButton: TButton + Left = 336 + Top = 10 + Width = 75 + Height = 25 + Caption = 'Connect' + TabOrder = 1 + OnClick = ConnectButtonClick + end + object ListParamsButton: TButton + Left = 336 + Top = 42 + Width = 75 + Height = 25 + Caption = 'List Params' + TabOrder = 3 + OnClick = ListParamsButtonClick + end + object StringGrid: TStringGrid + Left = 8 + Top = 80 + Width = 561 + Height = 217 + DefaultRowHeight = 16 + FixedCols = 4 + Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing] + TabOrder = 4 + ColWidths = ( + 129 + 67 + 65 + 65 + 201) + end + object SpinEdit: TSpinEdit + Left = 328 + Top = 313 + Width = 73 + Height = 22 + MaxValue = 0 + MinValue = 0 + TabOrder = 6 + Value = 1 + end + object DAConnectionManager: TDAConnectionManager + Connections = < + item + Name = 'ADO' + ConnectionString = + 'ADO?Server=localhost;UserID=sa;AuxDriver=SQLOLEDB.1;Database=Nor' + + 'thwind;password=' + Description = 'Borland ADOExpress Connection' + Default = True + Tag = 0 + end + item + Name = 'IBX' + ConnectionString = + 'IBX?Server=;UserID=sysdba;Password=masterkey;Database=C:\Program' + + ' Files\Borland\InterBase\examples\database\Employee.gdb' + Description = 'Borland IBExpress Connection' + Default = False + Tag = 0 + end> + DriverManager = DADriverManager + PoolingEnabled = True + Left = 416 + Top = 16 + end + object DADriverManager: TDADriverManager + DriverDirectory = '%SYSTEM%\' + TraceActive = False + TraceFlags = [] + Left = 384 + Top = 16 + end + object DASchema: TDASchema + ConnectionManager = DAConnectionManager + Datasets = <> + Commands = < + item + Params = <> + Statements = < + item + Connection = 'SDAC' + SQL = 'TestOutputParam' + StatementType = stStoredProcedure + ColumnMappings = <> + end + item + Connection = 'ADO' + SQL = 'TestOutputParam' + StatementType = stStoredProcedure + ColumnMappings = <> + end> + Name = 'Execute2' + end + item + Params = < + item + Name = 'InputText' + BlobType = dabtUnknown + ParamType = daptInput + end> + Statements = < + item + Connection = 'ADO' + SQL = + 'DECLARE @RC int'#10'DECLARE @InputText varchar(30)'#10'DECLARE @InputTex' + + 'tLength int'#10'DECLARE @SomethingElse varchar(200)'#10#10'SET @InputText ' + + '= :InputText'#10#10'EXEC @RC = TestOutputParam @InputText, @InputTextL' + + 'ength OUTPUT , @SomethingElse OUTPUT' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Execute1' + end> + RelationShips = <> + UpdateRules = <> + Left = 448 + Top = 16 + end + object DAADODriver1: TDAADODriver + Left = 480 + Top = 16 + end + object DAIBXDriver1: TDAIBXDriver + Left = 480 + Top = 48 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Stored Procedures/StoredProceduresMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Stored Procedures/StoredProceduresMain.pas new file mode 100644 index 0000000..1690f36 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Stored Procedures/StoredProceduresMain.pas @@ -0,0 +1,137 @@ +unit StoredProceduresMain; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uDADriverManager, uDAClasses, StdCtrls, uDAInterfaces, + uDAEngine, uDAADODriver, Grids, uDAIBXDriver, + Spin; + +type + TStoredProceduresMainForm = class(TForm) + DADriverManager: TDADriverManager; + ExecuteButton: TButton; + DAADODriver1: TDAADODriver; + Label1: TLabel; + cbConnName: TComboBox; + Label2: TLabel; + cbSPNames: TComboBox; + ConnectButton: TButton; + ListParamsButton: TButton; + StringGrid: TStringGrid; + DAIBXDriver1: TDAIBXDriver; + SpinEdit: TSpinEdit; + Label3: TLabel; + DAConnectionManager: TDAConnectionManager; + DASchema: TDASchema; + procedure ExecuteButtonClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure ConnectButtonClick(Sender: TObject); + procedure ListParamsButtonClick(Sender: TObject); + procedure FormDestroy(Sender: TObject); + private + fConn : IDAConnection; + + procedure CheckConnection; + public + end; + +var + StoredProceduresMainForm: TStoredProceduresMainForm; + +implementation + +uses uROClasses, TypInfo; + +{$R *.dfm} + +procedure TStoredProceduresMainForm.CheckConnection; +begin + Check(fConn=NIL, 'Connect to a database first!'); +end; + +procedure TStoredProceduresMainForm.ExecuteButtonClick(Sender: TObject); +var cmd : IDASQLCommand; + x, i : integer; +begin + CheckConnection; + cmd := fConn.NewCommand(cbSPNames.Text, stStoredProcedure); + cmd.RefreshParams; + + for x := 1 to SpinEdit.Value do begin + for i := 0 to cmd.Params.Count-1 do + if (StringGrid.Cells[4, i+1]<>'') + then cmd.ParamByName(StringGrid.Cells[0, i+1]).AsString := StringGrid.Cells[4, i+1]; + + cmd.Execute; + + for i := 0 to cmd.Params.Count-1 do + StringGrid.Cells[4, i+1] := cmd.ParamByName(StringGrid.Cells[0, i+1]).AsString; + end; +end; + +procedure TStoredProceduresMainForm.FormCreate(Sender: TObject); +var i : integer; +begin + for i := 0 to DAConnectionManager.Connections.Count-1 do + cbConnName.Items.Add(DAConnectionManager.Connections[i].Name); + cbConnName.ItemIndex := 0; +end; + +procedure TStoredProceduresMainForm.ConnectButtonClick(Sender: TObject); +var i : integer; + names : IROStrings; +begin + fConn := DAConnectionManager.NewConnection(cbConnName.Text); + cbSPNames.Items.Clear; + + names := NewROStrings; + fConn.GetStoredProcedureNames(names); + for i := 0 to (names.Count-1) do + cbSPNames.Items.Add(names[i]); + + cbSPNames.ItemIndex := 0; + cbSPNames.DroppedDown := TRUE; + + ListParamsButton.Enabled := cbSPNames.Items.Count>0 +end; + +procedure TStoredProceduresMainForm.ListParamsButtonClick(Sender: TObject); +var i : integer; + cmd : IDASQLCommand; + par : TDAParam; +begin + CheckConnection; + + cmd := fConn.NewCommand(cbSPNames.Text, stStoredProcedure); + cmd.RefreshParams; + + StringGrid.RowCount := cmd.Params.Count+1; + if (StringGrid.RowCount>1) + then StringGrid.FixedRows := 1; + StringGrid.FixedCols := 4; + + StringGrid.Cells[0, 0] := 'Name'; + StringGrid.Cells[1, 0] := 'Type'; + StringGrid.Cells[2, 0] := 'Size'; + StringGrid.Cells[3, 0] := 'Direction'; + StringGrid.Cells[4, 0] := 'Value'; + + for i := 0 to (cmd.Params.Count-1) do begin + par := cmd.Params[i]; + + StringGrid.Cells[0, i+1] := par.Name; + StringGrid.Cells[1, i+1] := GetEnumName(TypeInfo(TDADataType), Ord(par.DataType)); + StringGrid.Cells[2, i+1] := IntToStr(par.Size); + StringGrid.Cells[3, i+1] := GetEnumName(TypeInfo(TDAParamType), Ord(par.ParamType)); + StringGrid.Cells[4, i+1] := ''; + end; +end; + +procedure TStoredProceduresMainForm.FormDestroy(Sender: TObject); +begin + fConn := nil; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/RODLFILE.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/RODLFILE.res new file mode 100644 index 0000000..6c379af Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/RODLFILE.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/SampleSchemaClient_Intf.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/SampleSchemaClient_Intf.pas new file mode 100644 index 0000000..0d84abe --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/SampleSchemaClient_Intf.pas @@ -0,0 +1,981 @@ +unit SampleSchemaClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +const + { Data table rules ids + Feel free to change them to something more human readable + but make sure they are unique in the context of your application } + RID_Customers = '{A97B58B8-3C56-413D-BA55-360BCD6ACBEA}'; + RID_Orders = '{63B9B897-D9BC-430C-9D81-C0466A5CD6AD}'; + + { Data table names } + nme_Customers = 'Customers'; + nme_Orders = 'Orders'; + + { Customers fields } + fld_CustomersCustomerID = 'CustomerID'; + fld_CustomersCompanyName = 'CompanyName'; + fld_CustomersContactName = 'ContactName'; + fld_CustomersContactTitle = 'ContactTitle'; + fld_CustomersAddress = 'Address'; + fld_CustomersCity = 'City'; + fld_CustomersRegion = 'Region'; + fld_CustomersPostalCode = 'PostalCode'; + fld_CustomersCountry = 'Country'; + fld_CustomersPhone = 'Phone'; + fld_CustomersFax = 'Fax'; + + { Customers field indexes } + idx_CustomersCustomerID = 0; + idx_CustomersCompanyName = 1; + idx_CustomersContactName = 2; + idx_CustomersContactTitle = 3; + idx_CustomersAddress = 4; + idx_CustomersCity = 5; + idx_CustomersRegion = 6; + idx_CustomersPostalCode = 7; + idx_CustomersCountry = 8; + idx_CustomersPhone = 9; + idx_CustomersFax = 10; + + { Orders fields } + fld_OrdersOrderID = 'OrderID'; + fld_OrdersCustomerID = 'CustomerID'; + fld_OrdersEmployeeID = 'EmployeeID'; + fld_OrdersOrderDate = 'OrderDate'; + fld_OrdersRequiredDate = 'RequiredDate'; + fld_OrdersShippedDate = 'ShippedDate'; + fld_OrdersShipVia = 'ShipVia'; + fld_OrdersFreight = 'Freight'; + fld_OrdersShipName = 'ShipName'; + fld_OrdersShipAddress = 'ShipAddress'; + fld_OrdersShipCity = 'ShipCity'; + fld_OrdersShipRegion = 'ShipRegion'; + fld_OrdersShipPostalCode = 'ShipPostalCode'; + fld_OrdersShipCountry = 'ShipCountry'; + + { Orders field indexes } + idx_OrdersOrderID = 0; + idx_OrdersCustomerID = 1; + idx_OrdersEmployeeID = 2; + idx_OrdersOrderDate = 3; + idx_OrdersRequiredDate = 4; + idx_OrdersShippedDate = 5; + idx_OrdersShipVia = 6; + idx_OrdersFreight = 7; + idx_OrdersShipName = 8; + idx_OrdersShipAddress = 9; + idx_OrdersShipCity = 10; + idx_OrdersShipRegion = 11; + idx_OrdersShipPostalCode = 12; + idx_OrdersShipCountry = 13; + +type + { ICustomers } + ICustomers = interface(IDAStronglyTypedDataTable) + ['{555F0253-7185-47B4-86D9-0CCCF239EBBE}'] + { Property getters and setters } + function GetCustomerIDValue: String; + procedure SetCustomerIDValue(const aValue: String); + function GetCustomerIDIsNull: Boolean; + procedure SetCustomerIDIsNull(const aValue: Boolean); + function GetCompanyNameValue: String; + procedure SetCompanyNameValue(const aValue: String); + function GetCompanyNameIsNull: Boolean; + procedure SetCompanyNameIsNull(const aValue: Boolean); + function GetContactNameValue: String; + procedure SetContactNameValue(const aValue: String); + function GetContactNameIsNull: Boolean; + procedure SetContactNameIsNull(const aValue: Boolean); + function GetContactTitleValue: String; + procedure SetContactTitleValue(const aValue: String); + function GetContactTitleIsNull: Boolean; + procedure SetContactTitleIsNull(const aValue: Boolean); + function GetAddressValue: String; + procedure SetAddressValue(const aValue: String); + function GetAddressIsNull: Boolean; + procedure SetAddressIsNull(const aValue: Boolean); + function GetCityValue: String; + procedure SetCityValue(const aValue: String); + function GetCityIsNull: Boolean; + procedure SetCityIsNull(const aValue: Boolean); + function GetRegionValue: String; + procedure SetRegionValue(const aValue: String); + function GetRegionIsNull: Boolean; + procedure SetRegionIsNull(const aValue: Boolean); + function GetPostalCodeValue: String; + procedure SetPostalCodeValue(const aValue: String); + function GetPostalCodeIsNull: Boolean; + procedure SetPostalCodeIsNull(const aValue: Boolean); + function GetCountryValue: String; + procedure SetCountryValue(const aValue: String); + function GetCountryIsNull: Boolean; + procedure SetCountryIsNull(const aValue: Boolean); + function GetPhoneValue: String; + procedure SetPhoneValue(const aValue: String); + function GetPhoneIsNull: Boolean; + procedure SetPhoneIsNull(const aValue: Boolean); + function GetFaxValue: String; + procedure SetFaxValue(const aValue: String); + function GetFaxIsNull: Boolean; + procedure SetFaxIsNull(const aValue: Boolean); + + + { Properties } + property CustomerID: String read GetCustomerIDValue write SetCustomerIDValue; + property CustomerIDIsNull: Boolean read GetCustomerIDIsNull write SetCustomerIDIsNull; + property CompanyName: String read GetCompanyNameValue write SetCompanyNameValue; + property CompanyNameIsNull: Boolean read GetCompanyNameIsNull write SetCompanyNameIsNull; + property ContactName: String read GetContactNameValue write SetContactNameValue; + property ContactNameIsNull: Boolean read GetContactNameIsNull write SetContactNameIsNull; + property ContactTitle: String read GetContactTitleValue write SetContactTitleValue; + property ContactTitleIsNull: Boolean read GetContactTitleIsNull write SetContactTitleIsNull; + property Address: String read GetAddressValue write SetAddressValue; + property AddressIsNull: Boolean read GetAddressIsNull write SetAddressIsNull; + property City: String read GetCityValue write SetCityValue; + property CityIsNull: Boolean read GetCityIsNull write SetCityIsNull; + property Region: String read GetRegionValue write SetRegionValue; + property RegionIsNull: Boolean read GetRegionIsNull write SetRegionIsNull; + property PostalCode: String read GetPostalCodeValue write SetPostalCodeValue; + property PostalCodeIsNull: Boolean read GetPostalCodeIsNull write SetPostalCodeIsNull; + property Country: String read GetCountryValue write SetCountryValue; + property CountryIsNull: Boolean read GetCountryIsNull write SetCountryIsNull; + property Phone: String read GetPhoneValue write SetPhoneValue; + property PhoneIsNull: Boolean read GetPhoneIsNull write SetPhoneIsNull; + property Fax: String read GetFaxValue write SetFaxValue; + property FaxIsNull: Boolean read GetFaxIsNull write SetFaxIsNull; + end; + + { TCustomersDataTableRules } + TCustomersDataTableRules = class(TDADataTableRules, ICustomers) + private + protected + { Property getters and setters } + function GetCustomerIDValue: String; virtual; + procedure SetCustomerIDValue(const aValue: String); virtual; + function GetCustomerIDIsNull: Boolean; virtual; + procedure SetCustomerIDIsNull(const aValue: Boolean); virtual; + function GetCompanyNameValue: String; virtual; + procedure SetCompanyNameValue(const aValue: String); virtual; + function GetCompanyNameIsNull: Boolean; virtual; + procedure SetCompanyNameIsNull(const aValue: Boolean); virtual; + function GetContactNameValue: String; virtual; + procedure SetContactNameValue(const aValue: String); virtual; + function GetContactNameIsNull: Boolean; virtual; + procedure SetContactNameIsNull(const aValue: Boolean); virtual; + function GetContactTitleValue: String; virtual; + procedure SetContactTitleValue(const aValue: String); virtual; + function GetContactTitleIsNull: Boolean; virtual; + procedure SetContactTitleIsNull(const aValue: Boolean); virtual; + function GetAddressValue: String; virtual; + procedure SetAddressValue(const aValue: String); virtual; + function GetAddressIsNull: Boolean; virtual; + procedure SetAddressIsNull(const aValue: Boolean); virtual; + function GetCityValue: String; virtual; + procedure SetCityValue(const aValue: String); virtual; + function GetCityIsNull: Boolean; virtual; + procedure SetCityIsNull(const aValue: Boolean); virtual; + function GetRegionValue: String; virtual; + procedure SetRegionValue(const aValue: String); virtual; + function GetRegionIsNull: Boolean; virtual; + procedure SetRegionIsNull(const aValue: Boolean); virtual; + function GetPostalCodeValue: String; virtual; + procedure SetPostalCodeValue(const aValue: String); virtual; + function GetPostalCodeIsNull: Boolean; virtual; + procedure SetPostalCodeIsNull(const aValue: Boolean); virtual; + function GetCountryValue: String; virtual; + procedure SetCountryValue(const aValue: String); virtual; + function GetCountryIsNull: Boolean; virtual; + procedure SetCountryIsNull(const aValue: Boolean); virtual; + function GetPhoneValue: String; virtual; + procedure SetPhoneValue(const aValue: String); virtual; + function GetPhoneIsNull: Boolean; virtual; + procedure SetPhoneIsNull(const aValue: Boolean); virtual; + function GetFaxValue: String; virtual; + procedure SetFaxValue(const aValue: String); virtual; + function GetFaxIsNull: Boolean; virtual; + procedure SetFaxIsNull(const aValue: Boolean); virtual; + + { Properties } + property CustomerID: String read GetCustomerIDValue write SetCustomerIDValue; + property CustomerIDIsNull: Boolean read GetCustomerIDIsNull write SetCustomerIDIsNull; + property CompanyName: String read GetCompanyNameValue write SetCompanyNameValue; + property CompanyNameIsNull: Boolean read GetCompanyNameIsNull write SetCompanyNameIsNull; + property ContactName: String read GetContactNameValue write SetContactNameValue; + property ContactNameIsNull: Boolean read GetContactNameIsNull write SetContactNameIsNull; + property ContactTitle: String read GetContactTitleValue write SetContactTitleValue; + property ContactTitleIsNull: Boolean read GetContactTitleIsNull write SetContactTitleIsNull; + property Address: String read GetAddressValue write SetAddressValue; + property AddressIsNull: Boolean read GetAddressIsNull write SetAddressIsNull; + property City: String read GetCityValue write SetCityValue; + property CityIsNull: Boolean read GetCityIsNull write SetCityIsNull; + property Region: String read GetRegionValue write SetRegionValue; + property RegionIsNull: Boolean read GetRegionIsNull write SetRegionIsNull; + property PostalCode: String read GetPostalCodeValue write SetPostalCodeValue; + property PostalCodeIsNull: Boolean read GetPostalCodeIsNull write SetPostalCodeIsNull; + property Country: String read GetCountryValue write SetCountryValue; + property CountryIsNull: Boolean read GetCountryIsNull write SetCountryIsNull; + property Phone: String read GetPhoneValue write SetPhoneValue; + property PhoneIsNull: Boolean read GetPhoneIsNull write SetPhoneIsNull; + property Fax: String read GetFaxValue write SetFaxValue; + property FaxIsNull: Boolean read GetFaxIsNull write SetFaxIsNull; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IOrders } + IOrders = interface(IDAStronglyTypedDataTable) + ['{50A479DE-60BA-4066-AAEB-B840FC045BBB}'] + { Property getters and setters } + function GetOrderIDValue: Integer; + procedure SetOrderIDValue(const aValue: Integer); + function GetOrderIDIsNull: Boolean; + procedure SetOrderIDIsNull(const aValue: Boolean); + function GetCustomerIDValue: String; + procedure SetCustomerIDValue(const aValue: String); + function GetCustomerIDIsNull: Boolean; + procedure SetCustomerIDIsNull(const aValue: Boolean); + function GetEmployeeIDValue: Integer; + procedure SetEmployeeIDValue(const aValue: Integer); + function GetEmployeeIDIsNull: Boolean; + procedure SetEmployeeIDIsNull(const aValue: Boolean); + function GetOrderDateValue: DateTime; + procedure SetOrderDateValue(const aValue: DateTime); + function GetOrderDateIsNull: Boolean; + procedure SetOrderDateIsNull(const aValue: Boolean); + function GetRequiredDateValue: DateTime; + procedure SetRequiredDateValue(const aValue: DateTime); + function GetRequiredDateIsNull: Boolean; + procedure SetRequiredDateIsNull(const aValue: Boolean); + function GetShippedDateValue: DateTime; + procedure SetShippedDateValue(const aValue: DateTime); + function GetShippedDateIsNull: Boolean; + procedure SetShippedDateIsNull(const aValue: Boolean); + function GetShipViaValue: Integer; + procedure SetShipViaValue(const aValue: Integer); + function GetShipViaIsNull: Boolean; + procedure SetShipViaIsNull(const aValue: Boolean); + function GetFreightValue: Float; + procedure SetFreightValue(const aValue: Float); + function GetFreightIsNull: Boolean; + procedure SetFreightIsNull(const aValue: Boolean); + function GetShipNameValue: String; + procedure SetShipNameValue(const aValue: String); + function GetShipNameIsNull: Boolean; + procedure SetShipNameIsNull(const aValue: Boolean); + function GetShipAddressValue: String; + procedure SetShipAddressValue(const aValue: String); + function GetShipAddressIsNull: Boolean; + procedure SetShipAddressIsNull(const aValue: Boolean); + function GetShipCityValue: String; + procedure SetShipCityValue(const aValue: String); + function GetShipCityIsNull: Boolean; + procedure SetShipCityIsNull(const aValue: Boolean); + function GetShipRegionValue: String; + procedure SetShipRegionValue(const aValue: String); + function GetShipRegionIsNull: Boolean; + procedure SetShipRegionIsNull(const aValue: Boolean); + function GetShipPostalCodeValue: String; + procedure SetShipPostalCodeValue(const aValue: String); + function GetShipPostalCodeIsNull: Boolean; + procedure SetShipPostalCodeIsNull(const aValue: Boolean); + function GetShipCountryValue: String; + procedure SetShipCountryValue(const aValue: String); + function GetShipCountryIsNull: Boolean; + procedure SetShipCountryIsNull(const aValue: Boolean); + + + { Properties } + property OrderID: Integer read GetOrderIDValue write SetOrderIDValue; + property OrderIDIsNull: Boolean read GetOrderIDIsNull write SetOrderIDIsNull; + property CustomerID: String read GetCustomerIDValue write SetCustomerIDValue; + property CustomerIDIsNull: Boolean read GetCustomerIDIsNull write SetCustomerIDIsNull; + property EmployeeID: Integer read GetEmployeeIDValue write SetEmployeeIDValue; + property EmployeeIDIsNull: Boolean read GetEmployeeIDIsNull write SetEmployeeIDIsNull; + property OrderDate: DateTime read GetOrderDateValue write SetOrderDateValue; + property OrderDateIsNull: Boolean read GetOrderDateIsNull write SetOrderDateIsNull; + property RequiredDate: DateTime read GetRequiredDateValue write SetRequiredDateValue; + property RequiredDateIsNull: Boolean read GetRequiredDateIsNull write SetRequiredDateIsNull; + property ShippedDate: DateTime read GetShippedDateValue write SetShippedDateValue; + property ShippedDateIsNull: Boolean read GetShippedDateIsNull write SetShippedDateIsNull; + property ShipVia: Integer read GetShipViaValue write SetShipViaValue; + property ShipViaIsNull: Boolean read GetShipViaIsNull write SetShipViaIsNull; + property Freight: Float read GetFreightValue write SetFreightValue; + property FreightIsNull: Boolean read GetFreightIsNull write SetFreightIsNull; + property ShipName: String read GetShipNameValue write SetShipNameValue; + property ShipNameIsNull: Boolean read GetShipNameIsNull write SetShipNameIsNull; + property ShipAddress: String read GetShipAddressValue write SetShipAddressValue; + property ShipAddressIsNull: Boolean read GetShipAddressIsNull write SetShipAddressIsNull; + property ShipCity: String read GetShipCityValue write SetShipCityValue; + property ShipCityIsNull: Boolean read GetShipCityIsNull write SetShipCityIsNull; + property ShipRegion: String read GetShipRegionValue write SetShipRegionValue; + property ShipRegionIsNull: Boolean read GetShipRegionIsNull write SetShipRegionIsNull; + property ShipPostalCode: String read GetShipPostalCodeValue write SetShipPostalCodeValue; + property ShipPostalCodeIsNull: Boolean read GetShipPostalCodeIsNull write SetShipPostalCodeIsNull; + property ShipCountry: String read GetShipCountryValue write SetShipCountryValue; + property ShipCountryIsNull: Boolean read GetShipCountryIsNull write SetShipCountryIsNull; + end; + + { TOrdersDataTableRules } + TOrdersDataTableRules = class(TDADataTableRules, IOrders) + private + protected + { Property getters and setters } + function GetOrderIDValue: Integer; virtual; + procedure SetOrderIDValue(const aValue: Integer); virtual; + function GetOrderIDIsNull: Boolean; virtual; + procedure SetOrderIDIsNull(const aValue: Boolean); virtual; + function GetCustomerIDValue: String; virtual; + procedure SetCustomerIDValue(const aValue: String); virtual; + function GetCustomerIDIsNull: Boolean; virtual; + procedure SetCustomerIDIsNull(const aValue: Boolean); virtual; + function GetEmployeeIDValue: Integer; virtual; + procedure SetEmployeeIDValue(const aValue: Integer); virtual; + function GetEmployeeIDIsNull: Boolean; virtual; + procedure SetEmployeeIDIsNull(const aValue: Boolean); virtual; + function GetOrderDateValue: DateTime; virtual; + procedure SetOrderDateValue(const aValue: DateTime); virtual; + function GetOrderDateIsNull: Boolean; virtual; + procedure SetOrderDateIsNull(const aValue: Boolean); virtual; + function GetRequiredDateValue: DateTime; virtual; + procedure SetRequiredDateValue(const aValue: DateTime); virtual; + function GetRequiredDateIsNull: Boolean; virtual; + procedure SetRequiredDateIsNull(const aValue: Boolean); virtual; + function GetShippedDateValue: DateTime; virtual; + procedure SetShippedDateValue(const aValue: DateTime); virtual; + function GetShippedDateIsNull: Boolean; virtual; + procedure SetShippedDateIsNull(const aValue: Boolean); virtual; + function GetShipViaValue: Integer; virtual; + procedure SetShipViaValue(const aValue: Integer); virtual; + function GetShipViaIsNull: Boolean; virtual; + procedure SetShipViaIsNull(const aValue: Boolean); virtual; + function GetFreightValue: Float; virtual; + procedure SetFreightValue(const aValue: Float); virtual; + function GetFreightIsNull: Boolean; virtual; + procedure SetFreightIsNull(const aValue: Boolean); virtual; + function GetShipNameValue: String; virtual; + procedure SetShipNameValue(const aValue: String); virtual; + function GetShipNameIsNull: Boolean; virtual; + procedure SetShipNameIsNull(const aValue: Boolean); virtual; + function GetShipAddressValue: String; virtual; + procedure SetShipAddressValue(const aValue: String); virtual; + function GetShipAddressIsNull: Boolean; virtual; + procedure SetShipAddressIsNull(const aValue: Boolean); virtual; + function GetShipCityValue: String; virtual; + procedure SetShipCityValue(const aValue: String); virtual; + function GetShipCityIsNull: Boolean; virtual; + procedure SetShipCityIsNull(const aValue: Boolean); virtual; + function GetShipRegionValue: String; virtual; + procedure SetShipRegionValue(const aValue: String); virtual; + function GetShipRegionIsNull: Boolean; virtual; + procedure SetShipRegionIsNull(const aValue: Boolean); virtual; + function GetShipPostalCodeValue: String; virtual; + procedure SetShipPostalCodeValue(const aValue: String); virtual; + function GetShipPostalCodeIsNull: Boolean; virtual; + procedure SetShipPostalCodeIsNull(const aValue: Boolean); virtual; + function GetShipCountryValue: String; virtual; + procedure SetShipCountryValue(const aValue: String); virtual; + function GetShipCountryIsNull: Boolean; virtual; + procedure SetShipCountryIsNull(const aValue: Boolean); virtual; + + { Properties } + property OrderID: Integer read GetOrderIDValue write SetOrderIDValue; + property OrderIDIsNull: Boolean read GetOrderIDIsNull write SetOrderIDIsNull; + property CustomerID: String read GetCustomerIDValue write SetCustomerIDValue; + property CustomerIDIsNull: Boolean read GetCustomerIDIsNull write SetCustomerIDIsNull; + property EmployeeID: Integer read GetEmployeeIDValue write SetEmployeeIDValue; + property EmployeeIDIsNull: Boolean read GetEmployeeIDIsNull write SetEmployeeIDIsNull; + property OrderDate: DateTime read GetOrderDateValue write SetOrderDateValue; + property OrderDateIsNull: Boolean read GetOrderDateIsNull write SetOrderDateIsNull; + property RequiredDate: DateTime read GetRequiredDateValue write SetRequiredDateValue; + property RequiredDateIsNull: Boolean read GetRequiredDateIsNull write SetRequiredDateIsNull; + property ShippedDate: DateTime read GetShippedDateValue write SetShippedDateValue; + property ShippedDateIsNull: Boolean read GetShippedDateIsNull write SetShippedDateIsNull; + property ShipVia: Integer read GetShipViaValue write SetShipViaValue; + property ShipViaIsNull: Boolean read GetShipViaIsNull write SetShipViaIsNull; + property Freight: Float read GetFreightValue write SetFreightValue; + property FreightIsNull: Boolean read GetFreightIsNull write SetFreightIsNull; + property ShipName: String read GetShipNameValue write SetShipNameValue; + property ShipNameIsNull: Boolean read GetShipNameIsNull write SetShipNameIsNull; + property ShipAddress: String read GetShipAddressValue write SetShipAddressValue; + property ShipAddressIsNull: Boolean read GetShipAddressIsNull write SetShipAddressIsNull; + property ShipCity: String read GetShipCityValue write SetShipCityValue; + property ShipCityIsNull: Boolean read GetShipCityIsNull write SetShipCityIsNull; + property ShipRegion: String read GetShipRegionValue write SetShipRegionValue; + property ShipRegionIsNull: Boolean read GetShipRegionIsNull write SetShipRegionIsNull; + property ShipPostalCode: String read GetShipPostalCodeValue write SetShipPostalCodeValue; + property ShipPostalCodeIsNull: Boolean read GetShipPostalCodeIsNull write SetShipPostalCodeIsNull; + property ShipCountry: String read GetShipCountryValue write SetShipCountryValue; + property ShipCountryIsNull: Boolean read GetShipCountryIsNull write SetShipCountryIsNull; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TCustomersDataTableRules } +constructor TCustomersDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TCustomersDataTableRules.Destroy; +begin + inherited; +end; + +function TCustomersDataTableRules.GetCustomerIDValue: String; +begin + result := DataTable.Fields[idx_CustomersCustomerID].AsString; +end; + +procedure TCustomersDataTableRules.SetCustomerIDValue(const aValue: String); +begin + DataTable.Fields[idx_CustomersCustomerID].AsString := aValue; +end; + +function TCustomersDataTableRules.GetCustomerIDIsNull: boolean; +begin + result := DataTable.Fields[idx_CustomersCustomerID].IsNull; +end; + +procedure TCustomersDataTableRules.SetCustomerIDIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CustomersCustomerID].AsVariant := Null; +end; + +function TCustomersDataTableRules.GetCompanyNameValue: String; +begin + result := DataTable.Fields[idx_CustomersCompanyName].AsString; +end; + +procedure TCustomersDataTableRules.SetCompanyNameValue(const aValue: String); +begin + DataTable.Fields[idx_CustomersCompanyName].AsString := aValue; +end; + +function TCustomersDataTableRules.GetCompanyNameIsNull: boolean; +begin + result := DataTable.Fields[idx_CustomersCompanyName].IsNull; +end; + +procedure TCustomersDataTableRules.SetCompanyNameIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CustomersCompanyName].AsVariant := Null; +end; + +function TCustomersDataTableRules.GetContactNameValue: String; +begin + result := DataTable.Fields[idx_CustomersContactName].AsString; +end; + +procedure TCustomersDataTableRules.SetContactNameValue(const aValue: String); +begin + DataTable.Fields[idx_CustomersContactName].AsString := aValue; +end; + +function TCustomersDataTableRules.GetContactNameIsNull: boolean; +begin + result := DataTable.Fields[idx_CustomersContactName].IsNull; +end; + +procedure TCustomersDataTableRules.SetContactNameIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CustomersContactName].AsVariant := Null; +end; + +function TCustomersDataTableRules.GetContactTitleValue: String; +begin + result := DataTable.Fields[idx_CustomersContactTitle].AsString; +end; + +procedure TCustomersDataTableRules.SetContactTitleValue(const aValue: String); +begin + DataTable.Fields[idx_CustomersContactTitle].AsString := aValue; +end; + +function TCustomersDataTableRules.GetContactTitleIsNull: boolean; +begin + result := DataTable.Fields[idx_CustomersContactTitle].IsNull; +end; + +procedure TCustomersDataTableRules.SetContactTitleIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CustomersContactTitle].AsVariant := Null; +end; + +function TCustomersDataTableRules.GetAddressValue: String; +begin + result := DataTable.Fields[idx_CustomersAddress].AsString; +end; + +procedure TCustomersDataTableRules.SetAddressValue(const aValue: String); +begin + DataTable.Fields[idx_CustomersAddress].AsString := aValue; +end; + +function TCustomersDataTableRules.GetAddressIsNull: boolean; +begin + result := DataTable.Fields[idx_CustomersAddress].IsNull; +end; + +procedure TCustomersDataTableRules.SetAddressIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CustomersAddress].AsVariant := Null; +end; + +function TCustomersDataTableRules.GetCityValue: String; +begin + result := DataTable.Fields[idx_CustomersCity].AsString; +end; + +procedure TCustomersDataTableRules.SetCityValue(const aValue: String); +begin + DataTable.Fields[idx_CustomersCity].AsString := aValue; +end; + +function TCustomersDataTableRules.GetCityIsNull: boolean; +begin + result := DataTable.Fields[idx_CustomersCity].IsNull; +end; + +procedure TCustomersDataTableRules.SetCityIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CustomersCity].AsVariant := Null; +end; + +function TCustomersDataTableRules.GetRegionValue: String; +begin + result := DataTable.Fields[idx_CustomersRegion].AsString; +end; + +procedure TCustomersDataTableRules.SetRegionValue(const aValue: String); +begin + DataTable.Fields[idx_CustomersRegion].AsString := aValue; +end; + +function TCustomersDataTableRules.GetRegionIsNull: boolean; +begin + result := DataTable.Fields[idx_CustomersRegion].IsNull; +end; + +procedure TCustomersDataTableRules.SetRegionIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CustomersRegion].AsVariant := Null; +end; + +function TCustomersDataTableRules.GetPostalCodeValue: String; +begin + result := DataTable.Fields[idx_CustomersPostalCode].AsString; +end; + +procedure TCustomersDataTableRules.SetPostalCodeValue(const aValue: String); +begin + DataTable.Fields[idx_CustomersPostalCode].AsString := aValue; +end; + +function TCustomersDataTableRules.GetPostalCodeIsNull: boolean; +begin + result := DataTable.Fields[idx_CustomersPostalCode].IsNull; +end; + +procedure TCustomersDataTableRules.SetPostalCodeIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CustomersPostalCode].AsVariant := Null; +end; + +function TCustomersDataTableRules.GetCountryValue: String; +begin + result := DataTable.Fields[idx_CustomersCountry].AsString; +end; + +procedure TCustomersDataTableRules.SetCountryValue(const aValue: String); +begin + DataTable.Fields[idx_CustomersCountry].AsString := aValue; +end; + +function TCustomersDataTableRules.GetCountryIsNull: boolean; +begin + result := DataTable.Fields[idx_CustomersCountry].IsNull; +end; + +procedure TCustomersDataTableRules.SetCountryIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CustomersCountry].AsVariant := Null; +end; + +function TCustomersDataTableRules.GetPhoneValue: String; +begin + result := DataTable.Fields[idx_CustomersPhone].AsString; +end; + +procedure TCustomersDataTableRules.SetPhoneValue(const aValue: String); +begin + DataTable.Fields[idx_CustomersPhone].AsString := aValue; +end; + +function TCustomersDataTableRules.GetPhoneIsNull: boolean; +begin + result := DataTable.Fields[idx_CustomersPhone].IsNull; +end; + +procedure TCustomersDataTableRules.SetPhoneIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CustomersPhone].AsVariant := Null; +end; + +function TCustomersDataTableRules.GetFaxValue: String; +begin + result := DataTable.Fields[idx_CustomersFax].AsString; +end; + +procedure TCustomersDataTableRules.SetFaxValue(const aValue: String); +begin + DataTable.Fields[idx_CustomersFax].AsString := aValue; +end; + +function TCustomersDataTableRules.GetFaxIsNull: boolean; +begin + result := DataTable.Fields[idx_CustomersFax].IsNull; +end; + +procedure TCustomersDataTableRules.SetFaxIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CustomersFax].AsVariant := Null; +end; + + +{ TOrdersDataTableRules } +constructor TOrdersDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TOrdersDataTableRules.Destroy; +begin + inherited; +end; + +function TOrdersDataTableRules.GetOrderIDValue: Integer; +begin + result := DataTable.Fields[idx_OrdersOrderID].AsInteger; +end; + +procedure TOrdersDataTableRules.SetOrderIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_OrdersOrderID].AsInteger := aValue; +end; + +function TOrdersDataTableRules.GetOrderIDIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersOrderID].IsNull; +end; + +procedure TOrdersDataTableRules.SetOrderIDIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersOrderID].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetCustomerIDValue: String; +begin + result := DataTable.Fields[idx_OrdersCustomerID].AsString; +end; + +procedure TOrdersDataTableRules.SetCustomerIDValue(const aValue: String); +begin + DataTable.Fields[idx_OrdersCustomerID].AsString := aValue; +end; + +function TOrdersDataTableRules.GetCustomerIDIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersCustomerID].IsNull; +end; + +procedure TOrdersDataTableRules.SetCustomerIDIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersCustomerID].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetEmployeeIDValue: Integer; +begin + result := DataTable.Fields[idx_OrdersEmployeeID].AsInteger; +end; + +procedure TOrdersDataTableRules.SetEmployeeIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_OrdersEmployeeID].AsInteger := aValue; +end; + +function TOrdersDataTableRules.GetEmployeeIDIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersEmployeeID].IsNull; +end; + +procedure TOrdersDataTableRules.SetEmployeeIDIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersEmployeeID].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetOrderDateValue: DateTime; +begin + result := DataTable.Fields[idx_OrdersOrderDate].AsDateTime; +end; + +procedure TOrdersDataTableRules.SetOrderDateValue(const aValue: DateTime); +begin + DataTable.Fields[idx_OrdersOrderDate].AsDateTime := aValue; +end; + +function TOrdersDataTableRules.GetOrderDateIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersOrderDate].IsNull; +end; + +procedure TOrdersDataTableRules.SetOrderDateIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersOrderDate].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetRequiredDateValue: DateTime; +begin + result := DataTable.Fields[idx_OrdersRequiredDate].AsDateTime; +end; + +procedure TOrdersDataTableRules.SetRequiredDateValue(const aValue: DateTime); +begin + DataTable.Fields[idx_OrdersRequiredDate].AsDateTime := aValue; +end; + +function TOrdersDataTableRules.GetRequiredDateIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersRequiredDate].IsNull; +end; + +procedure TOrdersDataTableRules.SetRequiredDateIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersRequiredDate].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetShippedDateValue: DateTime; +begin + result := DataTable.Fields[idx_OrdersShippedDate].AsDateTime; +end; + +procedure TOrdersDataTableRules.SetShippedDateValue(const aValue: DateTime); +begin + DataTable.Fields[idx_OrdersShippedDate].AsDateTime := aValue; +end; + +function TOrdersDataTableRules.GetShippedDateIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersShippedDate].IsNull; +end; + +procedure TOrdersDataTableRules.SetShippedDateIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersShippedDate].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetShipViaValue: Integer; +begin + result := DataTable.Fields[idx_OrdersShipVia].AsInteger; +end; + +procedure TOrdersDataTableRules.SetShipViaValue(const aValue: Integer); +begin + DataTable.Fields[idx_OrdersShipVia].AsInteger := aValue; +end; + +function TOrdersDataTableRules.GetShipViaIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersShipVia].IsNull; +end; + +procedure TOrdersDataTableRules.SetShipViaIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersShipVia].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetFreightValue: Float; +begin + result := DataTable.Fields[idx_OrdersFreight].AsFloat; +end; + +procedure TOrdersDataTableRules.SetFreightValue(const aValue: Float); +begin + DataTable.Fields[idx_OrdersFreight].AsFloat := aValue; +end; + +function TOrdersDataTableRules.GetFreightIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersFreight].IsNull; +end; + +procedure TOrdersDataTableRules.SetFreightIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersFreight].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetShipNameValue: String; +begin + result := DataTable.Fields[idx_OrdersShipName].AsString; +end; + +procedure TOrdersDataTableRules.SetShipNameValue(const aValue: String); +begin + DataTable.Fields[idx_OrdersShipName].AsString := aValue; +end; + +function TOrdersDataTableRules.GetShipNameIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersShipName].IsNull; +end; + +procedure TOrdersDataTableRules.SetShipNameIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersShipName].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetShipAddressValue: String; +begin + result := DataTable.Fields[idx_OrdersShipAddress].AsString; +end; + +procedure TOrdersDataTableRules.SetShipAddressValue(const aValue: String); +begin + DataTable.Fields[idx_OrdersShipAddress].AsString := aValue; +end; + +function TOrdersDataTableRules.GetShipAddressIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersShipAddress].IsNull; +end; + +procedure TOrdersDataTableRules.SetShipAddressIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersShipAddress].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetShipCityValue: String; +begin + result := DataTable.Fields[idx_OrdersShipCity].AsString; +end; + +procedure TOrdersDataTableRules.SetShipCityValue(const aValue: String); +begin + DataTable.Fields[idx_OrdersShipCity].AsString := aValue; +end; + +function TOrdersDataTableRules.GetShipCityIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersShipCity].IsNull; +end; + +procedure TOrdersDataTableRules.SetShipCityIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersShipCity].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetShipRegionValue: String; +begin + result := DataTable.Fields[idx_OrdersShipRegion].AsString; +end; + +procedure TOrdersDataTableRules.SetShipRegionValue(const aValue: String); +begin + DataTable.Fields[idx_OrdersShipRegion].AsString := aValue; +end; + +function TOrdersDataTableRules.GetShipRegionIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersShipRegion].IsNull; +end; + +procedure TOrdersDataTableRules.SetShipRegionIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersShipRegion].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetShipPostalCodeValue: String; +begin + result := DataTable.Fields[idx_OrdersShipPostalCode].AsString; +end; + +procedure TOrdersDataTableRules.SetShipPostalCodeValue(const aValue: String); +begin + DataTable.Fields[idx_OrdersShipPostalCode].AsString := aValue; +end; + +function TOrdersDataTableRules.GetShipPostalCodeIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersShipPostalCode].IsNull; +end; + +procedure TOrdersDataTableRules.SetShipPostalCodeIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersShipPostalCode].AsVariant := Null; +end; + +function TOrdersDataTableRules.GetShipCountryValue: String; +begin + result := DataTable.Fields[idx_OrdersShipCountry].AsString; +end; + +procedure TOrdersDataTableRules.SetShipCountryValue(const aValue: String); +begin + DataTable.Fields[idx_OrdersShipCountry].AsString := aValue; +end; + +function TOrdersDataTableRules.GetShipCountryIsNull: boolean; +begin + result := DataTable.Fields[idx_OrdersShipCountry].IsNull; +end; + +procedure TOrdersDataTableRules.SetShipCountryIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_OrdersShipCountry].AsVariant := Null; +end; + + +initialization + RegisterDataTableRules(RID_Customers, TCustomersDataTableRules); + RegisterDataTableRules(RID_Orders, TOrdersDataTableRules); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/SampleSchemaServer_Intf.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/SampleSchemaServer_Intf.pas new file mode 100644 index 0000000..b75371d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/SampleSchemaServer_Intf.pas @@ -0,0 +1,1168 @@ +unit SampleSchemaServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, SampleSchemaClient_Intf; + +const + { Delta rules ids + Feel free to change them to something more human readable + but make sure they are unique in the context of your application } + RID_CustomersDelta = '{79206377-2D23-4B53-84A3-AA445FF02FA8}'; + RID_OrdersDelta = '{AD299B05-275D-495E-8036-3B383CDA5248}'; + +type + { ICustomersDelta } + ICustomersDelta = interface(ICustomers) + ['{79206377-2D23-4B53-84A3-AA445FF02FA8}'] + { Property getters and setters } + function GetOldCustomerIDValue : String; + function GetOldCompanyNameValue : String; + function GetOldContactNameValue : String; + function GetOldContactTitleValue : String; + function GetOldAddressValue : String; + function GetOldCityValue : String; + function GetOldRegionValue : String; + function GetOldPostalCodeValue : String; + function GetOldCountryValue : String; + function GetOldPhoneValue : String; + function GetOldFaxValue : String; + + { Properties } + property OldCustomerID : String read GetOldCustomerIDValue; + property OldCompanyName : String read GetOldCompanyNameValue; + property OldContactName : String read GetOldContactNameValue; + property OldContactTitle : String read GetOldContactTitleValue; + property OldAddress : String read GetOldAddressValue; + property OldCity : String read GetOldCityValue; + property OldRegion : String read GetOldRegionValue; + property OldPostalCode : String read GetOldPostalCodeValue; + property OldCountry : String read GetOldCountryValue; + property OldPhone : String read GetOldPhoneValue; + property OldFax : String read GetOldFaxValue; + end; + + { TCustomersBusinessProcessorRules } + TCustomersBusinessProcessorRules = class(TDABusinessProcessorRules, ICustomers, ICustomersDelta) + private + protected + { Property getters and setters } + function GetCustomerIDValue: String; virtual; + function GetCustomerIDIsNull: Boolean; virtual; + function GetOldCustomerIDValue: String; virtual; + function GetOldCustomerIDIsNull: Boolean; virtual; + procedure SetCustomerIDValue(const aValue: String); virtual; + procedure SetCustomerIDIsNull(const aValue: Boolean); virtual; + function GetCompanyNameValue: String; virtual; + function GetCompanyNameIsNull: Boolean; virtual; + function GetOldCompanyNameValue: String; virtual; + function GetOldCompanyNameIsNull: Boolean; virtual; + procedure SetCompanyNameValue(const aValue: String); virtual; + procedure SetCompanyNameIsNull(const aValue: Boolean); virtual; + function GetContactNameValue: String; virtual; + function GetContactNameIsNull: Boolean; virtual; + function GetOldContactNameValue: String; virtual; + function GetOldContactNameIsNull: Boolean; virtual; + procedure SetContactNameValue(const aValue: String); virtual; + procedure SetContactNameIsNull(const aValue: Boolean); virtual; + function GetContactTitleValue: String; virtual; + function GetContactTitleIsNull: Boolean; virtual; + function GetOldContactTitleValue: String; virtual; + function GetOldContactTitleIsNull: Boolean; virtual; + procedure SetContactTitleValue(const aValue: String); virtual; + procedure SetContactTitleIsNull(const aValue: Boolean); virtual; + function GetAddressValue: String; virtual; + function GetAddressIsNull: Boolean; virtual; + function GetOldAddressValue: String; virtual; + function GetOldAddressIsNull: Boolean; virtual; + procedure SetAddressValue(const aValue: String); virtual; + procedure SetAddressIsNull(const aValue: Boolean); virtual; + function GetCityValue: String; virtual; + function GetCityIsNull: Boolean; virtual; + function GetOldCityValue: String; virtual; + function GetOldCityIsNull: Boolean; virtual; + procedure SetCityValue(const aValue: String); virtual; + procedure SetCityIsNull(const aValue: Boolean); virtual; + function GetRegionValue: String; virtual; + function GetRegionIsNull: Boolean; virtual; + function GetOldRegionValue: String; virtual; + function GetOldRegionIsNull: Boolean; virtual; + procedure SetRegionValue(const aValue: String); virtual; + procedure SetRegionIsNull(const aValue: Boolean); virtual; + function GetPostalCodeValue: String; virtual; + function GetPostalCodeIsNull: Boolean; virtual; + function GetOldPostalCodeValue: String; virtual; + function GetOldPostalCodeIsNull: Boolean; virtual; + procedure SetPostalCodeValue(const aValue: String); virtual; + procedure SetPostalCodeIsNull(const aValue: Boolean); virtual; + function GetCountryValue: String; virtual; + function GetCountryIsNull: Boolean; virtual; + function GetOldCountryValue: String; virtual; + function GetOldCountryIsNull: Boolean; virtual; + procedure SetCountryValue(const aValue: String); virtual; + procedure SetCountryIsNull(const aValue: Boolean); virtual; + function GetPhoneValue: String; virtual; + function GetPhoneIsNull: Boolean; virtual; + function GetOldPhoneValue: String; virtual; + function GetOldPhoneIsNull: Boolean; virtual; + procedure SetPhoneValue(const aValue: String); virtual; + procedure SetPhoneIsNull(const aValue: Boolean); virtual; + function GetFaxValue: String; virtual; + function GetFaxIsNull: Boolean; virtual; + function GetOldFaxValue: String; virtual; + function GetOldFaxIsNull: Boolean; virtual; + procedure SetFaxValue(const aValue: String); virtual; + procedure SetFaxIsNull(const aValue: Boolean); virtual; + + { Properties } + property CustomerID : String read GetCustomerIDValue write SetCustomerIDValue; + property CustomerIDIsNull : Boolean read GetCustomerIDIsNull write SetCustomerIDIsNull; + property OldCustomerID : String read GetOldCustomerIDValue; + property OldCustomerIDIsNull : Boolean read GetOldCustomerIDIsNull; + property CompanyName : String read GetCompanyNameValue write SetCompanyNameValue; + property CompanyNameIsNull : Boolean read GetCompanyNameIsNull write SetCompanyNameIsNull; + property OldCompanyName : String read GetOldCompanyNameValue; + property OldCompanyNameIsNull : Boolean read GetOldCompanyNameIsNull; + property ContactName : String read GetContactNameValue write SetContactNameValue; + property ContactNameIsNull : Boolean read GetContactNameIsNull write SetContactNameIsNull; + property OldContactName : String read GetOldContactNameValue; + property OldContactNameIsNull : Boolean read GetOldContactNameIsNull; + property ContactTitle : String read GetContactTitleValue write SetContactTitleValue; + property ContactTitleIsNull : Boolean read GetContactTitleIsNull write SetContactTitleIsNull; + property OldContactTitle : String read GetOldContactTitleValue; + property OldContactTitleIsNull : Boolean read GetOldContactTitleIsNull; + property Address : String read GetAddressValue write SetAddressValue; + property AddressIsNull : Boolean read GetAddressIsNull write SetAddressIsNull; + property OldAddress : String read GetOldAddressValue; + property OldAddressIsNull : Boolean read GetOldAddressIsNull; + property City : String read GetCityValue write SetCityValue; + property CityIsNull : Boolean read GetCityIsNull write SetCityIsNull; + property OldCity : String read GetOldCityValue; + property OldCityIsNull : Boolean read GetOldCityIsNull; + property Region : String read GetRegionValue write SetRegionValue; + property RegionIsNull : Boolean read GetRegionIsNull write SetRegionIsNull; + property OldRegion : String read GetOldRegionValue; + property OldRegionIsNull : Boolean read GetOldRegionIsNull; + property PostalCode : String read GetPostalCodeValue write SetPostalCodeValue; + property PostalCodeIsNull : Boolean read GetPostalCodeIsNull write SetPostalCodeIsNull; + property OldPostalCode : String read GetOldPostalCodeValue; + property OldPostalCodeIsNull : Boolean read GetOldPostalCodeIsNull; + property Country : String read GetCountryValue write SetCountryValue; + property CountryIsNull : Boolean read GetCountryIsNull write SetCountryIsNull; + property OldCountry : String read GetOldCountryValue; + property OldCountryIsNull : Boolean read GetOldCountryIsNull; + property Phone : String read GetPhoneValue write SetPhoneValue; + property PhoneIsNull : Boolean read GetPhoneIsNull write SetPhoneIsNull; + property OldPhone : String read GetOldPhoneValue; + property OldPhoneIsNull : Boolean read GetOldPhoneIsNull; + property Fax : String read GetFaxValue write SetFaxValue; + property FaxIsNull : Boolean read GetFaxIsNull write SetFaxIsNull; + property OldFax : String read GetOldFaxValue; + property OldFaxIsNull : Boolean read GetOldFaxIsNull; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IOrdersDelta } + IOrdersDelta = interface(IOrders) + ['{AD299B05-275D-495E-8036-3B383CDA5248}'] + { Property getters and setters } + function GetOldOrderIDValue : Integer; + function GetOldCustomerIDValue : String; + function GetOldEmployeeIDValue : Integer; + function GetOldOrderDateValue : DateTime; + function GetOldRequiredDateValue : DateTime; + function GetOldShippedDateValue : DateTime; + function GetOldShipViaValue : Integer; + function GetOldFreightValue : Float; + function GetOldShipNameValue : String; + function GetOldShipAddressValue : String; + function GetOldShipCityValue : String; + function GetOldShipRegionValue : String; + function GetOldShipPostalCodeValue : String; + function GetOldShipCountryValue : String; + + { Properties } + property OldOrderID : Integer read GetOldOrderIDValue; + property OldCustomerID : String read GetOldCustomerIDValue; + property OldEmployeeID : Integer read GetOldEmployeeIDValue; + property OldOrderDate : DateTime read GetOldOrderDateValue; + property OldRequiredDate : DateTime read GetOldRequiredDateValue; + property OldShippedDate : DateTime read GetOldShippedDateValue; + property OldShipVia : Integer read GetOldShipViaValue; + property OldFreight : Float read GetOldFreightValue; + property OldShipName : String read GetOldShipNameValue; + property OldShipAddress : String read GetOldShipAddressValue; + property OldShipCity : String read GetOldShipCityValue; + property OldShipRegion : String read GetOldShipRegionValue; + property OldShipPostalCode : String read GetOldShipPostalCodeValue; + property OldShipCountry : String read GetOldShipCountryValue; + end; + + { TOrdersBusinessProcessorRules } + TOrdersBusinessProcessorRules = class(TDABusinessProcessorRules, IOrders, IOrdersDelta) + private + protected + { Property getters and setters } + function GetOrderIDValue: Integer; virtual; + function GetOrderIDIsNull: Boolean; virtual; + function GetOldOrderIDValue: Integer; virtual; + function GetOldOrderIDIsNull: Boolean; virtual; + procedure SetOrderIDValue(const aValue: Integer); virtual; + procedure SetOrderIDIsNull(const aValue: Boolean); virtual; + function GetCustomerIDValue: String; virtual; + function GetCustomerIDIsNull: Boolean; virtual; + function GetOldCustomerIDValue: String; virtual; + function GetOldCustomerIDIsNull: Boolean; virtual; + procedure SetCustomerIDValue(const aValue: String); virtual; + procedure SetCustomerIDIsNull(const aValue: Boolean); virtual; + function GetEmployeeIDValue: Integer; virtual; + function GetEmployeeIDIsNull: Boolean; virtual; + function GetOldEmployeeIDValue: Integer; virtual; + function GetOldEmployeeIDIsNull: Boolean; virtual; + procedure SetEmployeeIDValue(const aValue: Integer); virtual; + procedure SetEmployeeIDIsNull(const aValue: Boolean); virtual; + function GetOrderDateValue: DateTime; virtual; + function GetOrderDateIsNull: Boolean; virtual; + function GetOldOrderDateValue: DateTime; virtual; + function GetOldOrderDateIsNull: Boolean; virtual; + procedure SetOrderDateValue(const aValue: DateTime); virtual; + procedure SetOrderDateIsNull(const aValue: Boolean); virtual; + function GetRequiredDateValue: DateTime; virtual; + function GetRequiredDateIsNull: Boolean; virtual; + function GetOldRequiredDateValue: DateTime; virtual; + function GetOldRequiredDateIsNull: Boolean; virtual; + procedure SetRequiredDateValue(const aValue: DateTime); virtual; + procedure SetRequiredDateIsNull(const aValue: Boolean); virtual; + function GetShippedDateValue: DateTime; virtual; + function GetShippedDateIsNull: Boolean; virtual; + function GetOldShippedDateValue: DateTime; virtual; + function GetOldShippedDateIsNull: Boolean; virtual; + procedure SetShippedDateValue(const aValue: DateTime); virtual; + procedure SetShippedDateIsNull(const aValue: Boolean); virtual; + function GetShipViaValue: Integer; virtual; + function GetShipViaIsNull: Boolean; virtual; + function GetOldShipViaValue: Integer; virtual; + function GetOldShipViaIsNull: Boolean; virtual; + procedure SetShipViaValue(const aValue: Integer); virtual; + procedure SetShipViaIsNull(const aValue: Boolean); virtual; + function GetFreightValue: Float; virtual; + function GetFreightIsNull: Boolean; virtual; + function GetOldFreightValue: Float; virtual; + function GetOldFreightIsNull: Boolean; virtual; + procedure SetFreightValue(const aValue: Float); virtual; + procedure SetFreightIsNull(const aValue: Boolean); virtual; + function GetShipNameValue: String; virtual; + function GetShipNameIsNull: Boolean; virtual; + function GetOldShipNameValue: String; virtual; + function GetOldShipNameIsNull: Boolean; virtual; + procedure SetShipNameValue(const aValue: String); virtual; + procedure SetShipNameIsNull(const aValue: Boolean); virtual; + function GetShipAddressValue: String; virtual; + function GetShipAddressIsNull: Boolean; virtual; + function GetOldShipAddressValue: String; virtual; + function GetOldShipAddressIsNull: Boolean; virtual; + procedure SetShipAddressValue(const aValue: String); virtual; + procedure SetShipAddressIsNull(const aValue: Boolean); virtual; + function GetShipCityValue: String; virtual; + function GetShipCityIsNull: Boolean; virtual; + function GetOldShipCityValue: String; virtual; + function GetOldShipCityIsNull: Boolean; virtual; + procedure SetShipCityValue(const aValue: String); virtual; + procedure SetShipCityIsNull(const aValue: Boolean); virtual; + function GetShipRegionValue: String; virtual; + function GetShipRegionIsNull: Boolean; virtual; + function GetOldShipRegionValue: String; virtual; + function GetOldShipRegionIsNull: Boolean; virtual; + procedure SetShipRegionValue(const aValue: String); virtual; + procedure SetShipRegionIsNull(const aValue: Boolean); virtual; + function GetShipPostalCodeValue: String; virtual; + function GetShipPostalCodeIsNull: Boolean; virtual; + function GetOldShipPostalCodeValue: String; virtual; + function GetOldShipPostalCodeIsNull: Boolean; virtual; + procedure SetShipPostalCodeValue(const aValue: String); virtual; + procedure SetShipPostalCodeIsNull(const aValue: Boolean); virtual; + function GetShipCountryValue: String; virtual; + function GetShipCountryIsNull: Boolean; virtual; + function GetOldShipCountryValue: String; virtual; + function GetOldShipCountryIsNull: Boolean; virtual; + procedure SetShipCountryValue(const aValue: String); virtual; + procedure SetShipCountryIsNull(const aValue: Boolean); virtual; + + { Properties } + property OrderID : Integer read GetOrderIDValue write SetOrderIDValue; + property OrderIDIsNull : Boolean read GetOrderIDIsNull write SetOrderIDIsNull; + property OldOrderID : Integer read GetOldOrderIDValue; + property OldOrderIDIsNull : Boolean read GetOldOrderIDIsNull; + property CustomerID : String read GetCustomerIDValue write SetCustomerIDValue; + property CustomerIDIsNull : Boolean read GetCustomerIDIsNull write SetCustomerIDIsNull; + property OldCustomerID : String read GetOldCustomerIDValue; + property OldCustomerIDIsNull : Boolean read GetOldCustomerIDIsNull; + property EmployeeID : Integer read GetEmployeeIDValue write SetEmployeeIDValue; + property EmployeeIDIsNull : Boolean read GetEmployeeIDIsNull write SetEmployeeIDIsNull; + property OldEmployeeID : Integer read GetOldEmployeeIDValue; + property OldEmployeeIDIsNull : Boolean read GetOldEmployeeIDIsNull; + property OrderDate : DateTime read GetOrderDateValue write SetOrderDateValue; + property OrderDateIsNull : Boolean read GetOrderDateIsNull write SetOrderDateIsNull; + property OldOrderDate : DateTime read GetOldOrderDateValue; + property OldOrderDateIsNull : Boolean read GetOldOrderDateIsNull; + property RequiredDate : DateTime read GetRequiredDateValue write SetRequiredDateValue; + property RequiredDateIsNull : Boolean read GetRequiredDateIsNull write SetRequiredDateIsNull; + property OldRequiredDate : DateTime read GetOldRequiredDateValue; + property OldRequiredDateIsNull : Boolean read GetOldRequiredDateIsNull; + property ShippedDate : DateTime read GetShippedDateValue write SetShippedDateValue; + property ShippedDateIsNull : Boolean read GetShippedDateIsNull write SetShippedDateIsNull; + property OldShippedDate : DateTime read GetOldShippedDateValue; + property OldShippedDateIsNull : Boolean read GetOldShippedDateIsNull; + property ShipVia : Integer read GetShipViaValue write SetShipViaValue; + property ShipViaIsNull : Boolean read GetShipViaIsNull write SetShipViaIsNull; + property OldShipVia : Integer read GetOldShipViaValue; + property OldShipViaIsNull : Boolean read GetOldShipViaIsNull; + property Freight : Float read GetFreightValue write SetFreightValue; + property FreightIsNull : Boolean read GetFreightIsNull write SetFreightIsNull; + property OldFreight : Float read GetOldFreightValue; + property OldFreightIsNull : Boolean read GetOldFreightIsNull; + property ShipName : String read GetShipNameValue write SetShipNameValue; + property ShipNameIsNull : Boolean read GetShipNameIsNull write SetShipNameIsNull; + property OldShipName : String read GetOldShipNameValue; + property OldShipNameIsNull : Boolean read GetOldShipNameIsNull; + property ShipAddress : String read GetShipAddressValue write SetShipAddressValue; + property ShipAddressIsNull : Boolean read GetShipAddressIsNull write SetShipAddressIsNull; + property OldShipAddress : String read GetOldShipAddressValue; + property OldShipAddressIsNull : Boolean read GetOldShipAddressIsNull; + property ShipCity : String read GetShipCityValue write SetShipCityValue; + property ShipCityIsNull : Boolean read GetShipCityIsNull write SetShipCityIsNull; + property OldShipCity : String read GetOldShipCityValue; + property OldShipCityIsNull : Boolean read GetOldShipCityIsNull; + property ShipRegion : String read GetShipRegionValue write SetShipRegionValue; + property ShipRegionIsNull : Boolean read GetShipRegionIsNull write SetShipRegionIsNull; + property OldShipRegion : String read GetOldShipRegionValue; + property OldShipRegionIsNull : Boolean read GetOldShipRegionIsNull; + property ShipPostalCode : String read GetShipPostalCodeValue write SetShipPostalCodeValue; + property ShipPostalCodeIsNull : Boolean read GetShipPostalCodeIsNull write SetShipPostalCodeIsNull; + property OldShipPostalCode : String read GetOldShipPostalCodeValue; + property OldShipPostalCodeIsNull : Boolean read GetOldShipPostalCodeIsNull; + property ShipCountry : String read GetShipCountryValue write SetShipCountryValue; + property ShipCountryIsNull : Boolean read GetShipCountryIsNull write SetShipCountryIsNull; + property OldShipCountry : String read GetOldShipCountryValue; + property OldShipCountryIsNull : Boolean read GetOldShipCountryIsNull; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TCustomersBusinessProcessorRules } +constructor TCustomersBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TCustomersBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TCustomersBusinessProcessorRules.GetCustomerIDValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCustomerID]; +end; + +function TCustomersBusinessProcessorRules.GetCustomerIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCustomerID]); +end; + +function TCustomersBusinessProcessorRules.GetOldCustomerIDValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersCustomerID]; +end; + +function TCustomersBusinessProcessorRules.GetOldCustomerIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersCustomerID]); +end; + +procedure TCustomersBusinessProcessorRules.SetCustomerIDValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCustomerID] := aValue; +end; + +procedure TCustomersBusinessProcessorRules.SetCustomerIDIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCustomerID] := Null; +end; + +function TCustomersBusinessProcessorRules.GetCompanyNameValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCompanyName]; +end; + +function TCustomersBusinessProcessorRules.GetCompanyNameIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCompanyName]); +end; + +function TCustomersBusinessProcessorRules.GetOldCompanyNameValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersCompanyName]; +end; + +function TCustomersBusinessProcessorRules.GetOldCompanyNameIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersCompanyName]); +end; + +procedure TCustomersBusinessProcessorRules.SetCompanyNameValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCompanyName] := aValue; +end; + +procedure TCustomersBusinessProcessorRules.SetCompanyNameIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCompanyName] := Null; +end; + +function TCustomersBusinessProcessorRules.GetContactNameValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersContactName]; +end; + +function TCustomersBusinessProcessorRules.GetContactNameIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersContactName]); +end; + +function TCustomersBusinessProcessorRules.GetOldContactNameValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersContactName]; +end; + +function TCustomersBusinessProcessorRules.GetOldContactNameIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersContactName]); +end; + +procedure TCustomersBusinessProcessorRules.SetContactNameValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersContactName] := aValue; +end; + +procedure TCustomersBusinessProcessorRules.SetContactNameIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersContactName] := Null; +end; + +function TCustomersBusinessProcessorRules.GetContactTitleValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersContactTitle]; +end; + +function TCustomersBusinessProcessorRules.GetContactTitleIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersContactTitle]); +end; + +function TCustomersBusinessProcessorRules.GetOldContactTitleValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersContactTitle]; +end; + +function TCustomersBusinessProcessorRules.GetOldContactTitleIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersContactTitle]); +end; + +procedure TCustomersBusinessProcessorRules.SetContactTitleValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersContactTitle] := aValue; +end; + +procedure TCustomersBusinessProcessorRules.SetContactTitleIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersContactTitle] := Null; +end; + +function TCustomersBusinessProcessorRules.GetAddressValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersAddress]; +end; + +function TCustomersBusinessProcessorRules.GetAddressIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersAddress]); +end; + +function TCustomersBusinessProcessorRules.GetOldAddressValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersAddress]; +end; + +function TCustomersBusinessProcessorRules.GetOldAddressIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersAddress]); +end; + +procedure TCustomersBusinessProcessorRules.SetAddressValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersAddress] := aValue; +end; + +procedure TCustomersBusinessProcessorRules.SetAddressIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersAddress] := Null; +end; + +function TCustomersBusinessProcessorRules.GetCityValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCity]; +end; + +function TCustomersBusinessProcessorRules.GetCityIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCity]); +end; + +function TCustomersBusinessProcessorRules.GetOldCityValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersCity]; +end; + +function TCustomersBusinessProcessorRules.GetOldCityIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersCity]); +end; + +procedure TCustomersBusinessProcessorRules.SetCityValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCity] := aValue; +end; + +procedure TCustomersBusinessProcessorRules.SetCityIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCity] := Null; +end; + +function TCustomersBusinessProcessorRules.GetRegionValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersRegion]; +end; + +function TCustomersBusinessProcessorRules.GetRegionIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersRegion]); +end; + +function TCustomersBusinessProcessorRules.GetOldRegionValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersRegion]; +end; + +function TCustomersBusinessProcessorRules.GetOldRegionIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersRegion]); +end; + +procedure TCustomersBusinessProcessorRules.SetRegionValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersRegion] := aValue; +end; + +procedure TCustomersBusinessProcessorRules.SetRegionIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersRegion] := Null; +end; + +function TCustomersBusinessProcessorRules.GetPostalCodeValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersPostalCode]; +end; + +function TCustomersBusinessProcessorRules.GetPostalCodeIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersPostalCode]); +end; + +function TCustomersBusinessProcessorRules.GetOldPostalCodeValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersPostalCode]; +end; + +function TCustomersBusinessProcessorRules.GetOldPostalCodeIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersPostalCode]); +end; + +procedure TCustomersBusinessProcessorRules.SetPostalCodeValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersPostalCode] := aValue; +end; + +procedure TCustomersBusinessProcessorRules.SetPostalCodeIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersPostalCode] := Null; +end; + +function TCustomersBusinessProcessorRules.GetCountryValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCountry]; +end; + +function TCustomersBusinessProcessorRules.GetCountryIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCountry]); +end; + +function TCustomersBusinessProcessorRules.GetOldCountryValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersCountry]; +end; + +function TCustomersBusinessProcessorRules.GetOldCountryIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersCountry]); +end; + +procedure TCustomersBusinessProcessorRules.SetCountryValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCountry] := aValue; +end; + +procedure TCustomersBusinessProcessorRules.SetCountryIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersCountry] := Null; +end; + +function TCustomersBusinessProcessorRules.GetPhoneValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersPhone]; +end; + +function TCustomersBusinessProcessorRules.GetPhoneIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersPhone]); +end; + +function TCustomersBusinessProcessorRules.GetOldPhoneValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersPhone]; +end; + +function TCustomersBusinessProcessorRules.GetOldPhoneIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersPhone]); +end; + +procedure TCustomersBusinessProcessorRules.SetPhoneValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersPhone] := aValue; +end; + +procedure TCustomersBusinessProcessorRules.SetPhoneIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersPhone] := Null; +end; + +function TCustomersBusinessProcessorRules.GetFaxValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersFax]; +end; + +function TCustomersBusinessProcessorRules.GetFaxIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersFax]); +end; + +function TCustomersBusinessProcessorRules.GetOldFaxValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersFax]; +end; + +function TCustomersBusinessProcessorRules.GetOldFaxIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CustomersFax]); +end; + +procedure TCustomersBusinessProcessorRules.SetFaxValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersFax] := aValue; +end; + +procedure TCustomersBusinessProcessorRules.SetFaxIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CustomersFax] := Null; +end; + + +{ TOrdersBusinessProcessorRules } +constructor TOrdersBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TOrdersBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TOrdersBusinessProcessorRules.GetOrderIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersOrderID]; +end; + +function TOrdersBusinessProcessorRules.GetOrderIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersOrderID]); +end; + +function TOrdersBusinessProcessorRules.GetOldOrderIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersOrderID]; +end; + +function TOrdersBusinessProcessorRules.GetOldOrderIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersOrderID]); +end; + +procedure TOrdersBusinessProcessorRules.SetOrderIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersOrderID] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetOrderIDIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersOrderID] := Null; +end; + +function TOrdersBusinessProcessorRules.GetCustomerIDValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersCustomerID]; +end; + +function TOrdersBusinessProcessorRules.GetCustomerIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersCustomerID]); +end; + +function TOrdersBusinessProcessorRules.GetOldCustomerIDValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersCustomerID]; +end; + +function TOrdersBusinessProcessorRules.GetOldCustomerIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersCustomerID]); +end; + +procedure TOrdersBusinessProcessorRules.SetCustomerIDValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersCustomerID] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetCustomerIDIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersCustomerID] := Null; +end; + +function TOrdersBusinessProcessorRules.GetEmployeeIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersEmployeeID]; +end; + +function TOrdersBusinessProcessorRules.GetEmployeeIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersEmployeeID]); +end; + +function TOrdersBusinessProcessorRules.GetOldEmployeeIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersEmployeeID]; +end; + +function TOrdersBusinessProcessorRules.GetOldEmployeeIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersEmployeeID]); +end; + +procedure TOrdersBusinessProcessorRules.SetEmployeeIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersEmployeeID] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetEmployeeIDIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersEmployeeID] := Null; +end; + +function TOrdersBusinessProcessorRules.GetOrderDateValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersOrderDate]; +end; + +function TOrdersBusinessProcessorRules.GetOrderDateIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersOrderDate]); +end; + +function TOrdersBusinessProcessorRules.GetOldOrderDateValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersOrderDate]; +end; + +function TOrdersBusinessProcessorRules.GetOldOrderDateIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersOrderDate]); +end; + +procedure TOrdersBusinessProcessorRules.SetOrderDateValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersOrderDate] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetOrderDateIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersOrderDate] := Null; +end; + +function TOrdersBusinessProcessorRules.GetRequiredDateValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersRequiredDate]; +end; + +function TOrdersBusinessProcessorRules.GetRequiredDateIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersRequiredDate]); +end; + +function TOrdersBusinessProcessorRules.GetOldRequiredDateValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersRequiredDate]; +end; + +function TOrdersBusinessProcessorRules.GetOldRequiredDateIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersRequiredDate]); +end; + +procedure TOrdersBusinessProcessorRules.SetRequiredDateValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersRequiredDate] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetRequiredDateIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersRequiredDate] := Null; +end; + +function TOrdersBusinessProcessorRules.GetShippedDateValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShippedDate]; +end; + +function TOrdersBusinessProcessorRules.GetShippedDateIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShippedDate]); +end; + +function TOrdersBusinessProcessorRules.GetOldShippedDateValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShippedDate]; +end; + +function TOrdersBusinessProcessorRules.GetOldShippedDateIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShippedDate]); +end; + +procedure TOrdersBusinessProcessorRules.SetShippedDateValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShippedDate] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetShippedDateIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShippedDate] := Null; +end; + +function TOrdersBusinessProcessorRules.GetShipViaValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipVia]; +end; + +function TOrdersBusinessProcessorRules.GetShipViaIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipVia]); +end; + +function TOrdersBusinessProcessorRules.GetOldShipViaValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipVia]; +end; + +function TOrdersBusinessProcessorRules.GetOldShipViaIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipVia]); +end; + +procedure TOrdersBusinessProcessorRules.SetShipViaValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipVia] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetShipViaIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipVia] := Null; +end; + +function TOrdersBusinessProcessorRules.GetFreightValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersFreight]; +end; + +function TOrdersBusinessProcessorRules.GetFreightIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersFreight]); +end; + +function TOrdersBusinessProcessorRules.GetOldFreightValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersFreight]; +end; + +function TOrdersBusinessProcessorRules.GetOldFreightIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersFreight]); +end; + +procedure TOrdersBusinessProcessorRules.SetFreightValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersFreight] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetFreightIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersFreight] := Null; +end; + +function TOrdersBusinessProcessorRules.GetShipNameValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipName]; +end; + +function TOrdersBusinessProcessorRules.GetShipNameIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipName]); +end; + +function TOrdersBusinessProcessorRules.GetOldShipNameValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipName]; +end; + +function TOrdersBusinessProcessorRules.GetOldShipNameIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipName]); +end; + +procedure TOrdersBusinessProcessorRules.SetShipNameValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipName] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetShipNameIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipName] := Null; +end; + +function TOrdersBusinessProcessorRules.GetShipAddressValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipAddress]; +end; + +function TOrdersBusinessProcessorRules.GetShipAddressIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipAddress]); +end; + +function TOrdersBusinessProcessorRules.GetOldShipAddressValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipAddress]; +end; + +function TOrdersBusinessProcessorRules.GetOldShipAddressIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipAddress]); +end; + +procedure TOrdersBusinessProcessorRules.SetShipAddressValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipAddress] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetShipAddressIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipAddress] := Null; +end; + +function TOrdersBusinessProcessorRules.GetShipCityValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipCity]; +end; + +function TOrdersBusinessProcessorRules.GetShipCityIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipCity]); +end; + +function TOrdersBusinessProcessorRules.GetOldShipCityValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipCity]; +end; + +function TOrdersBusinessProcessorRules.GetOldShipCityIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipCity]); +end; + +procedure TOrdersBusinessProcessorRules.SetShipCityValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipCity] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetShipCityIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipCity] := Null; +end; + +function TOrdersBusinessProcessorRules.GetShipRegionValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipRegion]; +end; + +function TOrdersBusinessProcessorRules.GetShipRegionIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipRegion]); +end; + +function TOrdersBusinessProcessorRules.GetOldShipRegionValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipRegion]; +end; + +function TOrdersBusinessProcessorRules.GetOldShipRegionIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipRegion]); +end; + +procedure TOrdersBusinessProcessorRules.SetShipRegionValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipRegion] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetShipRegionIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipRegion] := Null; +end; + +function TOrdersBusinessProcessorRules.GetShipPostalCodeValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipPostalCode]; +end; + +function TOrdersBusinessProcessorRules.GetShipPostalCodeIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipPostalCode]); +end; + +function TOrdersBusinessProcessorRules.GetOldShipPostalCodeValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipPostalCode]; +end; + +function TOrdersBusinessProcessorRules.GetOldShipPostalCodeIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipPostalCode]); +end; + +procedure TOrdersBusinessProcessorRules.SetShipPostalCodeValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipPostalCode] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetShipPostalCodeIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipPostalCode] := Null; +end; + +function TOrdersBusinessProcessorRules.GetShipCountryValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipCountry]; +end; + +function TOrdersBusinessProcessorRules.GetShipCountryIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipCountry]); +end; + +function TOrdersBusinessProcessorRules.GetOldShipCountryValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipCountry]; +end; + +function TOrdersBusinessProcessorRules.GetOldShipCountryIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_OrdersShipCountry]); +end; + +procedure TOrdersBusinessProcessorRules.SetShipCountryValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipCountry] := aValue; +end; + +procedure TOrdersBusinessProcessorRules.SetShipCountryIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_OrdersShipCountry] := Null; +end; + + +initialization + RegisterBusinessProcessorRules(RID_CustomersDelta, TCustomersBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_OrdersDelta, TOrdersBusinessProcessorRules); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTyped.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTyped.Sample.html new file mode 100644 index 0000000..a223583 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTyped.Sample.html @@ -0,0 +1,45 @@ + + + + + + + + + +

+ Strongly Typed Sample +

+ + +

Purpose

+ +

+This example shows usage of business rules. It enforces additional rules that might change over time. This is a good example to show the advantages of a multi-tier architecture: systems can be updated via a server re-deploy without the need to update any client. +

+ +

Examine the Code

+
    +
  • + uBizCustomersServer.pas: +this unit contains the business rules handlers for the server application. +It's important to note however that some business rules are shared among clients and servers. For example, customer validation is done by calling the ValidateCustomers function (uBizCustomersClient.pas). Validation is not a requirement but a highly recommended practice, expecially when your system is accessed by clients that were not developed by you (i.e. Java clients accessing your server through SOAP). +
  • +
  • + uBizCustomersClient.pas: +this unit contains the business rules handlers for the client application.
    + The simplest possible implementation just overrides the methods inherited from TDADataTableRules (i.e. AfterInsert, BeforePost). + More sophisticated implementations may add additional functionality and even make it accessible from outside units (i.e. a form or a data module hosting a TDADataTable).
    + TBizCustomersClientRules shows how to do both by overriding a few event handlers and by adding support for the IAdvancedCustomer interface. +
  • +
+ +

Note

+Adding interfaces like IAdvancedCustomer is not required to implement extra functionality that is only accessed in the context of a business rule class/unit. You can obviously add any method you want to classes like TBizCustomersClientRules and reference them from other methods in order to make them more "object oriented".
+However, when you need to access this functionality from the outside world you need to define an "access contract" via an interface. You can then treat TDADataTables as IAdvancedCustomer (or whatever other interface you decide to create) by simply using the Supports VCL function. + The bCheckBalanceClick method in fClientForm.pas is an example of this.

+

TDADataTable allows you to access the instance of TBizCustomersClientRules via the BusinessRules property. You could also type cast that property to TBizCustomersClientRules but, in general, the interface approach is cleaner and more elegant. + +

+ + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTyped.bdsgroup b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTyped.bdsgroup new file mode 100644 index 0000000..cd41e1a --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTyped.bdsgroup @@ -0,0 +1,20 @@ + + + + + + + + + + + + + StronglyTypedServer.bdsproj + StronglyTypedClient.bdsproj + StronglyTypedServer.exe StronglyTypedClient.exe + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTyped.bpg b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTyped.bpg new file mode 100644 index 0000000..9eb9328 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTyped.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = StronglyTypedServer.exe StronglyTypedClient.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +StronglyTypedServer.exe: StronglyTypedServer.dpr + $(DCC) + +StronglyTypedClient.exe: StronglyTypedClient.dpr + $(DCC) + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTyped.groupproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTyped.groupproj new file mode 100644 index 0000000..ea9e40d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTyped.groupproj @@ -0,0 +1,40 @@ + + + {4dcc5f31-7535-40c3-93a7-2ad992327e4b} + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClient.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClient.bdsproj new file mode 100644 index 0000000..0357a18 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClient.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + StronglyTypedClient.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClient.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClient.dpr new file mode 100644 index 0000000..0f2d5e6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClient.dpr @@ -0,0 +1,20 @@ +program StronglyTypedClient; + +uses + uROComInit, + Forms, + StronglyTypedClientMain in 'StronglyTypedClientMain.pas' {StronglyTypedClientMainForm}, + uBizCustomersClient in 'uBizCustomersClient.pas', + StronglyTypedClientData in 'StronglyTypedClientData.pas' {StronglyTypedClientDataModule: TDAClientDataModule}, + SampleSchemaClient_Intf in 'SampleSchemaClient_Intf.pas', + SampleSchemaServer_Intf in 'SampleSchemaServer_Intf.pas'; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'StronglyTyped Client'; + Application.CreateForm(TStronglyTypedClientDataModule, StronglyTypedClientDataModule); + Application.CreateForm(TStronglyTypedClientMainForm, StronglyTypedClientMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClient.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClient.dproj new file mode 100644 index 0000000..7ac1801 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClient.dproj @@ -0,0 +1,78 @@ + + + {e2da5b2a-47db-4d24-9a88-5aa94ec3dfca} + StronglyTypedClient.dpr + Debug + AnyCPU + DCC32 + StronglyTypedClient.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + StronglyTypedClient.dpr + + + + + + + MainSource + + + + +
StronglyTypedClientDataModule
+
+ +
StronglyTypedClientMainForm
+
+ +
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClient.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClient.res new file mode 100644 index 0000000..da01de5 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClient.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClientData.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClientData.dfm new file mode 100644 index 0000000..a1a69ad --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClientData.dfm @@ -0,0 +1,466 @@ +object StronglyTypedClientDataModule: TStronglyTypedClientDataModule + OldCreateOrder = True + Height = 300 + Width = 224 + object ROChannel: TROWinInetHTTPChannel + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/bin' + ServerLocators = <> + DispatchOptions = [] + Left = 40 + Top = 8 + end + object ROMessage: TROBinMessage + Left = 40 + Top = 52 + end + object RORemoteService: TRORemoteService + Message = ROMessage + Channel = ROChannel + ServiceName = 'StronglyTypedService' + Left = 40 + Top = 96 + end + object dtCustomers: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CompanyName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactName' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactTitle' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Address' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Region' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Country' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Phone' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Fax' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = RemoteDataAdapter + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Customers' + BusinessRulesID = 'ClientRules.Customers' + Left = 112 + Top = 56 + end + object dsCustomers: TDADataSource + DataSet = dtCustomers.Dataset + DataTable = dtCustomers + Left = 128 + Top = 72 + end + object dtOrders: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'OrderID' + DataType = datAutoInc + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EmployeeID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OrderDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RequiredDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShippedDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipVia' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Freight' + DataType = datFloat + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipAddress' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCity' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipRegion' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipPostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCountry' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + Params = < + item + Name = 'CustomerID' + DataType = datString + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Value = '' + ParamType = daptInput + end> + MasterParamsMappings.Strings = ( + 'CustomerID=CustomerID') + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = RemoteDataAdapter + ReadOnly = False + MasterSource = dsCustomers + MasterFields = 'CustomerID' + DetailFields = 'CustomerID' + MasterRequestMappings.Strings = ( + 'CustomerID=CustomerID') + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Orders' + BusinessRulesID = 'ClientRules.Orders' + Left = 112 + Top = 128 + end + object dsOrders: TDADataSource + DataSet = dtOrders.Dataset + DataTable = dtOrders + Left = 128 + Top = 144 + end + object RemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetDataCall.RemoteService = RORemoteService + UpdateDataCall.RemoteService = RORemoteService + GetScriptsCall.RemoteService = RORemoteService + RemoteService = RORemoteService + DataStreamer = Streamer + FailureBehavior = fbBoth + Left = 40 + Top = 200 + end + object Streamer: TDABin2DataStreamer + BufferSize = 262144 + SendReducedDelta = False + Left = 40 + Top = 152 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClientData.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClientData.pas new file mode 100644 index 0000000..65922c7 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClientData.pas @@ -0,0 +1,37 @@ +unit StronglyTypedClientData; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDADataTable, uDABINAdapter, + uRORemoteService, uROClient, uROBINMessage, + uROWinInetHttpChannel, uDACDSDataTable, + uDAScriptingProvider, uDARemoteDataAdapter, uDADataStreamer, + uDABin2DataStreamer, uDAMemDataTable; + +type + TStronglyTypedClientDataModule = class(TDataModule) + ROChannel: TROWinInetHTTPChannel; + ROMessage: TROBinMessage; + RORemoteService: TRORemoteService; + dtCustomers: TDAMemDataTable; + dsCustomers: TDADataSource; + dtOrders: TDAMemDataTable; + dsOrders: TDADataSource; + RemoteDataAdapter: TDARemoteDataAdapter; + Streamer: TDABin2DataStreamer; + private + { Private declarations } + public + { Public declarations } + end; + +var + StronglyTypedClientDataModule: TStronglyTypedClientDataModule; + +implementation + +{$R *.DFM} + +initialization +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClientMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClientMain.dfm new file mode 100644 index 0000000..0e4044e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClientMain.dfm @@ -0,0 +1,139 @@ +object StronglyTypedClientMainForm: TStronglyTypedClientMainForm + Left = 287 + Top = 235 + BorderWidth = 5 + Caption = 'Strongly Typed Client' + ClientHeight = 299 + ClientWidth = 498 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object DBGrid1: TDBGrid + Left = 0 + Top = 21 + Width = 498 + Height = 100 + Align = alBottom + Anchors = [akLeft, akTop, akRight, akBottom] + DataSource = StronglyTypedClientDataModule.dsCustomers + TabOrder = 1 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + OnTitleClick = DBGrid1TitleClick + end + object cbRemoteFetch: TCheckBox + Left = 0 + Top = 0 + Width = 136 + Height = 17 + Caption = 'Remote Fetch Enabled' + Checked = True + State = cbChecked + TabOrder = 0 + end + object DBGrid2: TDBGrid + Left = 0 + Top = 191 + Width = 498 + Height = 108 + Align = alBottom + DataSource = StronglyTypedClientDataModule.dsOrders + TabOrder = 3 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object Panel1: TPanel + Left = 0 + Top = 121 + Width = 498 + Height = 70 + Align = alBottom + BevelOuter = bvNone + TabOrder = 2 + object bCreateTestCustomer: TButton + Left = 1 + Top = 35 + Width = 145 + Height = 25 + Caption = 'Create Test Customer' + TabOrder = 0 + OnClick = bCreateTestCustomerClick + end + object DBNavigator1: TDBNavigator + Left = 0 + Top = 5 + Width = 240 + Height = 25 + DataSource = StronglyTypedClientDataModule.dsCustomers + TabOrder = 1 + end + object BitBtn1: TBitBtn + Left = 240 + Top = 5 + Width = 75 + Height = 25 + Caption = 'Open/Close' + TabOrder = 2 + OnClick = BitBtn1Click + end + object bCheckBalance: TButton + Left = 146 + Top = 35 + Width = 145 + Height = 25 + Caption = 'Check Customer Balance' + TabOrder = 3 + OnClick = bCheckBalanceClick + end + object Button1: TButton + Left = 291 + Top = 35 + Width = 185 + Height = 25 + Caption = 'Create Test Customer with Orders' + TabOrder = 4 + OnClick = Button1Click + end + object bApplyUpdates: TButton + Left = 315 + Top = 5 + Width = 97 + Height = 25 + Caption = 'Apply Updates' + TabOrder = 5 + OnClick = bApplyUpdatesClick + end + end + object ROMessage: TROBinMessage + Left = 148 + Top = 32 + end + object RORemoteService: TRORemoteService + Message = ROMessage + Channel = ROChannel + ServiceName = 'StronglyTypedService' + Left = 176 + Top = 32 + end + object ROChannel: TROWinInetHTTPChannel + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/BIN' + ServerLocators = <> + DispatchOptions = [] + Left = 120 + Top = 32 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClientMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClientMain.pas new file mode 100644 index 0000000..34839a3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedClientMain.pas @@ -0,0 +1,145 @@ +unit StronglyTypedClientMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROIndyHTTPChannel, + uROWinInetHttpChannel, DB, uDADataTable, + uDACDSDataTable, Buttons, ExtCtrls, DBCtrls, Grids, + DBGrids ; + +type + TStronglyTypedClientMainForm = class(TForm) + ROMessage: TROBinMessage; + RORemoteService: TRORemoteService; + ROChannel: TROWinInetHTTPChannel; + DBGrid1: TDBGrid; + cbRemoteFetch: TCheckBox; + DBGrid2: TDBGrid; + Panel1: TPanel; + bCreateTestCustomer: TButton; + DBNavigator1: TDBNavigator; + BitBtn1: TBitBtn; + bCheckBalance: TButton; + Button1: TButton; + bApplyUpdates: TButton; + procedure BitBtn1Click(Sender: TObject); + procedure bCheckBalanceClick(Sender: TObject); + procedure bApplyUpdatesClick(Sender: TObject); + procedure bCreateTestCustomerClick(Sender: TObject); + procedure dtCustomersBeforeOpen(DataTable: TDADataTable); + procedure Button1Click(Sender: TObject); + procedure DBGrid1TitleClick(Column: TColumn); + private + fCustomersCol: string; + fCustomersSort: TDASortDirection; + end; + +var + StronglyTypedClientMainForm: TStronglyTypedClientMainForm; + +implementation + +{ + The unit StronglyTypedLibrary_Intf.pas will be generated by the RemObjects preprocessor the first time you + compile your server application. Make sure to do that before trying to compile the client. + + To invoke your server simply typecast your server to the name of the service interface like this: + + (RORemoteService as IStronglyTypedService).Sum(1,2) +} + +uses StronglyTypedLibrary_Intf, SampleSchemaClient_Intf, uBizCustomersClient, + StronglyTypedClientData; + +{$R *.dfm} + +procedure TStronglyTypedClientMainForm.BitBtn1Click(Sender: TObject); +begin + with StronglyTypedClientDataModule do + dtCustomers.Active := not dtCustomers.Active; +end; + +procedure TStronglyTypedClientMainForm.bCheckBalanceClick(Sender: TObject); +var + balance: currency; +begin + with (StronglyTypedClientDataModule.dtCustomers as IAdvancedCustomer) do begin + balance := CheckBalance; // <-- Custom method! + + ShowMessage(CustomerID + ' has ' + FloatToStr(balance) + '$ in his account'); + end; +end; + +procedure TStronglyTypedClientMainForm.bApplyUpdatesClick(Sender: TObject); +begin + try + StronglyTypedClientDataModule.dtCustomers.ApplyUpdates(TRUE); + except + with StronglyTypedClientDataModule.dtCustomers do begin + Close; + Open; + end; + raise; + end; +end; + +procedure TStronglyTypedClientMainForm.bCreateTestCustomerClick(Sender: TObject); +begin + with (StronglyTypedClientDataModule.dtCustomers as ICustomers) do begin + Insert; + CustomerID := 'ID' + IntToStr(RecordCount); + CompanyName := 'RemObjects Software, Inc.'; + ContactName := 'Alex'; + + Post; + end; +end; + +procedure TStronglyTypedClientMainForm.dtCustomersBeforeOpen(DataTable: TDADataTable); +begin + StronglyTypedClientDataModule.dtCustomers.RemoteFetchEnabled := cbRemoteFetch.Checked; +end; + +procedure TStronglyTypedClientMainForm.Button1Click(Sender: TObject); +var + i: integer; +begin + with (StronglyTypedClientDataModule.dtCustomers as IAdvancedCustomer) do begin + Insert; + CustomerID := 'ID' + IntToStr(RecordCount); + CompanyName := 'RemObjects Software, Inc.'; + ContactName := 'Alex'; + Post; + + for i := 0 to Random(10) + 1 do begin + Orders.Insert; + Orders.EmployeeID := 1; + Orders.OrderDate := Now; + Orders.RequiredDate := Now + Random(4); + Orders.ShipVia := 1; + Orders.Post; + end; + end; +end; + +procedure TStronglyTypedClientMainForm.DBGrid1TitleClick(Column: TColumn); +var + dt: TDADataTable; +begin + dt := TDADataSource(Column.Grid.DataSource).DataTable; + + if not SameText(fCustomersCol, Column.FieldName) then begin + fCustomersCol := Column.FieldName; + fCustomersSort := sdAscending; + end + else begin + fCustomersSort := TDASortDirection(integer(fCustomersSort) xor 1); + end; + + dt.Sort([fCustomersCol], [fCustomersSort]); +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedLibrary.RODL b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedLibrary.RODL new file mode 100644 index 0000000..664a6c4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedLibrary.RODL @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedLibrary_Intf.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedLibrary_Intf.pas new file mode 100644 index 0000000..43c4d38 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedLibrary_Intf.pas @@ -0,0 +1,121 @@ +unit StronglyTypedLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf, + {Used RODLs:} DataAbstract4_Intf; + +const + { Library ID } + LibraryUID = '{1BBB15C7-1CF5-4C37-B9C8-323AFAF87EB6}'; + TargetNamespace = ''; + + { Service Interface ID's } + IStronglyTypedService_IID : TGUID = '{E611C0CF-5A17-469F-B906-98AFF41C1D73}'; + + { Event ID's } + +type + { Forward declarations } + IStronglyTypedService = interface; + + + + + + { Enumerateds } + + { IStronglyTypedService } + IStronglyTypedService = interface(IDataAbstractService) + ['{E611C0CF-5A17-469F-B906-98AFF41C1D73}'] + function CheckBalance(const CustomerID: String): Currency; + function GetOrders(const CustomerID: String): Binary; + end; + + { CoStronglyTypedService } + CoStronglyTypedService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IStronglyTypedService; + end; + + { TStronglyTypedService_Proxy } + TStronglyTypedService_Proxy = class(TDataAbstractService_Proxy, IStronglyTypedService) + protected + function __GetInterfaceName:string; override; + + function CheckBalance(const CustomerID: String): Currency; + function GetOrders(const CustomerID: String): Binary; + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uROSerializer, uRORes; + +{ CoStronglyTypedService } + +class function CoStronglyTypedService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IStronglyTypedService; +begin + result := TStronglyTypedService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TStronglyTypedService_Proxy } + +function TStronglyTypedService_Proxy.__GetInterfaceName:string; +begin + result := 'StronglyTypedService'; +end; + +function TStronglyTypedService_Proxy.CheckBalance(const CustomerID: String): Currency; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'StronglyTypedLibrary', __InterfaceName, 'CheckBalance'); + __Message.Write('CustomerID', TypeInfo(String), CustomerID, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Currency), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TStronglyTypedService_Proxy.GetOrders(const CustomerID: String): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'StronglyTypedLibrary', __InterfaceName, 'GetOrders'); + __Message.Write('CustomerID', TypeInfo(String), CustomerID, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +initialization + RegisterProxyClass(IStronglyTypedService_IID, TStronglyTypedService_Proxy); + + +finalization + UnregisterProxyClass(IStronglyTypedService_IID); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedLibrary_Invk.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedLibrary_Invk.pas new file mode 100644 index 0000000..572b1e7 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedLibrary_Invk.pas @@ -0,0 +1,88 @@ +unit StronglyTypedLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Used RODL Intf's:} DataAbstract4_Intf, + {Used RODL Invk's:} DataAbstract4_Invk, + {Generated:} StronglyTypedLibrary_Intf; + +type + {$M+} + TStronglyTypedService_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + procedure Invoke_CheckBalance(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetOrders(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + {$M-} + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TStronglyTypedService_Invoker } + +procedure TStronglyTypedService_Invoker.Invoke_CheckBalance(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function CheckBalance(const CustomerID: String): Currency; } +var + CustomerID: String; + lResult: Currency; +begin + try + __Message.Read('CustomerID', TypeInfo(String), CustomerID, []); + + lResult := (__Instance as IStronglyTypedService).CheckBalance(CustomerID); + + __Message.InitializeResponseMessage(__Transport, 'StronglyTypedLibrary', 'StronglyTypedService', 'CheckBalanceResponse'); + __Message.Write('Result', TypeInfo(Currency), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TStronglyTypedService_Invoker.Invoke_GetOrders(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetOrders(const CustomerID: String): Binary; } +var + CustomerID: String; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('CustomerID', TypeInfo(String), CustomerID, []); + + lResult := (__Instance as IStronglyTypedService).GetOrders(CustomerID); + + __Message.InitializeResponseMessage(__Transport, 'StronglyTypedLibrary', 'StronglyTypedService', 'GetOrdersResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedServer.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedServer.bdsproj new file mode 100644 index 0000000..220fcb0 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedServer.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + StronglyTypedServer.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedServer.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedServer.dpr new file mode 100644 index 0000000..5e79582 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedServer.dpr @@ -0,0 +1,25 @@ +program StronglyTypedServer; + +{#ROGEN:StronglyTypedLibrary.rodl} // RemObjects: Careful, do not remove! + + + +uses + uROComInit, + Forms, + StronglyTypedServerMain in 'StronglyTypedServerMain.pas' {StronglyTypedServerMainFoem}, + StronglyTypedLibrary_Intf in 'StronglyTypedLibrary_Intf.pas', + StronglyTypedLibrary_Invk in 'StronglyTypedLibrary_Invk.pas', + StronglyTypedService_Impl in 'StronglyTypedService_Impl.pas' {StronglyTypedService: TDARemoteService}, + SampleSchemaClient_Intf in 'SampleSchemaClient_Intf.pas', + SampleSchemaServer_Intf in 'SampleSchemaServer_Intf.pas', + uBizCustomersServer in 'uBizCustomersServer.pas'; + +{$R *.res} +{$R RODLFile.res} + +begin + Application.Initialize; + Application.CreateForm(TStronglyTypedServerMainFoem, StronglyTypedServerMainFoem); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedServer.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedServer.dproj new file mode 100644 index 0000000..1772ed3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedServer.dproj @@ -0,0 +1,80 @@ + + + {93d81d2c-638f-47b8-a46b-efb92ea95bcc} + StronglyTypedServer.dpr + Debug + AnyCPU + DCC32 + StronglyTypedServer.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + StronglyTypedServer.dpr + + + + + + + MainSource + + + + + + +
StronglyTypedServerMainFoem
+
+ +
StronglyTypedService
+
+ +
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedServer.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedServer.res new file mode 100644 index 0000000..7455d6e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedServer.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedServerMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedServerMain.dfm new file mode 100644 index 0000000..0561162 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedServerMain.dfm @@ -0,0 +1,70 @@ +object StronglyTypedServerMainFoem: TStronglyTypedServerMainFoem + Left = 87 + Top = 224 + BorderStyle = bsDialog + Caption = 'StronglyTyped server' + ClientHeight = 64 + ClientWidth = 228 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Form1' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 14 + object DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton + Left = 5 + Top = 5 + Width = 212 + Height = 48 + Cursor = crHandPoint + end + object ROMessage: TROBinMessage + Left = 36 + Top = 8 + end + object ROServer: TROIndyHTTPServer + Dispatchers = < + item + Name = 'ROMessage' + Message = ROMessage + Enabled = True + PathInfo = 'Bin' + end> + Port = 8099 + Left = 8 + Top = 8 + end + object DriverManager: TDADriverManager + DriverDirectory = '%SYSTEM%\' + AutoLoad = False + TraceActive = False + TraceFlags = [] + Left = 64 + Top = 8 + end + object ConnectionManager: TDAConnectionManager + MaxPoolSize = 10 + PoolTimeoutSeconds = 60 + PoolBehaviour = pbWait + WaitIntervalSeconds = 1 + Connections = < + item + Name = 'ADO' + ConnectionString = + 'ADO?AuxDriver=SQLOLEDB.1;Server=localhost;Database=Northwind;Use' + + 'rID=sa;Password=' + Description = 'Borland ADOExpress Connection' + Default = True + Tag = 0 + end> + DriverManager = DriverManager + PoolingEnabled = True + Left = 96 + Top = 8 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedServerMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedServerMain.pas new file mode 100644 index 0000000..2f1c92f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedServerMain.pas @@ -0,0 +1,39 @@ +unit StronglyTypedServerMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, + uROBinMessage, uROIndyHTTPServer, uROIndyTCPServer, + uDAClasses, uDADriverManager, uDAEngine, uDAADODriver, + uDAPoweredByDataAbstractButton; + +type + TStronglyTypedServerMainFoem = class(TForm) + ROMessage: TROBinMessage; + ROServer: TROIndyHTTPServer; + DriverManager: TDADriverManager; + ConnectionManager: TDAConnectionManager; + DAPoweredByDataAbstractButton1: TDAPoweredByDataAbstractButton; + procedure FormCreate(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + StronglyTypedServerMainFoem: TStronglyTypedServerMainFoem; + +implementation + + +{$R *.dfm} + +procedure TStronglyTypedServerMainFoem.FormCreate(Sender: TObject); +begin + ROServer.Active := true; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedService_Impl.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedService_Impl.dfm new file mode 100644 index 0000000..3cf4972 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedService_Impl.dfm @@ -0,0 +1,1092 @@ +object StronglyTypedService: TStronglyTypedService + OldCreateOrder = True + ConnectionName = 'ADO' + ServiceSchema = SampleSchema + ServiceDataStreamer = Streamer + ExportedDataTables = <> + Height = 300 + Width = 300 + object SampleSchema: TDASchema + ConnectionManager = StronglyTypedServerMainFoem.ConnectionManager + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Customers' + SQL = + 'SELECT '#10' CustomerID, CompanyName, ContactName, ContactTitle, ' + + #10' Address, City, Region, PostalCode, Country, Phone, '#10' Fax' + + #10' FROM'#10' Customers' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'CompanyName' + TableField = 'CompanyName' + end + item + DatasetField = 'ContactName' + TableField = 'ContactName' + end + item + DatasetField = 'ContactTitle' + TableField = 'ContactTitle' + end + item + DatasetField = 'Address' + TableField = 'Address' + end + item + DatasetField = 'City' + TableField = 'City' + end + item + DatasetField = 'Region' + TableField = 'Region' + end + item + DatasetField = 'PostalCode' + TableField = 'PostalCode' + end + item + DatasetField = 'Country' + TableField = 'Country' + end + item + DatasetField = 'Phone' + TableField = 'Phone' + end + item + DatasetField = 'Fax' + TableField = 'Fax' + end> + end> + Name = 'Customers' + Fields = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CompanyName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactName' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactTitle' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Address' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Region' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Country' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Phone' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Fax' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CustomerID' + DataType = datString + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Orders' + SQL = + 'SELECT '#10' OrderID, CustomerID, EmployeeID, OrderDate, Required' + + 'Date, '#10' ShippedDate, ShipVia, Freight, ShipName, ShipAddress,' + + ' '#10' ShipCity, ShipRegion, ShipPostalCode, ShipCountry'#10' FROM'#10' ' + + ' Orders'#10' WHERE CustomerID=:CustomerID' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'OrderID' + TableField = 'OrderID' + end + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'EmployeeID' + TableField = 'EmployeeID' + end + item + DatasetField = 'OrderDate' + TableField = 'OrderDate' + end + item + DatasetField = 'RequiredDate' + TableField = 'RequiredDate' + end + item + DatasetField = 'ShippedDate' + TableField = 'ShippedDate' + end + item + DatasetField = 'ShipVia' + TableField = 'ShipVia' + end + item + DatasetField = 'Freight' + TableField = 'Freight' + end + item + DatasetField = 'ShipName' + TableField = 'ShipName' + end + item + DatasetField = 'ShipAddress' + TableField = 'ShipAddress' + end + item + DatasetField = 'ShipCity' + TableField = 'ShipCity' + end + item + DatasetField = 'ShipRegion' + TableField = 'ShipRegion' + end + item + DatasetField = 'ShipPostalCode' + TableField = 'ShipPostalCode' + end + item + DatasetField = 'ShipCountry' + TableField = 'ShipCountry' + end> + end> + Name = 'Orders' + Fields = < + item + Name = 'OrderID' + DataType = datAutoInc + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EmployeeID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OrderDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RequiredDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShippedDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipVia' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Freight' + DataType = datFloat + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipAddress' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCity' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipRegion' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipPostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCountry' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = < + item + Params = < + item + Name = 'CustomerID' + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptUnknown + end + item + Name = 'CompanyName' + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptUnknown + end + item + Name = 'ContactName' + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptUnknown + end + item + Name = 'ContactTitle' + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptUnknown + end + item + Name = 'Address' + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptUnknown + end + item + Name = 'City' + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptUnknown + end + item + Name = 'Region' + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptUnknown + end + item + Name = 'PostalCode' + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptUnknown + end + item + Name = 'Country' + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptUnknown + end + item + Name = 'Phone' + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptUnknown + end + item + Name = 'Fax' + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptUnknown + end + item + Name = 'TestNumeric' + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptUnknown + end> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Customers' + SQL = + 'INSERT'#10' INTO Customers'#10' (CustomerID, CompanyName, ContactNam' + + 'e, ContactTitle, Address, City, Region, PostalCode, Country, Pho' + + 'ne, Fax, TestNumeric)'#10' VALUES'#10' (:CustomerID, :CompanyName, :' + + 'ContactName, :ContactTitle, :Address, :City, :Region, :PostalCod' + + 'e, :Country, :Phone, :Fax, :TestNumeric)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_Customers' + end + item + Params = < + item + Name = 'OLD_CustomerID' + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptUnknown + end> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Customers' + SQL = + 'DELETE '#10' FROM'#10' Customers'#10' WHERE'#10' (CustomerID = :OLD_Cust' + + 'omerID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_Customers' + end + item + Params = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'CompanyName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'ContactName' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'ContactTitle' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'Address' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'City' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'Region' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'PostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'Country' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'Phone' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'Fax' + DataType = datString + Size = 24 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'OLD_CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Customers' + SQL = + 'UPDATE Customers'#10' SET'#10' CustomerID = :CustomerID,'#10' Company' + + 'Name = :CompanyName,'#10' ContactName = :ContactName,'#10' Contact' + + 'Title = :ContactTitle,'#10' Address = :Address,'#10' City = :City,' + + #10' Region = :Region,'#10' PostalCode = :PostalCode,'#10' Country' + + ' = :Country,'#10' Phone = :Phone,'#10' Fax = :Fax'#10' WHERE'#10' (Cus' + + 'tomerID = :OLD_CustomerID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_Customers' + end + item + Params = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'EmployeeID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'OrderDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'RequiredDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'ShippedDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'ShipVia' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'Freight' + DataType = datFloat + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'ShipName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'ShipAddress' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'ShipCity' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'ShipRegion' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'ShipPostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'ShipCountry' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Orders' + SQL = + 'INSERT'#10' INTO Orders'#10' (CustomerID, EmployeeID, OrderDate, Req' + + 'uiredDate, ShippedDate, ShipVia, Freight, ShipName, ShipAddress,' + + ' ShipCity, ShipRegion, ShipPostalCode, ShipCountry)'#10' VALUES'#10' ' + + ' (:CustomerID, :EmployeeID, :OrderDate, :RequiredDate, :ShippedD' + + 'ate, :ShipVia, :Freight, :ShipName, :ShipAddress, :ShipCity, :Sh' + + 'ipRegion, :ShipPostalCode, :ShipCountry)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_Orders' + end + item + Params = < + item + Name = 'OLD_OrderID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Orders' + SQL = 'DELETE '#10' FROM'#10' Orders'#10' WHERE'#10' (OrderID = :OLD_OrderID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_Orders' + end + item + Params = < + item + Name = 'CustomerID' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'EmployeeID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'OrderDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'RequiredDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'ShippedDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'ShipVia' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'Freight' + DataType = datFloat + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'ShipName' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'ShipAddress' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'ShipCity' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'ShipRegion' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'ShipPostalCode' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'ShipCountry' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end + item + Name = 'OLD_OrderID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + ParamType = daptInput + end> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Orders' + SQL = + 'UPDATE Orders'#10' SET '#10' CustomerID = :CustomerID,'#10' EmployeeI' + + 'D = :EmployeeID, '#10' OrderDate = :OrderDate, '#10' RequiredDate ' + + '= :RequiredDate, '#10' ShippedDate = :ShippedDate, '#10' ShipVia =' + + ' :ShipVia, '#10' Freight = :Freight, '#10' ShipName = :ShipName, '#10 + + ' ShipAddress = :ShipAddress, '#10' ShipCity = :ShipCity, '#10' ' + + 'ShipRegion = :ShipRegion, '#10' ShipPostalCode = :ShipPostalCode,' + + ' '#10' ShipCountry = :ShipCountry'#10' WHERE'#10' (OrderID = :OLD_Ord' + + 'erID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_Orders' + end> + RelationShips = <> + UpdateRules = <> + Version = 0 + Left = 128 + Top = 58 + end + object CustomersProcessor: TDABusinessProcessor + Schema = SampleSchema + ReferencedDataset = 'Customers' + ProcessorOptions = [poAutoGenerateInsert, poAutoGenerateUpdate, poAutoGenerateDelete, poPrepareCommands] + UpdateMode = updWhereKeyOnly + BusinessRulesID = 'ServerRules.Customers' + Left = 42 + Top = 8 + end + object OrdersProcessor: TDABusinessProcessor + Schema = SampleSchema + ProcessorOptions = [poAutoGenerateInsert, poAutoGenerateUpdate, poAutoGenerateDelete, poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 42 + Top = 58 + end + object Streamer: TDABin2DataStreamer + BufferSize = 262144 + SendReducedDelta = False + Left = 128 + Top = 8 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedService_Impl.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedService_Impl.pas new file mode 100644 index 0000000..2a7fffa --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/StronglyTypedService_Impl.pas @@ -0,0 +1,84 @@ +unit StronglyTypedService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} StronglyTypedLibrary_Intf, uDAScriptingProvider, + uDABusinessProcessor, uDADataStreamer,uDAClasses,uDAinterfaces,uDADelta, + uDABin2DataStreamer; + + +const + { Dataset names for SampleSchema } + ds_Customers = 'Customers'; + ds_Orders = 'Orders'; + + { Command names for SampleSchema } + cmd_Insert_Customers = 'Insert_Customers'; + cmd_Delete_Customers = 'Delete_Customers'; + cmd_Update_Customers = 'Update_Customers'; + cmd_Insert_Orders = 'Insert_Orders'; + cmd_Delete_Orders = 'Delete_Orders'; + cmd_Update_Orders = 'Update_Orders'; + +type + { TStronglyTypedService } + TStronglyTypedService = class(TDataAbstractService, IStronglyTypedService) + CustomersProcessor: TDABusinessProcessor; + OrdersProcessor: TDABusinessProcessor; + SampleSchema: TDASchema; + Streamer: TDABin2DataStreamer; + private + protected + { IStronglyTypedService methods } + function CheckBalance(const CustomerID: String): Currency; + function GetOrders(const CustomerID: String): Binary; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} StronglyTypedLibrary_Invk,StronglyTypedServerMain; + +procedure Create_StronglyTypedService(out anInstance : IUnknown); +begin + anInstance := TStronglyTypedService.Create(NIL); +end; + +{ TStronglyTypedService } + +function TStronglyTypedService.CheckBalance( + const CustomerID: String): Currency; +begin + if (CustomerID='ALFKI') then result := 100000 else result := 8000; +end; + +function TStronglyTypedService.GetOrders(const CustomerID: String): Binary; +var + orders: IDADataset; +begin + orders := SampleSchema.NewDataset(Connection, ds_Orders, ['CustomerID'], [CustomerID]); + Result:=Binary.Create; + Streamer.Initialize(result, aiWrite); + Streamer.WriteDataset(orders, [woRows], -1); + Streamer.Finalize; +end; + +initialization + TROClassFactory.Create('StronglyTypedService', Create_StronglyTypedService, TStronglyTypedService_Invoker); + +finalization + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/uBizCustomersClient.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/uBizCustomersClient.pas new file mode 100644 index 0000000..b342af1 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/uBizCustomersClient.pas @@ -0,0 +1,209 @@ +unit uBizCustomersClient; + +{ + This unit contains the business rules handlers for the client application. + + The simplest possible implementation just overrides the methods inherited + from TDADataTableRules (i.e. AfterInsert, BeforePost). + + More sophisticated ones instead add additional behaviour and even make it accessible + from outside units (i.e. a form or a data module hosting a TDADataTable). + + TBizCustomersClientRules shows an example of both possibilities by overriding a few event + handlers and adding support for the interface IAdvancedCustomer. + + Adding interfaces like IAdvancedCustomer is not required to implement extra functionality that is + only accessed in the context of a business rule class/unit. You obviously can add any method you want to + classes like TBizCustomersClientRules and reference them from other methods in order to make them + more "object oriented" (see DummTest below). + But when you need to access this functionality from the outside world you need to define an + "access contract" via an interface. You can then treat TDADataTables as IAdvancedCustomer (or + whatever other interface you decide to create) by simply using the VCL function Supports. + See an example of this in the unit fClientForm.pas, method bCheckBalanceClick + + Note: TDADataTable also allows you to access the instance of TBizCustomersClientRules via the + property BusinessRules. You could also type cast that property to TBizCustomersClientRules but + in general, the interface approach is cleaner and more elegant. +} + +interface + +uses + Classes, SysUtils, + uDADataTable, SampleSchemaClient_Intf, + uDAInterfaces, SampleSchemaServer_Intf, + StronglyTypedLibrary_Intf; // Not really required. Just for the IDefaultROIntfServer example below + +type + { IAdvancedCustomer } + IAdvancedCustomer = interface(ICustomers) + ['{BDB203DC-954B-4D78-A446-B1E2232BEF71}'] + function GetOrders : IOrders; + + function CheckBalance : currency; + procedure DisableAccount; + + property Orders : IOrders read GetOrders; + end; + + { TBizCustomersClientRules } + TBizCustomersClientRules = class(TCustomersDataTableRules, IAdvancedCustomer) + private + + protected + // Business events + procedure AfterInsert(Sender : TDADataTable); override; + procedure BeforeDelete(Sender : TDADataTable); override; + procedure BeforePost(Sender : TDADataTable); override; + + // IAdvancedCustomer + function CheckBalance : currency; + procedure DisableAccount; + function GetOrders : IOrders; + end; + + { TBizOrdersClientRules } + TBizOrdersClientRules = class(TOrdersDataTableRules) + protected + procedure OnNewRecord(Sender: TDADataTable); override; + procedure BeforePost(Sender : TDADataTable); override; + end; + + { TBizCustomerIDRules } + TBizCustomerIDRules = class(TDAFieldRules) + private + protected + procedure OnValidate(Sender: TDACustomField); override; + procedure OnChange(Sender: TDACustomField); override; + + end; + + +{ General validation routine shared by client and server } +procedure ValidateCustomer(const aCustomers : ICustomers); + +implementation +uses uDARemoteDataAdapter; +const + def_CompanyName = 'New Company'; + def_ContactName = ''; + +{ General validation routine shared by client and server } +procedure ValidateCustomer(const aCustomers : ICustomers); +var errors : string; +begin + errors := ''; + with aCustomers do begin + if (Trim(CustomerID)='') then errors := errors+'CustomerID cannot be empty'+#13; + if (Trim(CompanyName)='') then errors := errors+'CompanyName is required'+#13; + + if (errors<>'') + then raise EDABizValidationException.Create(errors); + end; +end; + +procedure ValidateOrder(const aOrder : IOrders); +var errors : string; +begin + errors := ''; + + with aOrder do begin + if (Trim(CustomerID)='') then errors := errors+'An order must have a CustomerID'+#13; + + if (EmployeeID<=0) // 0 also covers NULL in the conversion of AsInteger + then errors := errors+'Invalid or unspecified EmployeeID'+#13; + + if (errors<>'') + then raise EDABizValidationException.Create(errors); + end; +end; + +{ TBizCustomersClientRules } +procedure TBizCustomersClientRules.AfterInsert(Sender : TDADataTable); +begin + inherited; + + CustomerID := IntToStr(DataTable.RecordCount); + CompanyName := def_CompanyName; + ContactName := def_ContactName; +end; + +procedure TBizCustomersClientRules.BeforeDelete(Sender : TDADataTable); +begin + inherited; +end; + +procedure TBizCustomersClientRules.BeforePost(Sender : TDADataTable); +begin + inherited; + + ValidateCustomer(Self); +end; + +function TBizCustomersClientRules.CheckBalance: currency; +begin + { + A simple example of how to invoke remote service using the referenced RemoteService. + Nothing prevents you to add an interface which takes a TRORemoteService as parameter or even + an IxxxService interface. Possibilities are endless! + } + result := (TDARemoteDataAdapter(DataTable.RemoteDataAdapter).RemoteService as IStronglyTypedService).CheckBalance(CustomerID) +end; + +procedure TBizCustomersClientRules.DisableAccount; +begin + // This is just for demonstration purposes and completeness. + Beep; +end; + +function TBizCustomersClientRules.GetOrders: IOrders; +begin + { + Provides access to the detail datatable which points to Orders. + Detail access depends on the client module/form. Not all might support or require + the use of this property. An exception is raised at runtime by DetailByName + if the detail table was never actually linked. + } + + result := DetailByName(nme_Orders) as IOrders; +end; + +{ TBizOrdersClientRules } + +procedure TBizOrdersClientRules.BeforePost(Sender: TDADataTable); +begin + inherited; + ValidateOrder(Self); +end; + +procedure TBizOrdersClientRules.OnNewRecord(Sender: TDADataTable); +begin + with (DataTable.GetMasterDataTable as ICustomers) do begin + if (CustomerID='ALFKI') + then raise EDABizValidationException.Create('You cannot add orders to ALFKI'); + end; +end; + +{ TBizCustomerIDRules } + +procedure TBizCustomerIDRules.OnChange(Sender: TDACustomField); +var i : integer; + lCurrVal : string; +begin + lCurrVal := Sender.AsString; + for i := 1 to Length(lCurrVal) do + if not (lCurrVal[i] in ['a'..'z', 'A'..'Z', '0'..'9']) + then raise EDABizValidationException.Create('Invalid character'); +end; + +procedure TBizCustomerIDRules.OnValidate(Sender: TDACustomField); +begin + beep; +end; + +initialization + RegisterDataTableRules('ClientRules.Customers', TBizCustomersClientRules); + RegisterDataTableRules('ClientRules.Orders', TBizOrdersClientRules); + RegisterFieldRules('CustomerID', TBizCustomerIDRules); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/uBizCustomersServer.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/uBizCustomersServer.pas new file mode 100644 index 0000000..5f22864 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Strongly Typed/uBizCustomersServer.pas @@ -0,0 +1,60 @@ +unit uBizCustomersServer; + +{ + This unit contains the business rules handlers for the server application. + + It enforces additional rules that might change over time. This is a good example + to show the advantages of a multi-tier architecture: systems can be updated in a + matter of a server re-deploy without the need to update any client. + + It's important to notice how some business rules are shared among clients and servers. + In particular, Customer validation is done by calling the function ValidateCustomers + (from uBizCustomersClient.pas). This is not a requirement but a highly adviceable + practice, expecially when your system is accessed by clients that were not developed by + you (i.e. Java clients accessing your server through SOAP). + + For additional topics such as how to extend the business functionality adding custom + interfaces, refer to the comments in the unit uBizCustomersClient.pas +} + +interface + +uses + Classes, SysUtils, + uDADataTable,uDADelta, + uBizCustomersClient, uDAInterfaces, + uDABusinessProcessor, SampleSchemaServer_Intf; + +type + { TBizCustomerServerRules } + TBizCustomerServerRules = class(TCustomersBusinessProcessorRules) + protected + // Business events + procedure BeforeProcessChange(Sender : TDABusinessProcessor; aChangeType : TDAChangeType; + aChange : TDADeltaChange; var ProcessChange : boolean); override; + end; + +implementation + +{ TBizCustomerServerRules } + +procedure TBizCustomerServerRules.BeforeProcessChange( + Sender: TDABusinessProcessor; aChangeType: TDAChangeType; + aChange: TDADeltaChange; var ProcessChange: boolean); +begin + inherited; + if (aChangeType<>ctDelete) then ValidateCustomer(Self); + + // Sort of a strong rule but it's just to make a point that server side business + // rules might enforce stronger rules than clients. + + if (aChangeType=ctInsert) and not SameText(ContactName, 'Alex') + then raise Exception.Create('Cannot process an update without Alex as ContactName'); + + ContactTitle := TimeToStr(Now); +end; + +initialization + RegisterBusinessProcessorRules('ServerRules.Customers', TBizCustomerServerRules); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/Styles.css b/official/5.0.30.691/Data Abstract for Delphi/Samples/Styles.css new file mode 100644 index 0000000..c8e0628 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/Styles.css @@ -0,0 +1,103 @@ +body +{ + background-color: #f7f7f7; + margin-top: 15px; + margin-bottom: 15px; + margin-left: 15px; + margin-right: 15px; + padding-top: 10px; + padding-bottom: 10px; + padding-left: 10px; + padding-right: 10px; + font-family: tahoma, verdana, sans-serif; + font-size: 10pt; + width: 700px; + color: #000000; +} +p +{ + padding-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0.5em; +} +ul +{ + padding-top: 0; + padding-bottom: 0; + list-style-type: disc; +} +li +{ + padding-top: 0; + padding-bottom: 0; +} +img +{ + margin: 5px; + border-width: 0; +} +table +{ + background-color: #f7f7f7; + margin: 15px; + padding: 0px; + font-size: 10pt; +} +tr +{ + background-color: #f7f7f7; + margin: 15px; + padding: 0px; + font-size: 10pt; +} +td, th +{ + background-color: #f7f7f7; + margin: 0; + padding: 5px; + font-size: 10pt; +} +td ul +{ + padding-left: 2em; +} + +img:left { margin-left: 0; } +img:right { margin-right: 0; } +p.h1 +{ + margin-top: 1em; + margin-bottom: 0.5px; + padding-bottom:0px; + font-size:13pt; + font-weight:bold; +} +p.h2 +{ + margin-top: 1em; + margin-bottom: 0.5px; + padding-bottom:0px; + font-size:11pt; + font-weight:bold; +} +p.h3 +{ + margin-top: 1em; + margin-bottom: 0.5px; + padding-bottom:0px; + font-size:10pt; + font-weight:bold; +} +pre +{ + margin-top:0px; + margin-bottom:0px; + margin-left:0px; + margin-right:0px; +} +.spaced +{ + letter-spacing:1px; + color:#000060; +} diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/CustomersHTML.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/CustomersHTML.html new file mode 100644 index 0000000..cd41181 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/CustomersHTML.html differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/CustomersToHTML.xsl b/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/CustomersToHTML.xsl new file mode 100644 index 0000000..8107a83 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/CustomersToHTML.xsl @@ -0,0 +1,35 @@ + + + + + + + +

+ + + + + + + +
+

+ Customer: , + , + , +

+

+ Address: , + City: , + , + , +

+

+ Phone: + Fax: +

+

+ + +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/CustomersToSimpleXML.xsl b/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/CustomersToSimpleXML.xsl new file mode 100644 index 0000000..902b170 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/CustomersToSimpleXML.xsl @@ -0,0 +1,23 @@ + + + + + + + + () + , + , + + +
+ + , + + + +
+
+
+
+
diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/DALogo.png b/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/DALogo.png new file mode 100644 index 0000000..54892ce Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/DALogo.png differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/XSLT.Sample.html b/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/XSLT.Sample.html new file mode 100644 index 0000000..23bffb0 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/XSLT.Sample.html @@ -0,0 +1,31 @@ + + + + + + + + + +

+ XSLT Sample +

+ + +

Purpose

+ +

+This example shows how to import dataset data into an .xml file by using the TDAXmlDataStreamer. +Exporting dataset changes to an .xml file is also shown.
+

+ +

Examine the Code

+
    +
  • + See the simple code in XSLTMain.pas. +
  • +
+ + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/XSLT.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/XSLT.bdsproj new file mode 100644 index 0000000..5f2c59c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/XSLT.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + XSLT.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/XSLT.dpr b/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/XSLT.dpr new file mode 100644 index 0000000..672dbce --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/XSLT.dpr @@ -0,0 +1,14 @@ +program XSLT; + +uses + Forms, + XSLTMain in 'XSLTMain.pas' {XSLTMainForm}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'XSLT Sample'; + Application.CreateForm(TXSLTMainForm, XSLTMainForm); + Application.Run; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/XSLT.dproj b/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/XSLT.dproj new file mode 100644 index 0000000..a22c322 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/XSLT.dproj @@ -0,0 +1,72 @@ + + + {eb5321d8-fcb7-4e0d-a61b-0469d08bc4e3} + XSLT.dpr + Debug + AnyCPU + DCC32 + XSLT.exe + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + DEBUG + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + XSLT.dpr + + + + + + + MainSource + + +
XSLTMainForm
+
+
+ +
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/XSLT.res b/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/XSLT.res new file mode 100644 index 0000000..b946fbb Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/XSLT.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/XSLTMain.dfm b/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/XSLTMain.dfm new file mode 100644 index 0000000..d96bc19 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/XSLTMain.dfm @@ -0,0 +1,1115 @@ +object XSLTMainForm: TXSLTMainForm + Left = 327 + Top = 205 + AutoScroll = False + BorderWidth = 5 + Caption = 'XSLT Sample' + ClientHeight = 402 + ClientWidth = 456 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + PixelsPerInch = 96 + TextHeight = 13 + object PageControl: TPageControl + Left = 0 + Top = 34 + Width = 456 + Height = 368 + ActivePage = tsXML + Align = alCustom + Anchors = [akLeft, akTop, akRight, akBottom] + TabIndex = 0 + TabOrder = 4 + object tsXML: TTabSheet + Caption = 'XML' + object WebBrowser: TWebBrowser + Left = 0 + Top = 0 + Width = 448 + Height = 340 + Align = alClient + TabOrder = 0 + ControlData = { + 4C0000004D2E0000242300000000000000000000000000000000000000000000 + 000000004C000000000000000000000001000000E0D057007335CF11AE690800 + 2B2E126208000000000000004C0000000114020000000000C000000000000046 + 8000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000100000000000000000000000000000000000000} + end + end + object tsGrid: TTabSheet + Caption = 'Grid' + ImageIndex = 1 + object Splitter2: TSplitter + Left = 0 + Top = 152 + Width = 448 + Height = 3 + Cursor = crVSplit + Align = alBottom + end + object gCustomers: TDBGrid + Left = 0 + Top = 0 + Width = 448 + Height = 152 + Align = alClient + DataSource = dsCustomers + TabOrder = 0 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object gOrders: TDBGrid + Left = 0 + Top = 155 + Width = 448 + Height = 185 + Align = alBottom + DataSource = dsOrders + Options = [dgTitles, dgIndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit] + TabOrder = 1 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + end + end + object GetDataButton: TButton + Left = 2 + Top = 4 + Width = 75 + Height = 25 + Caption = 'Get Data' + TabOrder = 0 + OnClick = GetDataButtonClick + end + object GenerateDeltaButton: TButton + Left = 80 + Top = 4 + Width = 120 + Height = 25 + Caption = 'Generate Delta XML' + TabOrder = 1 + OnClick = GenerateDeltaButtonClick + end + object XSLTTransformationButton: TButton + Left = 202 + Top = 4 + Width = 131 + Height = 25 + Caption = 'XSLT Transformation' + TabOrder = 2 + OnClick = XSLTTransformationButtonClick + end + object GenerateHTMLButton: TButton + Left = 336 + Top = 4 + Width = 106 + Height = 25 + Caption = 'Generate HTML' + TabOrder = 3 + OnClick = XSLTTransformationButtonClick + end + object DriverManager: TDADriverManager + DriverDirectory = '%SYSTEM%\' + TraceActive = False + TraceFlags = [] + Left = 274 + Top = 176 + end + object ConnectionManager: TDAConnectionManager + Connections = < + item + Name = 'ADO' + ConnectionString = + 'ADO?AuxDriver=SQLOLEDB.1;Server=localhost;Database=Northwind;Use' + + 'rID=sa;Password=;' + Default = True + Tag = 0 + end> + DriverManager = DriverManager + PoolingEnabled = True + Left = 304 + Top = 176 + end + object ADODriver: TDAADODriver + Left = 333 + Top = 176 + end + object Schema: TDASchema + ConnectionManager = ConnectionManager + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Customers' + SQL = + 'SELECT '#10' CustomerID, CompanyName, ContactName, ContactTitle, ' + + #10' Address, City, Region, PostalCode, Country, Phone, '#10' Fax' + + #10' FROM'#10' Customers'#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'CompanyName' + TableField = 'CompanyName' + end + item + DatasetField = 'ContactName' + TableField = 'ContactName' + end + item + DatasetField = 'ContactTitle' + TableField = 'ContactTitle' + end + item + DatasetField = 'Address' + TableField = 'Address' + end + item + DatasetField = 'City' + TableField = 'City' + end + item + DatasetField = 'Region' + TableField = 'Region' + end + item + DatasetField = 'PostalCode' + TableField = 'PostalCode' + end + item + DatasetField = 'Country' + TableField = 'Country' + end + item + DatasetField = 'Phone' + TableField = 'Phone' + end + item + DatasetField = 'Fax' + TableField = 'Fax' + end> + end> + Name = 'Customers' + Fields = < + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CompanyName' + DataType = datWideString + Size = 40 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactName' + DataType = datWideString + Size = 30 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactTitle' + DataType = datWideString + Size = 30 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Address' + DataType = datWideString + Size = 60 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Region' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PostalCode' + DataType = datWideString + Size = 10 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Country' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Phone' + DataType = datWideString + Size = 24 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Fax' + DataType = datWideString + Size = 24 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'customerid' + DataType = datWideString + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Value = '' + ParamType = daptUnknown + end> + Statements = < + item + Connection = 'ADO' + TargetTable = 'Orders' + SQL = + 'SELECT '#10' OrderID, CustomerID, EmployeeID, OrderDate, Required' + + 'Date, '#10' ShippedDate, ShipVia, Freight, ShipName, ShipAddress,' + + ' '#10' ShipCity, ShipRegion, ShipPostalCode, ShipCountry'#10' FROM'#10' ' + + ' Orders'#10' where'#10' customerid = :customerid'#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'OrderID' + TableField = 'OrderID' + end + item + DatasetField = 'CustomerID' + TableField = 'CustomerID' + end + item + DatasetField = 'EmployeeID' + TableField = 'EmployeeID' + end + item + DatasetField = 'OrderDate' + TableField = 'OrderDate' + end + item + DatasetField = 'RequiredDate' + TableField = 'RequiredDate' + end + item + DatasetField = 'ShippedDate' + TableField = 'ShippedDate' + end + item + DatasetField = 'ShipVia' + TableField = 'ShipVia' + end + item + DatasetField = 'Freight' + TableField = 'Freight' + end + item + DatasetField = 'ShipName' + TableField = 'ShipName' + end + item + DatasetField = 'ShipAddress' + TableField = 'ShipAddress' + end + item + DatasetField = 'ShipCity' + TableField = 'ShipCity' + end + item + DatasetField = 'ShipRegion' + TableField = 'ShipRegion' + end + item + DatasetField = 'ShipPostalCode' + TableField = 'ShipPostalCode' + end + item + DatasetField = 'ShipCountry' + TableField = 'ShipCountry' + end> + end> + Name = 'Orders' + Fields = < + item + Name = 'OrderID' + DataType = datAutoInc + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EmployeeID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OrderDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RequiredDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShippedDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipVia' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Freight' + DataType = datFloat + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipName' + DataType = datWideString + Size = 40 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipAddress' + DataType = datWideString + Size = 60 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCity' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipRegion' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipPostalCode' + DataType = datWideString + Size = 10 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCountry' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = <> + RelationShips = <> + UpdateRules = <> + Version = 0 + Left = 362 + Top = 177 + end + object XMLAdapter: TDAXmlDataStreamer + SchemaOptions = [soIncludeEmptyAttributes] + RowOptions = [] + Options = [xaoUseDatasetXSLTs, xaoUseDeltaXSLTs] + Left = 245 + Top = 176 + end + object dtCustomers: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CompanyName' + DataType = datWideString + Size = 40 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactName' + DataType = datWideString + Size = 30 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ContactTitle' + DataType = datWideString + Size = 30 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Address' + DataType = datWideString + Size = 60 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'City' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Region' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PostalCode' + DataType = datWideString + Size = 10 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Country' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Phone' + DataType = datWideString + Size = 24 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Fax' + DataType = datWideString + Size = 24 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + Params = <> + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + ReadOnly = False + LocalSchema = Schema + LocalDataStreamer = DAXmlDataStreamer + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Customers' + IndexDefs = <> + Left = 43 + Top = 115 + end + object dsCustomers: TDADataSource + DataSet = dtCustomers.Dataset + DataTable = dtCustomers + Left = 52 + Top = 128 + end + object dtOrders: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'OrderID' + DataType = datAutoInc + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CustomerID' + DataType = datWideString + Size = 5 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EmployeeID' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OrderDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RequiredDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShippedDate' + DataType = datDateTime + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipVia' + DataType = datInteger + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'Freight' + DataType = datFloat + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipName' + DataType = datWideString + Size = 40 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipAddress' + DataType = datWideString + Size = 60 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCity' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipRegion' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipPostalCode' + DataType = datWideString + Size = 10 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ShipCountry' + DataType = datWideString + Size = 15 + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + Params = < + item + Name = 'customerid' + DataType = datWideString + BlobType = dabtUnknown + DecimalPrecision = 0 + DecimalScale = 0 + Value = '' + ParamType = daptUnknown + end> + MasterParamsMappings.Strings = ( + 'customerid=CustomerID') + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + ReadOnly = False + LocalSchema = Schema + LocalDataStreamer = DAXmlDataStreamer + MasterSource = dsCustomers + MasterFields = 'CustomerID' + DetailFields = 'CustomerID' + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Orders' + IndexDefs = <> + Left = 98 + Top = 115 + end + object dsOrders: TDADataSource + DataSet = dtOrders.Dataset + DataTable = dtOrders + Left = 106 + Top = 128 + end + object DAXmlDataStreamer: TDAXmlDataStreamer + SchemaOptions = [soIncludeEmptyAttributes] + RowOptions = [] + Options = [xaoUseDatasetXSLTs, xaoUseDeltaXSLTs] + Left = 76 + Top = 162 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/XSLTMain.pas b/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/XSLTMain.pas new file mode 100644 index 0000000..ce4c8c4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Samples/XSLT/XSLTMain.pas @@ -0,0 +1,187 @@ +unit XSLTMain; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, uDADataTable, uDAXMLAdapter, uDAClasses, + uDADriverManager, uDAEngine, uDAADODriver, Spin, Buttons, OleCtrls, + SHDocVw, ExtCtrls, ComCtrls, DB, uDAScriptingProvider, uDACDSDataTable, + Grids, DBGrids, uDABINAdapter, DBCtrls, uDADataStreamer, + uDARemoteDataAdapter, uDAInterfaces; + +type + TXSLTMainForm = class(TForm) + DriverManager: TDADriverManager; + ADODriver: TDAADODriver; + PageControl: TPageControl; + tsXML: TTabSheet; + tsGrid: TTabSheet; + WebBrowser: TWebBrowser; + gCustomers: TDBGrid; + ConnectionManager: TDAConnectionManager; + XMLAdapter: TDAXmlDataStreamer; + gOrders: TDBGrid; + Splitter2: TSplitter; + dtCustomers: TDACDSDataTable; + GetDataButton: TButton; + dsCustomers: TDADataSource; + dtOrders: TDACDSDataTable; + dsOrders: TDADataSource; + GenerateDeltaButton: TButton; + XSLTTransformationButton: TButton; + GenerateHTMLButton: TButton; + Schema: TDASchema; + DAXmlDataStreamer: TDAXmlDataStreamer; + procedure GetDataButtonClick(Sender: TObject); + procedure GenerateDeltaButtonClick(Sender: TObject); + procedure XSLTTransformationButtonClick(Sender: TObject); + private + fTempFileName, + fHTMLFileName, + fAppDir: string; + function CreateTestUpdates1: Boolean; + procedure RefreshXMLView(AfileName: string; aDelta: Boolean = False); + public + constructor Create(aOwner: TComponent); override; + property AppDir: string read fAppDir; + property TempFileName: string read fTempFileName; + property HTMLFileName: string read fHTMLFileName; + end; + +var + XSLTMainForm: TXSLTMainForm; + +implementation + +{$R *.dfm} + +uses + uROMSXMLImpl, uROMSXML2_TLB, uROXMLIntf, ShellAPI, uDADelta, StrUtils; + +constructor TXSLTMainForm.Create(aOwner: TComponent); +begin + inherited; + fAppDir := ExtractFilePath(Application.ExeName); + fTempFileName := fAppDir + 'Temp.xml'; + fHTMLFileName := fAppDir + 'CustomersHTML.html'; + PageControl.ActivePageIndex := 0; +end; + +procedure TXSLTMainForm.GetDataButtonClick(Sender: TObject); +begin + dtCustomers.Open; + dtOrders.Open; + if dtCustomers.DeltaInitialized then dtCustomers.CancelUpdates; + if dtOrders.DeltaInitialized then dtOrders.CancelUpdates; + XMLAdapter.WriteXSLT := nil; // In case there's one set + RefreshXMLView(TempFileName); +end; + +procedure TXSLTMainForm.RefreshXMLView(AfileName: string; aDelta: Boolean = False); +var + xmlstream: TMemoryStream; +begin + xmlstream := TMemoryStream.Create; + try + // Writes the data or Delta into the stream by using the XML Adapter + XMLAdapter.Initialize(xmlstream, aiWrite); + if aDelta then begin + XMLAdapter.WriteDelta(dtCustomers); + XMLAdapter.WriteDelta(dtOrders); + end + else begin + XMLAdapter.WriteDataset(dtCustomers, [woSchema, woRows]); + XMLAdapter.WriteDataset(dtOrders, [woSchema, woRows]); + end; + XMLAdapter.Finalize; + + // Saves the XML stream and displays it in the WebBrowser control + xmlstream.SaveToFile(aFileName); + WebBrowser.Navigate(aFileName); + finally + XMLStream.Free; + end; +end; + +procedure TXSLTMainForm.GenerateDeltaButtonClick(Sender: TObject); +begin + // Generates some test updates (ask confirmation first) + dtCustomers.Open; + dtOrders.Open; + if not CreateTestUpdates1 then Exit; + + // Erases the XSLT in case there's one set + XMLAdapter.WriteXSLT := nil; // In case there's one set + RefreshXMLView(TempFileName, True); +end; + +function TXSLTMainForm.CreateTestUpdates1: Boolean; +begin + Result := False; + if (MessageDlg('Do you want to create some updates?', mtConfirmation, [mbYes, mbNo], 0) <> mrYes) then Exit; + + dtCustomers.open; + dtOrders.open; + if dtCustomers.DeltaInitialized then dtCustomers.CancelUpdates; + if dtOrders.DeltaInitialized then dtOrders.CancelUpdates; + dtCustomers.Last; + + try + // Inserts a bunch of new ones + dtCustomers.AddRecord( + ['CustomerID', 'CompanyName', 'ContactName', 'ContactTitle', 'Address', 'City', 'Region', 'PostalCode', 'Country', 'Phone', 'Fax'], + ['JONSM', 'JohnSmith&Co', 'John Smith', 'Owner', '202 North Lake Drive', 'Barrington', 'IL', '60010', 'USA', '847 389 2112', '847 389 2115']); + + dtOrders.AddRecord( + ['OrderID', 'EmployeeID', 'OrderDate', 'RequiredDate', 'ShippedDate', 'ShipVia', 'Freight', 'ShipName', 'ShipAddress', 'ShipCity', 'ShipRegion', 'ShipPostalCode', 'ShipCountry'], + [60000, 5, Date, Date + 30, Date + 15, 1, 73.23, 'QUICK-Stop', 'Taucherstrabe 10', 'Rio de Janeiro', 'RJ', '50739', 'Brazil']); + + dtOrders.AddRecord( + ['OrderID', 'EmployeeID', 'OrderDate', 'RequiredDate', 'ShippedDate', 'ShipVia', 'Freight', 'ShipName', 'ShipAddress', 'ShipCity', 'ShipRegion', 'ShipPostalCode', 'ShipCountry'], + [60001, 2, Date + 15, Date + 30, Date + 25, 1, 22.45, 'LINO-Delicateses', '2743 Bering St.', 'Rio de Janeiro', 'RJ', '50700', 'Brazil']); + + dtCustomers.AddRecord( + ['CustomerID', 'CompanyName', 'ContactName', 'ContactTitle', 'Address', 'City', 'Region', 'PostalCode', 'Country', 'Phone', 'Fax'], + ['JACDO', 'JackDohrn Ltd', 'Jack Dohrn', 'Owner', '32 Manhattan Lane', 'Hoffman Estates', 'IL', '60074', 'USA', '847 221 3221', '842 221 3221']); + + dtOrders.AddRecord( + ['OrderID', 'EmployeeID', 'OrderDate', 'RequiredDate', 'ShippedDate', 'ShipVia', 'Freight', 'ShipName', 'ShipAddress', 'ShipCity', 'ShipRegion', 'ShipPostalCode', 'ShipCountry'], + [60002, 5, Date, Date + 20, Date + 10, 1, 45673.29, 'Save-a-lot Markets', 'Torikatu 38', 'Rio de Janeiro', 'RJ', '50759', 'Brazil']); + + dtOrders.AddRecord( + ['OrderID', 'EmployeeID', 'OrderDate', 'RequiredDate', 'ShippedDate', 'ShipVia', 'Freight', 'ShipName', 'ShipAddress', 'ShipCity', 'ShipRegion', 'ShipPostalCode', 'ShipCountry'], + [60003, 2, Date, Date + 10, Date + 2, 1, 722.23, 'Bottom-Dollar Markets', 'Fauntleroy Circus', 'Rio de Janeiro', 'RJ', '50730', 'Brazil']); + + Result := True; + except + Result := False; + if dtCustomers.Editing then dtCustomers.Cancel; + if dtOrders.Editing then dtOrders.Cancel; + end; +end; + +procedure TXSLTMainForm.XSLTTransformationButtonClick(Sender: TObject); +var + resfilename, xsltname: string; +begin + dtCustomers.open; + dtOrders.open; + + dtCustomers.First; + + // Loads the XSLT document + if (Sender = GenerateHTMLButton) then begin + xsltname := 'CustomersToHTML.xsl'; + resfilename := HTMLFileName; + end + else begin + xsltname := 'CustomersToSimpleXML.xsl'; + resfilename := TempFileName; + end; + XMLAdapter.WriteXSLT.LoadFromFile(xsltname); + RefreshXMLView(resfilename); +end; + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/BaseLoginService_Impl.dfm b/official/5.0.30.691/Data Abstract for Delphi/Source/BaseLoginService_Impl.dfm new file mode 100644 index 0000000..75ebc6a --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/BaseLoginService_Impl.dfm @@ -0,0 +1,5 @@ +object BaseLoginService: TBaseLoginService + OldCreateOrder = True + Height = 300 + Width = 300 +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/BaseLoginService_Impl.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/BaseLoginService_Impl.pas new file mode 100644 index 0000000..d20b514 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/BaseLoginService_Impl.pas @@ -0,0 +1,50 @@ +unit BaseLoginService_Impl; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Core Library } +{ } +{ compiler: Delphi 6 and up, Kylix 3 and up } +{ platform: Win32, Linux } +{ } +{ (c)opyright RemObjects Software. all rights reserved. } +{ } +{ Using this code requires a valid license of the Data Abstract } +{ which can be obtained at http://www.remobjects.com. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, + {Generated:} DataAbstract4_Intf; + +type + { TBaseLoginService } + TBaseLoginService = class (TRORemoteDataModule, IBaseLoginService) + private + fOnLogout: TNotifyEvent; + protected + { IBaseLoginService methods } + procedure Logout; + published + property OnLogout: TNotifyEvent read fOnLogout write fOnLogout; + end; + +implementation + +uses + {Generated:} DataAbstract4_Invk; + +{ BaseLoginService } + +procedure TBaseLoginService.Logout; +begin + if assigned(OnLogout) then + OnLogout(self); +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/BuildDrivers.bpg b/official/5.0.30.691/Data Abstract for Delphi/Source/BuildDrivers.bpg new file mode 100644 index 0000000..95a2c9d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/BuildDrivers.bpg @@ -0,0 +1,75 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = DAADODrv.dad DAAnyDACDrv.dad DABDEDrv.dad DADBISAM3Drv.dad DADBISAM4Drv.dad DADBXDrv.dad DAFIBDrv.dad DAIBDACDrv.dad DAIBODrv.dad DAIBXDrv.dad DAMyDACDrv.dad DAMySQLDACDrv.dad DANexusDBDrv.dad DAODACDrv.dad DAPostgresDACDrv.dad \ + DASDACDrv.dad DASQLiteDrv.dad DAZeosDrv.dad DAElevateDBDrv.dad +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +DAADODrv.dad: Drivers\DAADODrv.dpr + $(DCC) + +DAIBXDrv.dad: Drivers\DAIBXDrv.dpr + $(DCC) + +DADBXDrv.dad: Drivers\DADBXDrv.dpr + $(DCC) + +DAIBODrv.dad: Drivers\DAIBODrv.dpr + $(DCC) + +DAODACDrv.dad: Drivers\DAODACDrv.dpr + $(DCC) + +DASDACDrv.dad: Drivers\DASDACDrv.dpr + $(DCC) + +DADBISAM3Drv.dad: Drivers\DADBISAM3Drv.dpr + $(DCC) + +DADBISAM4Drv.dad: Drivers\DADBISAM4Drv.dpr + $(DCC) + +DAMyDACDrv.dad: Drivers\DAMyDACDrv.dpr + $(DCC) + +DAIBDACDrv.dad: Drivers\DAIBDACDrv.dpr + $(DCC) + +DAFIBDrv.dad: Drivers\DAFIBDrv.dpr + $(DCC) + +DAPostgresDACDrv.dad: Drivers\DAPostgresDACDrv.dpr + $(DCC) + +DAMySQLDACDrv.dad: Drivers\DAMySQLDACDrv.dpr + $(DCC) + +DABDEDrv.dad: Drivers\DABDEDrv.dpr + $(DCC) + +DANexusDBDrv.dad: Drivers\DANexusDBDrv.dpr + $(DCC) + +DAZeosDrv.dad: Drivers\DAZeosDrv.dpr + $(DCC) + +DASQLiteDrv.dad: Drivers\DASQLiteDrv.dpr + $(DCC) + +DAAnyDACDrv.dad: Drivers\DAAnyDACDrv.dpr + $(DCC) + +DAElevateDBDrv.dad: Drivers\DAElevateDBDrv.dpr + $(DCC) + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/BuildPackages_D10.bdsgroup b/official/5.0.30.691/Data Abstract for Delphi/Source/BuildPackages_D10.bdsgroup new file mode 100644 index 0000000..a91801f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/BuildPackages_D10.bdsgroup @@ -0,0 +1,37 @@ + + + + + + + + + + + DataAbstract_Core_D10.bdsproj + ..\..\Pascal Script for Delphi\Source\PascalScript_Core_D10.bdsproj + DataAbstract_Scripting_D10.bdsproj + IDE\DataAbstract_IDE_D10.bdsproj + Drivers\DataAbstract_ADODriver_D10.bdsproj + Drivers\DataAbstract_AnyDACDriver_D10.bdsproj + Drivers\DataAbstract_IBXDriver_D10.bdsproj + Drivers\DataAbstract_DBXDriver_D10.bdsproj + Drivers\DataAbstract_DBISAMDriver_D10.bdsproj + Drivers\DataAbstract_IBODriver_D10.bdsproj + Drivers\DataAbstract_MyDACDriver_D10.bdsproj + Drivers\DataAbstract_ODACDriver_D10.bdsproj + Drivers\DataAbstract_SDACDriver_D10.bdsproj + Drivers\DataAbstract_FIBDriver_D10.bdsproj + Drivers\DataAbstract_PostgresDACDriver_D10.bdsproj + Drivers\DataAbstract_IBDACDriver_D10.bdsproj + Drivers\DataAbstract_BDEDriver_D10.bdsproj + Drivers\DataAbstract_SQLiteDriver_D10.bdsproj + Drivers\DataAbstract_NexusDBDriver_D10.bdsproj + Drivers\DataAbstract_MySQLDACDriver_D10.bdsproj + Drivers\DataAbstract_ZeosDriver_D10.bdsproj + DataAbstract_Core_D10.bpl DataAbstract_Scripting_D10.bpl DataAbstract_IDE_D10.bpl DataAbstract_ADODriver_D10.bpl DataAbstract_AnyDACDriver_D10.bpl DataAbstract_IBXDriver_D10.bpl DataAbstract_DBXDriver_D10.bpl DataAbstract_SDACDriver_D10.bpl DataAbstract_ODACDriver_D10.bpl DataAbstract_IBODriver_D10.bpl DataAbstract_DBISAMDriver_D10.bpl DataAbstract_MyDACDriver_D10.bpl DataAbstract_FIBDriver_D10.bpl DataAbstract_IBDACDriver_D10.bpl DataAbstract_BDEDriver_D10.bpl DataAbstract_ZeosDriver_D10.bpl DataAbstract_MySQLDACDriver_D10.bpl DataAbstract_NexusDBDriver_D10.bpl DataAbstract_SQLiteDriver_D10.bpl DataAbstract_PostgresDACDriver_D10.bpl + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/BuildPackages_D11.groupproj b/official/5.0.30.691/Data Abstract for Delphi/Source/BuildPackages_D11.groupproj new file mode 100644 index 0000000..bc2abf8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/BuildPackages_D11.groupproj @@ -0,0 +1,248 @@ + + + {788d1e93-6494-4009-bad7-5d620a616e08} + + + + + + + + DataAbstract_Core_D11.dproj + + + DataAbstract_Core_D11.dproj + + + + + + + + + + + + + + + + + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/BuildPackages_D6.bpg b/official/5.0.30.691/Data Abstract for Delphi/Source/BuildPackages_D6.bpg new file mode 100644 index 0000000..8d0eccd --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/BuildPackages_D6.bpg @@ -0,0 +1,92 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = DataAbstract_Core_D6.bpl DataAbstract_Scripting_D6.bpl \ + DataAbstract_IDE_D6.bpl DataAbstract_ADODriver_D6.bpl \ + DataAbstract_AnyDACDriver_D6.bpl \ + DataAbstract_BDEDriver_D6.bpl DataAbstract_DBISAMDriver_D6.bpl \ + DataAbstract_DBXDriver_D6.bpl DataAbstract_ElevateDBDriver_D6.bpl \ + DataAbstract_FIBDriver_D6.bpl DataAbstract_IBDACDriver_D6.bpl \ + DataAbstract_IBODriver_D6.bpl DataAbstract_IBXDriver_D6.bpl \ + DataAbstract_MyDACDriver_D6.bpl DataAbstract_MySQLDACDriver_D6.bpl \ + DataAbstract_NexusDBDriver_D6.bpl DataAbstract_ODACDriver_D6.bpl \ + DataAbstract_PostgresDACDriver_D6.bpl DataAbstract_SDACDriver_D6.bpl \ + DataAbstract_SQLiteDriver_D6.bpl DataAbstract_ZeosDriver_D6.bpl +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +DataAbstract_Core_D6.bpl: DataAbstract_Core_D6.dpk + $(DCC) + +DataAbstract_IDE_D6.bpl: IDE\DataAbstract_IDE_D6.dpk + $(DCC) + +DataAbstract_ADODriver_D6.bpl: Drivers\DataAbstract_ADODriver_D6.dpk + $(DCC) + +DataAbstract_IBXDriver_D6.bpl: Drivers\DataAbstract_IBXDriver_D6.dpk + $(DCC) + +DataAbstract_SDACDriver_D6.bpl: Drivers\DataAbstract_SDACDriver_D6.dpk + $(DCC) + +DataAbstract_DBXDriver_D6.bpl: Drivers\DataAbstract_DBXDriver_D6.dpk + $(DCC) + +DataAbstract_ODACDriver_D6.bpl: Drivers\DataAbstract_ODACDriver_D6.dpk + $(DCC) + +DataAbstract_IBODriver_D6.bpl: Drivers\DataAbstract_IBODriver_D6.dpk + $(DCC) + +DataAbstract_DBISAMDriver_D6.bpl: Drivers\DataAbstract_DBISAMDriver_D6.dpk + $(DCC) + +DataAbstract_MyDACDriver_D6.bpl: Drivers\DataAbstract_MyDACDriver_D6.dpk + $(DCC) + +DataAbstract_Scripting_D6.bpl: DataAbstract_Scripting_D6.dpk + $(DCC) + +PascalScript_Core_D6.bpl: ..\..\Pascal Script for Delphi\Source\PascalScript_Core_D6.dpk + $(DCC) + +DataAbstract_FIBDriver_D6.bpl: Drivers\DataAbstract_FIBDriver_D6.dpk + $(DCC) + +DataAbstract_IBDACDriver_D6.bpl: Drivers\DataAbstract_IBDACDriver_D6.dpk + $(DCC) + +DataAbstract_BDEDriver_D6.bpl: Drivers\DataAbstract_BDEDriver_D6.dpk + $(DCC) + +DataAbstract_ZeosDriver_D6.bpl: Drivers\DataAbstract_ZeosDriver_D6.dpk + $(DCC) + +DataAbstract_MySQLDACDriver_D6.bpl: Drivers\DataAbstract_MySQLDACDriver_D6.dpk + $(DCC) + +DataAbstract_NexusDBDriver_D6.bpl: Drivers\DataAbstract_NexusDBDriver_D6.dpk + $(DCC) + +DataAbstract_SQLiteDriver_D6.bpl: Drivers\DataAbstract_SQLiteDriver_D6.dpk + $(DCC) + +DataAbstract_PostgresDACDriver_D6.bpl: Drivers\DataAbstract_PostgresDACDriver_D6.dpk + $(DCC) + +DataAbstract_ElevateDBDriver_D6.bpl: Drivers\DataAbstract_ElevateDBDriver_D6.dpk + $(DCC) + +DataAbstract_AnyDACDriver_D6.bpl: Drivers\DataAbstract_AnyDACDriver_D6.dpk + $(DCC) + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/BuildPackages_D7.bpg b/official/5.0.30.691/Data Abstract for Delphi/Source/BuildPackages_D7.bpg new file mode 100644 index 0000000..fc94be1 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/BuildPackages_D7.bpg @@ -0,0 +1,85 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = DataAbstract_Core_D7.bpl DataAbstract_Scripting_D7.bpl DataAbstract_IDE_D7.bpl DataAbstract_ADODriver_D7.bpl DataAbstract_AnyDACDriver_D7.bpl DataAbstract_BDEDriver_D7.bpl DataAbstract_DBISAMDriver_D7.bpl DataAbstract_DBXDriver_D7.bpl \ + DataAbstract_ElevateDBDriver_D7.bpl DataAbstract_FIBDriver_D7.bpl DataAbstract_IBDACDriver_D7.bpl DataAbstract_IBODriver_D7.bpl DataAbstract_IBXDriver_D7.bpl DataAbstract_MyDACDriver_D7.bpl DataAbstract_MySQLDACDriver_D7.bpl \ + DataAbstract_NexusDBDriver_D7.bpl DataAbstract_ODACDriver_D7.bpl DataAbstract_PostgresDACDriver_D7.bpl DataAbstract_SDACDriver_D7.bpl DataAbstract_SQLiteDriver_D7.bpl DataAbstract_ZeosDriver_D7.bpl +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +DataAbstract_Core_D7.bpl: DataAbstract_Core_D7.dpk + $(DCC) + +DataAbstract_IDE_D7.bpl: IDE\DataAbstract_IDE_D7.dpk + $(DCC) + +DataAbstract_ADODriver_D7.bpl: Drivers\DataAbstract_ADODriver_D7.dpk + $(DCC) + +DataAbstract_IBXDriver_D7.bpl: Drivers\DataAbstract_IBXDriver_D7.dpk + $(DCC) + +DataAbstract_SDACDriver_D7.bpl: Drivers\DataAbstract_SDACDriver_D7.dpk + $(DCC) + +DataAbstract_DBXDriver_D7.bpl: Drivers\DataAbstract_DBXDriver_D7.dpk + $(DCC) + +DataAbstract_ODACDriver_D7.bpl: Drivers\DataAbstract_ODACDriver_D7.dpk + $(DCC) + +DataAbstract_IBODriver_D7.bpl: Drivers\DataAbstract_IBODriver_D7.dpk + $(DCC) + +DataAbstract_DBISAMDriver_D7.bpl: Drivers\DataAbstract_DBISAMDriver_D7.dpk + $(DCC) + +DataAbstract_MyDACDriver_D7.bpl: Drivers\DataAbstract_MyDACDriver_D7.dpk + $(DCC) + +DataAbstract_Scripting_D7.bpl: DataAbstract_Scripting_D7.dpk + $(DCC) + +PascalScript_Core_D7.bpl: ..\..\Pascal Script for Delphi\Source\PascalScript_Core_D7.dpk + $(DCC) + +DataAbstract_FIBDriver_D7.bpl: Drivers\DataAbstract_FIBDriver_D7.dpk + $(DCC) + +DataAbstract_IBDACDriver_D7.bpl: Drivers\DataAbstract_IBDACDriver_D7.dpk + $(DCC) + +DataAbstract_BDEDriver_D7.bpl: Drivers\DataAbstract_BDEDriver_D7.dpk + $(DCC) + +DataAbstract_ZeosDriver_D7.bpl: Drivers\DataAbstract_ZeosDriver_D7.dpk + $(DCC) + +DataAbstract_MySQLDACDriver_D7.bpl: Drivers\DataAbstract_MySQLDACDriver_D7.dpk + $(DCC) + +DataAbstract_NexusDBDriver_D7.bpl: Drivers\DataAbstract_NexusDBDriver_D7.dpk + $(DCC) + +DataAbstract_SQLiteDriver_D7.bpl: Drivers\DataAbstract_SQLiteDriver_D7.dpk + $(DCC) + +DataAbstract_PostgresDACDriver_D7.bpl: Drivers\DataAbstract_PostgresDACDriver_D7.dpk + $(DCC) + +DataAbstract_ElevateDBDriver_D7.bpl: Drivers\DataAbstract_ElevateDBDriver_D7.dpk + $(DCC) + +DataAbstract_AnyDACDriver_D7.bpl: Drivers\DataAbstract_AnyDACDriver_D7.dpk + $(DCC) + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/BuildPackages_K3.bpg b/official/5.0.30.691/Data Abstract for Delphi/Source/BuildPackages_K3.bpg new file mode 100644 index 0000000..6649fe0 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/BuildPackages_K3.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = DataAbstract_Core_K3.bpl bplDataAbstract_IDE_K3.so +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +DataAbstract_Core_K3.bpl: DataAbstract_Core_K3.dpk + $(DCC) + +bplDataAbstract_IDE_K3.so: IDE/DataAbstract_IDE_K3.dpk + $(DCC) + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DALoginService_Impl.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/DALoginService_Impl.pas new file mode 100644 index 0000000..53fe76e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DALoginService_Impl.pas @@ -0,0 +1,199 @@ +unit DALoginService_Impl {$IFNDEF FPC}deprecated{$ENDIF}; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROSessions, + {Ancestor Implementation:} DARemoteService_Impl, + {Generated:} DataAbstract3_Intf; + +const + def_UserID = 'UserID'; + def_Password = 'UserPassword'; + def_SessionID = 'SessionID'; + +type + TDALoginService = class; + + TDAOnLoginEvent = procedure(Sender : TDALoginService; var aUserID, aPassword : AnsiString) of object; + TDAOnLoginSuccessEvent = procedure(Sender : TDALoginService; aLoginInfo : TDALoginInfo) of object; + TDAOnLoginFailureEvent = procedure(Sender : TDALoginService; const aUserID, aPassword : AnsiString) of object; + TDAOnLogoutEvent = procedure(Sender : TDALoginService; const aSessionID : TGUID) of object; + + { TDALoginService } + TDALoginService = class(TDARemoteService, IDALoginService) + private + fLoginDataset: string; + fLogoutCommand: string; + fOnLogin: TDAOnLoginEvent; + fOnLoginFailure: TDAOnLoginFailureEvent; + fOnLoginSuccess: TDAOnLoginSuccessEvent; + fOnLogout: TDAOnLogoutEvent; + fParamNameUserID: string; + fParamNamePassword: string; + fParamNameSessionID: string; + function GetParamNamePasswordStored: Boolean; + function GetParamNameUserIDStored: Boolean; + function GetParamNameSessionIDStored: Boolean; + procedure SetParamNameSessionID(const Value: string); + + protected + procedure SetLoginDataset(const Value: string); virtual; + procedure SetLogoutCommand(const Value: string); virtual; + + procedure SetParamNamePassword(const Value: string); virtual; + procedure SetParamNameUserID(const Value: string); virtual; + + function DoLogin(const UserID, Password: AnsiString; out LoginInfo: TDALoginInfo): boolean; virtual; + procedure DoLogout(const SessionID : TGUID); virtual; + + { IDALoginService methods } + function Login(const UserID: AnsiString; const Password: AnsiString; out LoginInfo: TDALoginInfo): Boolean; + procedure Logout; + + public + constructor Create(aOwner : TComponent); override; + + published + property LoginDataset : string read fLoginDataset write SetLoginDataset; + property LogoutCommand : string read fLogoutCommand write SetLogoutCommand; + + property ParamNameUserID : string read fParamNameUserID write SetParamNameUserID stored GetParamNameUserIDStored; + property ParamNamePassword : string read fParamNamePassword write SetParamNamePassword stored GetParamNamePasswordStored; + property ParamNameSessionID : string read fParamNameSessionID write SetParamNameSessionID stored GetParamNameSessionIDStored; + + property OnLogin: TDAOnLoginEvent read fOnLogin write fOnLogin; + property OnLoginSuccess: TDAOnLoginSuccessEvent read fOnLoginSuccess write fOnLoginSuccess; + property OnLoginFailure: TDAOnLoginFailureEvent read fOnLoginFailure write fOnLoginFailure; + property OnLogout: TDAOnLogoutEvent read fOnLogout write fOnLogout; + end deprecated; + +implementation + +uses + {Generated:} uDAInterfaces; + +{ DALoginService } +constructor TDALoginService.Create(aOwner: TComponent); +begin + fParamNameUserID := def_UserID; + fParamNamePassword := def_Password; + fParamNameSessionID := def_SessionID; + + inherited; +end; + +procedure TDALoginService.SetLoginDataset(const Value: string); +begin + fLoginDataset := Value; +end; + +procedure TDALoginService.SetLogoutCommand(const Value: string); +begin + fLogoutCommand := Value; +end; + +function TDALoginService.Login(const UserID: AnsiString; const Password: AnsiString; out LoginInfo: TDALoginInfo): Boolean; +var tempuserid, temppassword : AnsiString; +begin + tempuserid := UserID; + temppassword := Password; + + CheckObjects(Connection, ServiceSchema, NIL, TRUE, TRUE, FALSE); + + if Assigned(fOnLogin) then fOnLogin(Self, tempuserid, temppassword); + + result := DoLogin(tempuserid, temppassword, LoginInfo); + + if not result then begin + DestroySession; + if Assigned(fOnLoginFailure) then fOnLoginFailure(Self, tempuserid, temppassword); + end + else begin + if Assigned(fOnLoginSuccess) then fOnLoginSuccess(Self, LoginInfo); + end; +end; + +procedure TDALoginService.Logout; +begin + if (LogoutCommand<>'') + then CheckObjects(Connection, ServiceSchema, NIL, TRUE, TRUE, FALSE); + + if Assigned(fOnLogout) + then fOnLogout(Self, Session.SessionID); + + DoLogout(Session.SessionID); + + DestroySession; +end; + +function TDALoginService.DoLogin(const UserID: AnsiString; const Password: AnsiString; out LoginInfo: TDALoginInfo): boolean; +var ds : IDADataset; + i : integer; +begin + result := FALSE; + LoginInfo := NIL; + + ds := ServiceSchema.NewDataset(Connection, LoginDataset, [ParamNameUserID, ParamNamePassword], [UserID, Password]); + if ds.EOF then Exit; + + LoginInfo := TDALoginInfo.Create; + LoginInfo.UserID := UserID; + LoginInfo.SessionID := {$IFDEF UNICODE}AnsiToUtf8{$ENDIF}(GUIDToString(Session.SessionID)); + + for i := 0 to (ds.FieldCount-1) do begin + Session[ds.Fields[i].Name] := ds.Fields[i].Value; + LoginInfo.Attributes.Add({$IFDEF UNICODE}AnsiToUtf8{$ENDIF}(ds.Fields[i].Name+'='+ds.Fields[i].AsString)); + end; + + result := TRUE; +end; + +procedure TDALoginService.DoLogout(const SessionID: TGUID); +var cmd : IDASQLCommand; +begin + if (LogoutCommand<>'') + then cmd := ServiceSchema.NewCommand(Connection, LogoutCommand, [ParamNameSessionID], [GUIDToString(SessionID)]); +end; + +procedure TDALoginService.SetParamNamePassword(const Value: string); +begin + fParamNamePassword := Value; +end; + +procedure TDALoginService.SetParamNameUserID(const Value: string); +begin + fParamNameUserID := Value; +end; + +function TDALoginService.GetParamNamePasswordStored: Boolean; +begin + result := fParamNamePassword<>def_Password +end; + +function TDALoginService.GetParamNameUserIDStored: Boolean; +begin + result := fParamNameUserID<>def_UserID +end; + +function TDALoginService.GetParamNameSessionIDStored: Boolean; +begin + result := fParamNameSessionID<>def_SessionID +end; + +procedure TDALoginService.SetParamNameSessionID(const Value: string); +begin + fParamNameSessionID := Value; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DARemoteService_Impl.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/DARemoteService_Impl.pas new file mode 100644 index 0000000..5c757fa --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DARemoteService_Impl.pas @@ -0,0 +1,1095 @@ +unit DARemoteService_Impl {$IFNDEF FPC}deprecated{$ENDIF}; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Core Library } +{ } +{ compiler: Delphi 6 and up, Kylix 3 and up } +{ platform: Win32, Linux } +{ } +{ (c)opyright RemObjects Software. all rights reserved. } +{ } +{ Using this code requires a valid license of the Data Abstract } +{ which can be obtained at http://www.remobjects.com. } +{----------------------------------------------------------------------------} + +{----------------------------------------------------------------------------} +{ LEGACY NOTE: } +{ As of v4.0, future development of this unit has been discontinued, and } +{ new featureswill be impleentd in DataAbstractService_Impl.pas, instead. } +{ } +{ When applying fixes to this unit, please propagate them to the new unit } +{ as well, where needed. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +uses + Classes, SysUtils, + {$IFDEF DELPHI5}Forms, {$ENDIF} + uRORemoteDataModule, uROClientIntf, uROSessions, uROClasses, uROTypes, + uDAClasses, uDAInterfaces, uDADataTable, uDABusinessProcessor, uDACache, uDADelta, uDADataStreamer, + uDADataTableReferenceCollection, DataAbstract3_Intf; + +type + { Types } + TDARemoteService = class; + + { Events } + TDAAcquireConnectionEvent = procedure(Sender: TDARemoteService; var ConnectionName: string) of object; + TDAConnectionAcquiredEvent = procedure(Sender: TDARemoteService; const ConnectionName: string; const AcquiredConnection: IDAConnection) of object; + TDAAcquireConnectionFailureEvent = procedure(Sender: TDARemoteService; const ConnectionName: string; Error: Exception) of object; + TDAGetDatasetSchemaEvent = procedure(const Dataset: IDADataset) of object; + TDAGetDatasetDataEvent = procedure(const Dataset: IDADataset; const IncludeSchema: Boolean; const MaxRecords: Integer) of object; + TDAOnBusinessProcessorAutoCreated = procedure(Sender : TRORemoteDataModule; BusinessProcessor : TDABusinessProcessor) of object; + TDABeforeExecuteCommandEvent = procedure(Sender : TDARemoteService; const aCommand : IDASQLCommand) of object; + TDAAfterExecuteCommandEvent = procedure(Sender : TDARemoteService; const aCommand : IDASQLCommand; RowsAffacted : integer) of object; + TDAConnectionReleasedEvent = procedure(Sender: TDARemoteService; const ConnectionName: string) of object; + TDAGetSchemaAsXMLEvent = procedure(Sender: TDARemoteService; var SchemaXML : AnsiString) of object; + + TDAProcessDeltasEvent = procedure(Sender : TDARemoteService; DeltaStructs : TDADeltaStructList) of object; + TDAProcessDeltasErrorEvent = procedure(Sender : TDARemoteService; DeltaStructs : TDADeltaStructList; Error : Exception; var DoRaise : boolean) of object; + + TDAOnGetCachedDataset = procedure(Sender : TDARemoteService; const aDatasetName : string; aDataStream : TStream) of object; + + TDAGetDatasetDataValidationEvent = procedure(Sender: TDARemoteService; + const aConnection: IDAConnection; + const aDatasetName: string; + const aParamNames: array of string; + const aParamValues : array of variant; + aSchema: TDASchema; + var Allowed : boolean) of object; + + TDAUpdateDataTransactionEvent = procedure(Sender: TDARemoteService; var UseDefaultTransactionLogic: Boolean) of object; + + TDAAfterProcessTransactionAction = (pptaNone, pptaRollback, pptaCommit); + + { TDARemoteService } + TDARemoteServiceOption = (rsoProcessDeltasWithoutUpdateRules); + TDARemoteServiceOptions = set of TDARemoteServiceOption; + + TDARemoteService = class(TRORemoteDataModule, IDARemoteService) + private + fServiceSchema: TDASchema; + + fStreamedAcquireConnection, + fAcquireConnection: boolean; + fConnectionName: string; + fOnBeforeAcquireConnection: TDAAcquireConnectionEvent; + fOnAfterAcquireConnection: TDAConnectionAcquiredEvent; + fOnAfterReleaseConnection: TDAConnectionReleasedEvent; + fOnBeforeReleaseConnection: TDAConnectionAcquiredEvent; + fConnection: IDAConnection; + fServiceAdapter: TDADataStreamer; + fOnAcquireConnectionFailure: TDAAcquireConnectionFailureEvent; + + fOnAfterGetDatasetData: TDAGetDatasetDataEvent; + fOnBeforeGetDatasetData: TDAGetDatasetDataEvent; + fOnAfterGetDatasetSchema: TDAGetDatasetSchemaEvent; + fOnBeforeGetDatasetSchema: TDAGetDatasetSchemaEvent; + fAutoCreateBusinessProcessors: boolean; + fAllowExecuteSQLCommand: boolean; + fAllowWhereSQL: boolean; + fOnBusinessProcessorAutoCreated: TDAOnBusinessProcessorAutoCreated; + fOnBeforeExecuteCommand: TDABeforeExecuteCommandEvent; + fOnAfterExecuteCommand: TDAAfterExecuteCommandEvent; + fOnGetSchemaAsXML: TDAGetSchemaAsXMLEvent; + + fGetDatasetDataValidation: TDAGetDatasetDataValidationEvent; + + fAfterProcessTransactionAction: TDAAfterProcessTransactionAction; + + fOnUpdateDataBeginTransaction : TDAUpdateDataTransactionEvent; + fOnUpdateDataCommitTransaction : TDAUpdateDataTransactionEvent; + fOnUpdateDataRollBackTransaction : TDAUpdateDataTransactionEvent; + + fOnBeforeProcessDeltas : TDAProcessDeltasEvent; + fOnAfterProcessDeltas: TDAProcessDeltasEvent; + fOnProcessDeltasError: TDAProcessDeltasErrorEvent; + fExportedDataTables: TDADataTableReferenceCollection; + fCache: TDACache; + fCacheElements: TDACacheElementCollection; + fOnGetCachedDataset: TDAOnGetCachedDataset; + fOptions: TDARemoteServiceOptions; + + function TriggerTransactionEvent(aEvent: TDAUpdateDataTransactionEvent): Boolean; + procedure SetServiceSchema(const Value: TDASchema); + procedure SetAcquireConnection(const Value: boolean); + procedure SetConnectionName(const Value: string); + procedure SetServiceAdapter(const Value: TDADataAdapter); + function UnpackDeltas(const DeltaStream: Binary; DeltaStructList : TDADeltaStructList): integer; + procedure SetExportedDataTables(const Value: TDADataTableReferenceCollection); + procedure MergeDatatablesToSchema(aList : TList); + procedure SetCache(const Value: TDACache); + procedure SetCacheElements(const Value: TDACacheElementCollection); + procedure SetConnection(const aValue: IDAConnection); + + protected + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure Loaded; override; + + procedure CheckObjects(const aConnection: IDAConnection; + aSchema: TDASchema; anAdapter: TDADataAdapter; + CheckConnection : boolean = TRUE; + CheckSchema : boolean = TRUE; + CheckAdapter : boolean = TRUE); + + { Internal } + procedure DoOnActivate(aClientID: TGUID; const aMessage: IROMessage); override; + procedure DoOnDeactivate(aClientID: TGUID); override; + + function DoGetDatasetData(const Stream: TStream; + const aConnection: IDAConnection; + const aDatasetName: ansistring; + const aParamNames: array of string; + const aParamValues : array of variant; + const UserFilter : ansistring; + aSchema: TDASchema; + anAdapter: TDADataAdapter; + someOptions: TDAWriteOptions; + MaxRecords: integer): integer; virtual; + + function CreateParamString(const ParamNames: array of string; const ParamValues: array of Variant): string; + + function GetDatasetData(const DatasetName: ansistring; + const ParamNames: array of string; + const ParamValues: array of Variant; + const IncludeSchema: Boolean = FALSE; + const MaxRecords: Integer = -1): Binary; overload; + function GetDatasetData(const DatasetName: Ansistring; + const IncludeSchema: Boolean = FALSE; + const MaxRecords: Integer = -1): Binary; overload; + + { IDARemoteService } + function GetDatasetSchema(const aDatasetName: AnsiString): Binary; virtual; + function GetDatasetData(const DatasetName: AnsiString; + const Params: AnsiString; + const IncludeSchema: Boolean; + const MaxRecords: Integer): Binary; overload; virtual; + function UpdateData(const Delta: Binary): Binary; virtual; + function ExecuteSQLCommand(const SQL: AnsiString): Integer; virtual; + function GetSchemaAsXML: AnsiString; virtual; + function GetDatasetDataEx(const DatasetName: AnsiString; + const Params: TDADatasetParamArray; + const UserFilter: AnsiString; + const IncludeSchema: Boolean; + const MaxRecords: Integer): Binary; + function GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray): TROBinaryMemoryStream; + function GetDatasetScripts(const DatasetNames: AnsiString): AnsiString; + function ExecuteSQLCommandEx(const CommandName: AnsiString; const Params: TDADatasetParamArray): Integer; + + public + constructor Create(aOwner : TComponent); override; + destructor Destroy; override; + + property Connection: IDAConnection read fConnection write SetConnection; + + published + property AcquireConnection: boolean read fAcquireConnection write SetAcquireConnection default false; + property ConnectionName: string read fConnectionName write SetConnectionName; + + property ServiceSchema: TDASchema read fServiceSchema write SetServiceSchema; + property ServiceAdapter: TDADataAdapter read fServiceAdapter write SetServiceAdapter; + + property AutoCreateBusinessProcessors : boolean read fAutoCreateBusinessProcessors write fAutoCreateBusinessProcessors default true; + property AllowExecuteSQLCommand: boolean read fAllowExecuteSQLCommand write fAllowExecuteSQLCommand default false; + property AllowWhereSQL: boolean read fAllowWhereSQL write fAllowWhereSQL default true; + + property OnAfterProcessTransactionAction: TDAAfterProcessTransactionAction read fAfterProcessTransactionAction write fAfterProcessTransactionAction default pptaCommit; + + property OnBeforeAcquireConnection: TDAAcquireConnectionEvent read fOnBeforeAcquireConnection write fOnBeforeAcquireConnection; + property OnAfterAcquireConnection: TDAConnectionAcquiredEvent read fOnAfterAcquireConnection write fOnAfterAcquireConnection; + property OnBeforeReleaseConnection: TDAConnectionAcquiredEvent read fOnBeforeReleaseConnection write fOnBeforeReleaseConnection; + property OnAfterReleaseConnection: TDAConnectionReleasedEvent read fOnAfterReleaseConnection write fOnAfterReleaseConnection; + property OnAcquireConnectionFailure: TDAAcquireConnectionFailureEvent read fOnAcquireConnectionFailure write fOnAcquireConnectionFailure; + + property OnBeforeProcessDeltas : TDAProcessDeltasEvent read fOnBeforeProcessDeltas write fOnBeforeProcessDeltas; + property OnAfterProcessDeltas: TDAProcessDeltasEvent read fOnAfterProcessDeltas write fOnAfterProcessDeltas; + property OnProcessDeltasError: TDAProcessDeltasErrorEvent read fOnProcessDeltasError write fOnProcessDeltasError; + + property OnBeforeGetDatasetSchema: TDAGetDatasetSchemaEvent read fOnBeforeGetDatasetSchema write fOnBeforeGetDatasetSchema; + property OnBeforeGetDatasetData: TDAGetDatasetDataEvent read fOnBeforeGetDatasetData write fOnBeforeGetDatasetData; + property OnAfterGetDatasetSchema: TDAGetDatasetSchemaEvent read fOnAfterGetDatasetSchema write fOnAfterGetDatasetSchema; + property OnAfterGetDatasetData: TDAGetDatasetDataEvent read fOnAfterGetDatasetData write fOnAfterGetDatasetData; + property OnBusinessProcessorAutoCreated: TDAOnBusinessProcessorAutoCreated read fOnBusinessProcessorAutoCreated write fOnBusinessProcessorAutoCreated; + property OnBeforeExecuteCommand: TDABeforeExecuteCommandEvent read fOnBeforeExecuteCommand write fOnBeforeExecuteCommand; + property OnAfterExecuteCommand: TDAAfterExecuteCommandEvent read fOnAfterExecuteCommand write fOnAfterExecuteCommand; + property OnGetSchemaAsXMLEvent: TDAGetSchemaAsXMLEvent read fOnGetSchemaAsXML write fOnGetSchemaAsXML; + property GetDatasetDataValidation: TDAGetDatasetDataValidationEvent read fGetDatasetDataValidation write fGetDatasetDataValidation; + + property OnUpdateDataBeginTransaction : TDAUpdateDataTransactionEvent read fOnUpdateDataBeginTransaction write fOnUpdateDataBeginTransaction; + property OnUpdateDataCommitTransaction : TDAUpdateDataTransactionEvent read fOnUpdateDataCommitTransaction write fOnUpdateDataCommitTransaction; + property OnUpdateDataRollBackTransaction : TDAUpdateDataTransactionEvent read fOnUpdateDataRollBackTransaction write fOnUpdateDataRollBackTransaction; + + property ExportedDataTables : TDADataTableReferenceCollection read fExportedDataTables write SetExportedDataTables; + property Cache : TDACache read fCache write SetCache; + property CacheElements : TDACacheElementCollection read fCacheElements write SetCacheElements; + property OnGetCachedDataset : TDAOnGetCachedDataset read fOnGetCachedDataset write fOnGetCachedDataset; + + property Options : TDARemoteServiceOptions read fOptions write fOptions; + end deprecated; + +implementation + +uses + Contnrs, Variants, TypInfo, + uROClient, + uDARes, uDAExceptions; + +{ TDARemoteService } + +constructor TDARemoteService.Create(aOwner: TComponent); +begin + fExportedDataTables := TDADataTableReferenceCollection.Create(Self); + fCacheElements := TDACacheElementCollection.Create(); + fOptions := [rsoProcessDeltasWithoutUpdateRules]; + fAllowWhereSQL := true; + + inherited; + + fAutoCreateBusinessProcessors := TRUE; +end; + +destructor TDARemoteService.Destroy; +begin + inherited; + + FreeAndNIL(fExportedDataTables); + FreeAndNIL(fCacheElements); +end; + +procedure TDARemoteService.DoOnActivate(aClientID: TGUID; const aMessage: IROMessage); +var + connname: string; +begin + inherited; + + if (csDesigning in ComponentState) then Exit; + + if AcquireConnection then try + // Acquires a DA connection automatically + if (fServiceSchema = nil) or (fServiceSchema.ConnectionManager = nil) then RaiseError(err_DARDMInvalidSchema); + + connname := fConnectionName; + if Assigned(fOnBeforeAcquireConnection) then fOnBeforeAcquireConnection(Self, connname); + + fConnection := ServiceSchema.ConnectionManager.NewConnection(connname); + if Supports(fConnection, IDAHETConnection) then + raise Exception.Create(err_HETConnectionNotSupportedInV3); + + if Assigned(fOnAfterAcquireConnection) then fOnAfterAcquireConnection(Self, connname, fConnection); + except + on E: Exception do begin + if Assigned(fOnAcquireConnectionFailure) then fOnAcquireConnectionFailure(Self, connname, E); + raise; + end; + end; +end; + +procedure TDARemoteService.DoOnDeactivate(aClientID: TGUID); +var connname : string; +begin + inherited; + + if (csDesigning in ComponentState) then Exit; + + if assigned(fConnection) then begin + connname := fConnection.Name; + + if Assigned(fOnBeforeReleaseConnection) + then fOnBeforeReleaseConnection(Self, connname, fConnection); + + fConnection := nil; + + if Assigned(fOnAfterReleaseConnection) + then fOnAfterReleaseConnection(Self, connname); + end; +end; + +procedure TDARemoteService.Loaded; +begin + inherited; + + AcquireConnection := fStreamedAcquireConnection; +end; + +procedure TDARemoteService.CheckObjects(const aConnection: IDAConnection; + aSchema: TDASchema; anAdapter: TDADataAdapter; + CheckConnection : boolean = TRUE; + CheckSchema : boolean = TRUE; + CheckAdapter : boolean = TRUE); +begin + if CheckConnection and not Assigned(aConnection) then RaiseError(err_DARDMConnectionIsNotAssigned); + if CheckSchema and not Assigned(aSchema) then RaiseError(err_DARDMInvalidSchema); + if CheckAdapter and not Assigned(anAdapter) then RaiseError(err_DARDMUnassignedAdapter); +end; + +procedure TDARemoteService.Notification(AComponent: TComponent; + Operation: TOperation); +var ref : TDADataTableReference; +begin + inherited; + + if (Operation = opRemove) then begin + if (aComponent = fServiceSchema) then ServiceSchema := nil + else if (AComponent=fCache) then fCache := NIL + else if (aComponent = fServiceAdapter) then ServiceAdapter := nil + else if (AComponent is TDADataTable) and (fExportedDataTables<>NIL) then begin + ref := fExportedDataTables.FindByDataTable(TDADataTable(aComponent)); + if (ref<>NIL) then ref.DataTable := NIL; + end; + end + + else if (Operation = opInsert) then begin + if not (csLoading in ComponentState) and (AComponent is TDASchema) and (fServiceSchema = nil) and (AComponent.Owner = Self) then ServiceSchema := TDASchema(aComponent); + end; +end; + +procedure TDARemoteService.SetAcquireConnection(const Value: boolean); +begin + if (csLoading in ComponentState) then + fStreamedAcquireConnection := Value + else begin + if Value then begin + if (fServiceSchema = nil) then raise Exception.Create(err_DARDMInvalidSchema); + end; + + fAcquireConnection := Value; + end; +end; + +procedure TDARemoteService.SetConnection(const aValue: IDAConnection); +begin + if assigned(fConnection) and Supports(fConnection, IDAHETConnection) then + raise Exception.Create(err_HETConnectionNotSupportedInV3); + fConnection := aValue; +end; + +procedure TDARemoteService.SetConnectionName(const Value: string); +begin + fConnectionName := Trim(Value); + if (fConnectionName = '') then fAcquireConnection := FALSE; +end; + +procedure TDARemoteService.SetServiceSchema(const Value: TDASchema); +begin + fServiceSchema := Value; + + if (fServiceSchema <> nil) then + fServiceSchema.FreeNotification(Self) + else + fAcquireConnection := FALSE; +end; + +procedure TDARemoteService.SetServiceAdapter(const Value: TDADataAdapter); +begin + fServiceAdapter := Value; + if (fServiceAdapter <> nil) then fServiceAdapter.FreeNotification(Self); +end; + +function TDARemoteService.TriggerTransactionEvent(aEvent: TDAUpdateDataTransactionEvent): Boolean; +begin + result := true; + if assigned(aEvent) then aEvent(self, result); +end; + +function TDARemoteService.DoGetDatasetData( + const Stream: TStream; + const aConnection: IDAConnection; + const aDatasetName: ansistring; + const aParamNames: array of string; + const aParamValues : array of variant; + const UserFilter : ansistring; + aSchema: TDASchema; + anAdapter: TDADataAdapter; + someOptions: TDAWriteOptions; + MaxRecords: integer): integer; + +var + ds: IDADataset; + i, cnt: integer; + paramname: string; + paramvalue: variant; + inclrows, + inclschema: boolean; + allow : boolean; + ref : TDADataTableReference; + cachedentry : IDACacheEntry; + cacheelement : TDACacheElement; + lDatasetName: string; + lUserFilter: string; +begin + // Misc + lDatasetName:= {$IFDEF UNICODE}Utf8ToAnsi{$ENDIF}(aDatasetName); + luserFilter := {$IFDEF UNICODE}Utf8ToAnsi{$ENDIF}(UserFilter); + cachedentry := NIL; + + inclschema := (woSchema in someOptions); + inclrows := (woRows in someOptions); + ref := NIL; + + if (fCache<>NIL) then begin + // If the service is connected to a cache, then it searches the cache for this dataset + cachedentry := fCache.Get(Self.Name+'.'+lDatasetName); + end; + + if (cachedentry=NIL) then begin + // New: searches for a datatable reference that matches the request, if any are present + // This allows the user to return in memory datasets or other custom data + if (fExportedDataTables.Count>0) then begin + ref := fExportedDataTables.FindByName(lDatasetName); // Already checks the datatable is not NIL + if (ref<>NIL) then begin + ds := ref.Dataset; + end; + end; + end; + + // Checks for connection, schema and adapter to be assigned since it will need to query the DB in this case + if (ref=NIL) and (cachedentry=NIL) + then CheckObjects(aConnection, aSchema, anAdapter); + + // Security check, common to every case + allow := TRUE; + if Assigned(fGetDatasetDataValidation) + then fGetDatasetDataValidation(Self, aConnection, lDatasetName, aParamNames, aParamValues, aSchema, allow); + + if not allow + then raise EDADatasetNotAccessible.CreateFmt(err_DatasetNotAccessible, [aDatasetName]); + + // Returns the actual data. Cached and non-cached data follow two different paths (some events are not triggered in the + // case of cached data, since we don't have an actual IDADataset to reference) + + if (cachedentry<>NIL) then begin + if Assigned(fOnGetCachedDataset) then fOnGetCachedDataset(Self, lDatasetName, cachedentry.Data); + + result := cachedentry.RecordCount; + Stream.CopyFrom(cachedentry.Data, 0); + end + else begin + + if TriggerTransactionEvent(fOnUpdateDataBeginTransaction) then Connection.BeginTransaction; + try + + // Gets a reference to the dataset if it couldn't find a datatable to match the request... + if (ref=NIL) then + ds := aSchema.NewDataset(aConnection, lDatasetName); + + // Fills the parameters (if any are specified) + cnt := Length(aParamNames); + if (cnt>0) then begin + for i := 0 to (cnt-1) do begin + paramname := aParamNames[i]; + paramvalue := aParamValues[i]; + + ds.ParamByName(paramname).Value := paramvalue; + end; + end; + + // Applies the UserFilter, if any specified + if (Trim(lUserFilter)<>'') then begin + if not AllowWhereSQL then + raise Exception.Create('Passing of clear text WHERE clauses has been disabled (GetData)'); + ds.Where.AddText(lUserFilter); + end; + + // ...and writes the data fireing the right events + if inclschema and Assigned(fOnBeforeGetDatasetSchema) then fOnBeforeGetDatasetSchema(ds); + if inclrows and Assigned(fOnBeforeGetDatasetData) then fOnBeforeGetDatasetData(ds, inclschema, MaxRecords); + + result := anAdapter.WriteDataset(stream, ds, someOptions, MaxRecords); + + if inclschema and Assigned(fOnAfterGetDatasetSchema) then fOnAfterGetDatasetSchema(ds); + if inclrows and Assigned(fOnAfterGetDatasetData) then fOnAfterGetDatasetData(ds, inclschema, MaxRecords); + + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataCommitTransaction) then Connection.CommitTransaction; + except + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataRollBackTransaction) then Connection.RollbackTransaction; + raise; + end; + + // Checks if it needs to stored it in the cache + if (fCache<>NIL) then begin + cacheelement := fCacheElements.FindByDatasetName(lDatasetName); + if (cacheelement=NIL) or not cacheelement.Enabled then Exit; + + fCache.Store(Self.Name+'.'+lDatasetName, stream, TRUE, result, cacheelement.MaxReads, cacheelement.Duration); + end; + + end; +end; + +function TDARemoteService.GetDatasetSchema( + const aDatasetName: AnsiString): Binary; +var tempds : IDADataset; + schemads : TDADataset; + dummyrefs : TObjectList; + lDatasetName: string; +begin + dummyrefs := NIL; + + CheckObjects(Connection, ServiceSchema, ServiceAdapter); + + result := Binary.Create; + try + try + // New: merges the data tables references by the service + if (fExportedDataTables.Count>0) then begin + dummyrefs := TObjectList.Create; + MergeDatatablesToSchema(dummyrefs); + end; + + lDatasetName := {$IFDEF UNICODE}Utf8ToAnsi{$ENDIF}(aDatasetName); + // Improved this method: now it is not necessary to have statements associated to a dataset + // thus allowing for the definition of in memory datasets inside a schema + schemads := ServiceSchema.Datasets.DatasetByName(lDatasetName); + tempds := Connection.NewDataset('', lDatasetName); + + // Copies the schema + tempds.Fields.AssignFieldCollection(schemads.Fields); + tempds.Params.AssignParamCollection(schemads.Params); + + ServiceAdapter.WriteDataset(result, tempds, [woSchema], 0); + except + FreeAndNIL(result); + raise; + end; + finally + dummyrefs.Free; + end; +end; + +type + TBizProcessorReference = class(TObject) + private + end; + +function TDARemoteService.UnpackDeltas(const DeltaStream: Binary; + DeltaStructList : TDADeltaStructList): integer; +var x, i: integer; + deltaname: string; + bizproc: TDABusinessProcessor; + details : TDADatasetRelationshipList; + found: boolean; + struct : TDADeltaStruct; +begin + result := 0; + with ServiceAdapter do begin + + // Reads the deltas. + Initialize(DeltaStream, aiReadFromBeginning); + try + if (DeltaCount = 0) then Exit; + + for i := 0 to (DeltaCount - 1) do begin + deltaname := DeltaNames[i]; + found := FALSE; + + { Tries to locate a user-defined business processor } + for x := 0 to (Self.ComponentCount - 1) do + if (Self.Components[x] is TDABusinessProcessor) then begin + bizproc := TDABusinessProcessor(Self.Components[x]); + if SameText(bizproc.ReferencedDataset, deltaname) then begin + struct := DeltaStructList.Add(NewDelta(deltaname), bizproc); + ReadDelta(deltaname, struct.Delta); + + found := TRUE; + Break; + end; + end; + + { Either creates one or aborts raising an exception } + if not found then begin + if not AutoCreateBusinessProcessors then RaiseError(err_DARDMCannotFindProxessorForDelta, [deltaname]); + + bizproc := TDABusinessProcessor.Create(Self); + bizproc.ReferencedDataset := deltaname; + bizproc.Schema := ServiceSchema; + + struct := DeltaStructList.Add(NewDelta(deltaname), bizproc); + ReadDelta(deltaname, struct.Delta); + + if Assigned(fOnBusinessProcessorAutoCreated) + then fOnBusinessProcessorAutoCreated(Self, bizproc); + end; + + Inc(result); + end; + + if (result=0) then Exit; // Cannot process anything! + + { Sets the master/detail relationships } + with ServiceSchema do + if (RelationShips.Count>0) then begin + details := TDADatasetRelationshipList.Create; + try + + for i := 0 to DeltaStructList.Count-1 do begin + RelationShips.GetDetails(DeltaStructList[i].BusinessProcessor.ReferencedDataset, details); + if (details.Count=0) then Continue; + + { Prepares an array with the references to the detail deltas that will be used later on to adjust + autoincs, etc. } + for x := 0 to details.Count-1 do begin + struct := DeltaStructList.FindStruct(details[x].DetailDatasetName); + if (struct<>NIL) then begin + DeltaStructList[i].DetailDeltas.Add(struct.Delta); + DeltaStructList[i].RelationShips.Add(details[x]); + end; + end; + end; + finally + details.Free; + end; + + end; + finally + Finalize; + end; + end; +end; + +function TDARemoteService.UpdateData(const Delta: Binary): Binary; +var + deltastructs : TDADeltaStructList; + struct : TDADeltaStruct; + k, i: integer; + doraise : boolean; + processeddeltas : TStringList; + + function ProceedDefaultTransactionLogic(aEvent: TDAUpdateDataTransactionEvent): Boolean; + begin + Result := True; + if Assigned(aEvent) + then aEvent(Self, Result); + end; + + procedure FlushCache(const aDatasetName : string); + var element : TDACacheElement; + begin + if (fCache=NIL) or (fCacheElements.Count=0) then Exit; + + element := fCacheElements.FindByDatasetName(aDatasetName); + if (element=NIL) then Exit; + + if (ceoFlushOnUpdate in element.Options) + then fCache.Flush(Self.Name+'.'+aDatasetName); + end; + +begin + result := NIL; + processeddeltas := NIL; + + CheckObjects(Connection, ServiceSchema, ServiceAdapter); + + deltastructs := TDADeltaStructList.Create; + + with ServiceAdapter do try + try + // Reads the deltas. The order in which the are put in the stream indicates + // the order in which updates are being made + if not (UnpackDeltas(Delta, deltastructs)>0) then Exit; + + // Applies the updates + if ProceedDefaultTransactionLogic(fOnUpdateDataBeginTransaction) + then Connection.BeginTransaction; + + if Assigned(fOnBeforeProcessDeltas) then fOnBeforeProcessDeltas(Self, deltastructs); + + if (ServiceSchema.UpdateRules.Count=0) and (rsoProcessDeltasWithoutUpdateRules in Options) then begin + // Processes them in order, from first to last delta sent + for i := 0 to deltastructs.Count-1 do begin + // Flushes the cache for the given dataset + FlushCache(deltastructs[i].Delta.LogicalName); + + deltastructs[i].BusinessProcessor.ProcessDelta(Connection, deltastructs[i].Delta, AllChanges); + end; + end + else try + processeddeltas := TStringList.Create; + + for i := 0 to (ServiceSchema.UpdateRules.Count-1) do begin + // Processes them in the order defined in the schema + struct := deltastructs.FindStruct(ServiceSchema.UpdateRules[i].DatasetName); + if (struct<>NIL) then begin + // Adds the dataset name to the list of processed deltas. Those that don't have update rules will be processed later + processeddeltas.Add(struct.Delta.LogicalName); + + // Flushes the cache for the given dataset + FlushCache(struct.Delta.LogicalName); + + // Processes the delta + struct.BusinessProcessor.ProcessDelta(Connection, struct.Delta, ServiceSchema.UpdateRules[i].ChangeTypes); + + + if (ctInsert in ServiceSchema.UpdateRules[i].ChangeTypes) then begin + for k := 0 to (struct.DetailDeltas.Count-1) do + struct.BusinessProcessor.SynchronizeAutoIncs(struct.Delta, struct.DetailDeltas[k], struct.RelationShips[k]); + end; + end; + end; + + // Processes the deltas for which update rules were not defined + if (rsoProcessDeltasWithoutUpdateRules in Options) then begin + for i := 0 to deltastructs.Count-1 do begin + // Skips if already processed + if (processeddeltas.IndexOf(deltastructs[i].Delta.LogicalName)>=0) then Continue; + + // Flushes the cache for the given dataset + FlushCache(deltastructs[i].Delta.LogicalName); + + deltastructs[i].BusinessProcessor.ProcessDelta(Connection, deltastructs[i].Delta, AllChanges); + end; + end; + + finally + processeddeltas.Free; + end; + + if Assigned(fOnAfterProcessDeltas) then fOnAfterProcessDeltas(Self, deltastructs); + + if Connection.InTransaction and ProceedDefaultTransactionLogic(fOnUpdateDataCommitTransaction) + then Connection.CommitTransaction; + + // Prepares the response + result := Binary.Create; + ServiceAdapter.Initialize(result, aiWrite); + try + for i := 0 to deltastructs.Count-1 do + WriteDelta(deltastructs[i].Delta); + finally + ServiceAdapter.Finalize; + end; + + except + on E:Exception do begin + doraise := TRUE; + try + if Assigned(fOnProcessDeltasError) + then fOnProcessDeltasError(Self, deltastructs, E, doraise); + finally + if Connection.InTransaction and ProceedDefaultTransactionLogic(fOnUpdateDataRollBackTransaction) + then Connection.RollbackTransaction; + end; + if doraise then raise; + end; + end; + finally + deltastructs.Free; + end; +end; + +function TDARemoteService.ExecuteSQLCommand(const SQL: AnsiString): Integer; +begin + if not AllowExecuteSQLCommand then + RaiseError(err_ExecuteSQLCommandNotAllowed); + + CheckObjects(Connection, ServiceSchema, NIL, TRUE, TRUE, FALSE); + + if TriggerTransactionEvent(fOnUpdateDataBeginTransaction) then Connection.BeginTransaction; + try + result := Connection.NewCommand({$IFDEF UNICODE}Utf8ToAnsi{$ENDIF}(SQL), stSQL).Execute; + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataCommitTransaction) then Connection.CommitTransaction; + except + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataRollBackTransaction) then Connection.RollbackTransaction; + raise; + end; +end; + +function TDARemoteService.GetDatasetData(const DatasetName: AnsiString; const Params: AnsiString; + const IncludeSchema: Boolean; const MaxRecords: Integer): Binary; +var + parnames: array of string; + parvalues: array of Variant; + options: TDAWriteOptions; + pars: TStringList; + i : integer; +begin + pars := TStringList.Create; + result := Binary.Create; + try + try + pars.Text := {$IFDEF UNICODE}Utf8ToAnsi{$ENDIF}(Params); + SetLength(parnames, pars.Count); + SetLength(parvalues, pars.Count); + for i := 0 to (pars.Count-1) do begin + parnames[i] := pars.Names[i]; + parvalues[i] := pars.Values[pars.Names[i]]; + end; + + if IncludeSchema + then options := [woSchema, woRows] + else options := [woRows]; + + DoGetDatasetData(result, Connection, DatasetName, parnames, parvalues, '', ServiceSchema, ServiceAdapter, options, MaxRecords); + except + FreeAndNIL(result); + raise; + end; + finally + pars.Free; + end; +end; + +function TDARemoteService.CreateParamString( + const ParamNames: array of string; + const ParamValues: array of Variant): string; +var + i: integer; +begin + result := ''; + + for i := 0 to High(ParamNames) do + result := result + ParamNames[i] + '=' + VarToStr(ParamValues[i]) + #13; +end; + +function TDARemoteService.GetDatasetData(const DatasetName: ansistring; + const ParamNames: array of string; const ParamValues: array of Variant; + const IncludeSchema: Boolean; const MaxRecords: Integer): Binary; +var + options: TDAWriteOptions; +begin + {result := GetDatasetData(DatasetName, CreateParamString(ParamNames, ParamValues), IncludeSchema, MaxRecords);} + result := Binary.Create; + try + if IncludeSchema + then options := [woSchema, woRows] + else options := [woRows]; + DoGetDatasetData(result, Connection, DatasetName, ParamNames, ParamValues, '', ServiceSchema, ServiceAdapter, options, MaxRecords); + except + FreeAndNIL(result); + raise; + end; +end; + +function TDARemoteService.GetDatasetData(const DatasetName: ansistring; + const IncludeSchema: Boolean = FALSE; + const MaxRecords: Integer = -1): Binary; +begin + result := GetDatasetData(DatasetName, '', IncludeSchema, MaxRecords); +end; + +procedure TDARemoteService.MergeDatatablesToSchema(aList : TList); +var i : integer; + ref : TDADataset; + dt : IDADataset; +begin + if (fExportedDataTables.Count>0) then begin + for i := 0 to fExportedDataTables.Count-1 do + if fExportedDataTables[i].IsValidReference {and fExportedDataTables[i].ExportAsPartOfSchema} then begin + dt := fExportedDataTables[i].Dataset; + + ref := ServiceSchema.Datasets.Add; + ref.Name := dt.LogicalName; + ref.Fields.AssignFieldCollection(dt.Fields); + ref.Params.AssignParamCollection(dt.Params); + + aList.Add(ref); + end; + end; +end; + +function TDARemoteService.GetSchemaAsXML: AnsiString; +var xml : TStringStream; + dummyrefs : TObjectList; +begin + result := ''; + dummyrefs := NIL; + + if not Assigned(ServiceSchema) then Exit; + + try + // New: merges the data tables references by the service + if (fExportedDataTables.Count>0) then begin + dummyrefs := TObjectList.Create; + MergeDatatablesToSchema(dummyrefs); + end; + + // Returns the schema + xml := TStringStream.Create(''); + try + ServiceSchema.SaveToStream(xml); + + result := {$IFDEF UNICODE}AnsiToUtf8{$ENDIF}(xml.DataString); + + if Assigned(fOnGetSchemaAsXML) + then fOnGetSchemaAsXML(Self, result); + finally + xml.Free; + end; + + finally + dummyrefs.Free; // automatically removes the datatables from the schema again + end; +end; + +function TDARemoteService.GetDatasetDataEx(const DatasetName: AnsiString; + const Params: TDADatasetParamArray; + const UserFilter: AnsiString; + const IncludeSchema: Boolean; + const MaxRecords: Integer): Binary; +var parnames : array of string; + parvalues : array of variant; + i : integer; + options : TDAWriteOptions; +begin + result := Binary.Create; + try + { Prepares the parameter arrays} + if (Params<>NIL) then begin + SetLength(parnames, Params.Count); + SetLength(parvalues, Params.Count); + for i := 0 to (Params.Count-1) do begin + parnames[i] := {$IFDEF UNICODE}Utf8ToAnsi{$ENDIF}(Params[i].Name); + parvalues[i] := Params[i].Value; + end; + end + else begin + SetLength(parnames, 0); + SetLength(parvalues, 0); + end; + + { Other options } + if IncludeSchema + then options := [woSchema, woRows] + else options := [woRows]; + + { Reads the data } + DoGetDatasetData(result, Connection, DatasetName, parnames, parvalues, UserFilter, ServiceSchema, ServiceAdapter, options, MaxRecords); + except + FreeAndNIL(result); + raise; + end; +end; + +function TDARemoteService.GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray): TROBinaryMemoryStream; +var i : integer; + ds : IDADataset; + parnames : array of string; + parvalues : array of variant; + x : integer; + opt : TDAWriteOptions; + allow : boolean; + lDatasetName: string; +begin + result := NIL; + if (DatasetRequestInfoArray=NIL) or (DatasetRequestInfoArray.Count=0) then exit; + result := Binary.Create; + try + ServiceAdapter.Initialize(result, aiWrite); + try + + for i := 0 to (DatasetRequestInfoArray.Count-1) do begin + with DatasetRequestInfoArray[i] do begin + SetLength(parnames, Params.Count); + SetLength(parvalues, Params.Count); + for x := 0 to (Params.Count-1) do begin + parnames[x] := {$IFDEF UNICODE}Utf8ToAnsi{$ENDIF}(Params[x].Name); + parvalues[x] := Params[x].Value; + end; + lDatasetName := {$IFDEF UNICODE}Utf8ToAnsi{$ENDIF}(DatasetName); + opt := [woRows]; + if DatasetRequestInfoArray[i].IncludeSchema then opt := opt+[woSchema]; + + // Security check + allow := TRUE; + if Assigned(fGetDatasetDataValidation) + then fGetDatasetDataValidation(Self, Connection, lDatasetName, parnames, parvalues, ServiceSchema, allow); + + if not allow + then raise EDADatasetNotAccessible.CreateFmt(err_DatasetNotAccessible, [lDatasetName]); + + // Proceeds + ds := ServiceSchema.NewDataset(Connection, lDatasetName, parnames, parvalues, TRUE); + + ServiceAdapter.WriteDataset(ds, opt, MaxRecords); + end; + end; + finally + ServiceAdapter.Finalize(); + end; + except + FreeAndNIL(result); + raise + end; +end; + +function TDARemoteService.GetDatasetScripts(const DatasetNames: AnsiString): AnsiString; +var names : TStringList; + i : integer; + ds : TDADataset; +begin + result := ''; + names := TStringList.Create; + try + CheckObjects(NIL, fServiceSchema, NIL, FALSE, TRUE, FALSE); + names.CommaText := {$IFDEF UNICODE}Utf8ToAnsi{$ENDIF}(DatasetNames); + + result := ''; + + for i := 0 to (names.Count-1) do begin + ds := fServiceSchema.Datasets.DatasetByName(names[i]); + + result := result+ {$IFDEF UNICODE}AnsiToUtf8{$ENDIF}( + Format('<%s Language="%s">', [ + names[i], + GetEnumName(TypeInfo(TROSEScriptLanguage), Ord(ds.BusinessRulesClient.ScriptLanguage)), + UTF8Encode(ds.BusinessRulesClient.Script), + names[i]])); + end; + + result := result+AnsiString(''); + finally + FreeAndNIL(names); + end; +end; + +function TDARemoteService.ExecuteSQLCommandEx(const CommandName: AnsiString; + const Params: TDADatasetParamArray): Integer; +var cmd : IDASQLCommand; + i : integer; +begin + if not AllowExecuteSQLCommand then + RaiseError(err_ExecuteSQLCommandNotAllowed); + + CheckObjects(Connection, ServiceSchema, NIL, TRUE, TRUE, FALSE); + + cmd := ServiceSchema.NewCommand(Connection, {$IFDEF UNICODE}Utf8ToAnsi{$ENDIF}(CommandName)); + for i := 0 to (Params.Count-1) do + cmd.ParamByName({$IFDEF UNICODE}Utf8ToAnsi{$ENDIF}(Params[i].Name)).Value := Params[i].Value; + + if Assigned(fOnBeforeExecuteCommand) + then fOnBeforeExecuteCommand(Self, cmd); + + if TriggerTransactionEvent(fOnUpdateDataBeginTransaction) then Connection.BeginTransaction; + try + result := cmd.Execute; + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataCommitTransaction) then Connection.CommitTransaction; + except + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataRollBackTransaction) then Connection.RollbackTransaction; + raise; + end; + + if Assigned(fOnAfterExecuteCommand) + then fOnAfterExecuteCommand(Self, cmd, result); +end; + +procedure TDARemoteService.SetExportedDataTables(const Value: TDADataTableReferenceCollection); +begin + fExportedDataTables.Assign(Value); +end; + +procedure TDARemoteService.SetCache(const Value: TDACache); +begin + fCache := Value; + if (fCache<>NIL) + then fCache.FreeNotification(Self); +end; + +procedure TDARemoteService.SetCacheElements( + const Value: TDACacheElementCollection); +begin + fCacheElements.Assign(Value); +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DBSessionManager Create Session Table.sql b/official/5.0.30.691/Data Abstract for Delphi/Source/DBSessionManager Create Session Table.sql new file mode 100644 index 0000000..54f5e49 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DBSessionManager Create Session Table.sql @@ -0,0 +1,15 @@ +CREATE TABLE [dbo].[Sessions] ( + [SessionID] [char] (38) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , + [Created] [datetime] NULL , + [LastAccessed] [datetime] NULL , + [Data] [image] NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +ALTER TABLE [dbo].[Sessions] WITH NOCHECK ADD + CONSTRAINT [PK_Sessions] PRIMARY KEY CLUSTERED + ( + [SessionID] + ) ON [PRIMARY] +GO + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DBSessionManager Default Schema.daConnections b/official/5.0.30.691/Data Abstract for Delphi/Source/DBSessionManager Default Schema.daConnections new file mode 100644 index 0000000..625165d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DBSessionManager Default Schema.daConnections @@ -0,0 +1 @@ +ADO?AuxDriver=SQLOLEDB.1;Server=localhost;Database=Northwind;UserID=sa;Password=;TrueMSSQL010pbWaitTrue6001 diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DBSessionManager Default Schema.daSchema b/official/5.0.30.691/Data Abstract for Delphi/Source/DBSessionManager Default Schema.daSchema new file mode 100644 index 0000000..32f7e13 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DBSessionManager Default Schema.daSchema @@ -0,0 +1,30 @@ + +Insert_SessiondabtUnknowndatStringSessionIDdaptInput38dabtUnknowndatDateTimeCreateddaptInput0dabtUnknowndatDateTimeLastAccesseddaptInput0dabtUnknowndatBlobDatadaptInput0MSSQLINSERT + INTO Sessions + (SessionID, Created, LastAccessed, Data) + VALUES + (:SessionID, :Created, :LastAccessed, :Data)stSQLUpdate_SessiondabtUnknowndatDateTimeLastAccesseddaptInput0dabtUnknowndatBlobDatadaptInput0dabtUnknowndatStringSessionIDdaptInput38MSSQLUPDATE + Sessions + SET + LastAccessed = :LastAccessed, + Data = :Data + WHERE + SessionID = :SessionID +stSQLClearSessionsdabtUnknowndatDateTimeLastAccesseddaptInput0MSSQLDELETE + FROM + Sessions + WHERE + LastAccessed < :LastAccessedstSQLDelete_SessiondabtUnknowndatStringSessionIDdaptInput38MSSQLDELETE + FROM + Sessions + WHERE + SessionID = :SessionIDstSQLTrueTruerslPascalScriptrslPascalScripttaLeftJustifydabtUnknownFalsedatStringSessionID0FalseTrueFalseFalseSessionIDFalseFalseFalse38TrueGetAllSessionIDsDatasetSessionIDSessionIDMSSQLSelect SessionID from Sessions +stSQLTrueTruerslPascalScriptrslPascalScripttaLeftJustifydabtUnknownFalsedatIntegerCOLUMN10FalseTrueFalseFalseCOLUMN1FalseFalseFalse0TrueGetSessionCountCOLUMN1COLUMN1MSSQLSELECT + COUNT(*) + FROM + SessionsstSQLTrueTruerslPascalScriptrslPascalScripttaLeftJustifydabtUnknownFalsedatStringSessionID0TrueTrueFalseFalseSessionIDFalseFalseFalse38TruetaLeftJustifydabtUnknownFalsedatDateTimeCreated0FalseTrueFalseFalseCreatedFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatDateTimeLastAccessed0FalseTrueFalseFalseLastAccessedFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatBlobData0FalseTrueFalseFalseDataFalseFalseFalse0TrueGetSessiondabtUnknowndatStringSessionIDdaptInput38SessionIDSessionIDCreatedCreatedLastAccessedLastAccessedDataDataMSSQLSELECT + SessionID, Created, LastAccessed, Data + FROM + Sessions + WHERE + SessionID = :SessionIDstSQL0 diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract.inc b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract.inc new file mode 100644 index 0000000..16a6553 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract.inc @@ -0,0 +1,25 @@ +{$INCLUDE eDefines.inc} +{.$DEFINE STORERECID} +{$DEFINE DataAbstract5} + +{$IFDEF FPC} + {$IFNDEF RO_FPC_MODE_SET} + {$MODE DELPHI} + {$DEFINE RO_FPC_MODE_SET} + {$ENDIF} + {$DEFINE FPC_SAFECALL_BUG} + {$DEFINE DA_WideMemoSupport} // support for ftWideMemo + {.$DEFINE ftFMTBCD_Support} // support for FMTBCD +{$ENDIF} + +{$IFDEF DELPHI6UP} + {$DEFINE ftFMTBCD_Support} // support for FMTBCD +{$ENDIF} + + +{$IFDEF DELPHI10UP} + {$DEFINE DA_WideMemoSupport} // support for ftWideMemo +{$ENDIF} + +// always use std methods for TDataset-compatible drivers +{$DEFINE Drivers_CompatibilityMode} diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract3.RODL b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract3.RODL new file mode 100644 index 0000000..d9d82c1 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract3.RODL @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract3_Async.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract3_Async.pas new file mode 100644 index 0000000..e823d65 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract3_Async.pas @@ -0,0 +1,367 @@ +unit DataAbstract3_Async; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROTypes, uROClientIntf, uROAsync, + {Project:} DataAbstract3_Intf; + +type + { IDARemoteService_Async } + IDARemoteService_Async = interface(IROAsyncInterface) + ['{F8299772-C66E-4D77-A4F9-78400662810B}'] + procedure Invoke_GetDatasetSchema(const aDatasetName: AnsiString); + procedure Invoke_GetDatasetScripts(const DatasetNames: AnsiString); + procedure Invoke_GetDatasetData(const DatasetName: AnsiString; const Params: AnsiString; const IncludeSchema: Boolean; const MaxRecords: Integer); + procedure Invoke_GetDatasetDataEx(const DatasetName: AnsiString; const Params: TDADatasetParamArray; const UserFilter: AnsiString; const IncludeSchema: Boolean; const MaxRecords: Integer); + procedure Invoke_UpdateData(const Delta: Binary); + procedure Invoke_ExecuteSQLCommand(const SQL: AnsiString); + procedure Invoke_GetSchemaAsXML; + procedure Invoke_GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray); + procedure Invoke_ExecuteSQLCommandEx(const CommandName: AnsiString; const Params: TDADatasetParamArray); + function Retrieve_GetDatasetSchema: Binary; + function Retrieve_GetDatasetScripts: AnsiString; + function Retrieve_GetDatasetData: Binary; + function Retrieve_GetDatasetDataEx: Binary; + function Retrieve_UpdateData: Binary; + function Retrieve_ExecuteSQLCommand: Integer; + function Retrieve_GetSchemaAsXML: AnsiString; + function Retrieve_GetMultipleDatasets: Binary; + function Retrieve_ExecuteSQLCommandEx: Integer; + end; + + { IDALoginService_Async } + IDALoginService_Async = interface(IDARemoteService_Async) + ['{5A9C9231-1C8D-4436-88E1-07AD23D7BEF3}'] + procedure Invoke_Login(const UserID: AnsiString; const Password: AnsiString); + procedure Invoke_Logout; + function Retrieve_Login(out LoginInfo: TDALoginInfo): Boolean; + end; + + { CoDARemoteService_Async } + CoDARemoteService_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDARemoteService_Async; + end; + + { CoDALoginService_Async } + CoDALoginService_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDALoginService_Async; + end; + + { TDARemoteService_AsyncProxy } + TDARemoteService_AsyncProxy = class(TROAsyncProxy, IDARemoteService_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_GetDatasetSchema(const aDatasetName: AnsiString); + procedure Invoke_GetDatasetScripts(const DatasetNames: AnsiString); + procedure Invoke_GetDatasetData(const DatasetName: AnsiString; const Params: AnsiString; const IncludeSchema: Boolean; const MaxRecords: Integer); + procedure Invoke_GetDatasetDataEx(const DatasetName: AnsiString; const Params: TDADatasetParamArray; const UserFilter: AnsiString; const IncludeSchema: Boolean; const MaxRecords: Integer); + procedure Invoke_UpdateData(const Delta: Binary); + procedure Invoke_ExecuteSQLCommand(const SQL: AnsiString); + procedure Invoke_GetSchemaAsXML; + procedure Invoke_GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray); + procedure Invoke_ExecuteSQLCommandEx(const CommandName: AnsiString; const Params: TDADatasetParamArray); + function Retrieve_GetDatasetSchema: Binary; + function Retrieve_GetDatasetScripts: AnsiString; + function Retrieve_GetDatasetData: Binary; + function Retrieve_GetDatasetDataEx: Binary; + function Retrieve_UpdateData: Binary; + function Retrieve_ExecuteSQLCommand: Integer; + function Retrieve_GetSchemaAsXML: AnsiString; + function Retrieve_GetMultipleDatasets: Binary; + function Retrieve_ExecuteSQLCommandEx: Integer; + end; + + { TDALoginService_AsyncProxy } + TDALoginService_AsyncProxy = class(TDARemoteService_AsyncProxy, IDALoginService_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_Login(const UserID: AnsiString; const Password: AnsiString); + procedure Invoke_Logout; + function Retrieve_Login(out LoginInfo: TDALoginInfo): Boolean; + end; + +implementation + +uses + {vcl:} SysUtils; + +{ CoDARemoteService } + +class function CoDARemoteService_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDARemoteService_Async; +begin + result := TDARemoteService_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TDARemoteService_AsyncProxy } + +function TDARemoteService_AsyncProxy.__GetInterfaceName:string; +begin + result := 'DARemoteService'; +end; + +procedure TDARemoteService_AsyncProxy.Invoke_GetDatasetSchema(const aDatasetName: AnsiString); +begin + __AssertProxyNotBusy('GetDatasetSchema'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetDatasetSchema'); + __Message.Write('aDatasetName', TypeInfo(AnsiString), aDatasetName, []); + __DispatchAsyncRequest('GetDatasetSchema',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDARemoteService_AsyncProxy.Retrieve_GetDatasetSchema: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('GetDatasetSchema'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TDARemoteService_AsyncProxy.Invoke_GetDatasetScripts(const DatasetNames: AnsiString); +begin + __AssertProxyNotBusy('GetDatasetScripts'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetDatasetScripts'); + __Message.Write('DatasetNames', TypeInfo(AnsiString), DatasetNames, []); + __DispatchAsyncRequest('GetDatasetScripts',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDARemoteService_AsyncProxy.Retrieve_GetDatasetScripts: AnsiString; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('GetDatasetScripts'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(AnsiString), Result, []); + + __response.Free(); +end; + +procedure TDARemoteService_AsyncProxy.Invoke_GetDatasetData(const DatasetName: AnsiString; const Params: AnsiString; const IncludeSchema: Boolean; const MaxRecords: Integer); +begin + __AssertProxyNotBusy('GetDatasetData'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetDatasetData'); + __Message.Write('DatasetName', TypeInfo(AnsiString), DatasetName, []); + __Message.Write('Params', TypeInfo(AnsiString), Params, []); + __Message.Write('IncludeSchema', TypeInfo(Boolean), IncludeSchema, []); + __Message.Write('MaxRecords', TypeInfo(Integer), MaxRecords, []); + __DispatchAsyncRequest('GetDatasetData',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDARemoteService_AsyncProxy.Retrieve_GetDatasetData: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('GetDatasetData'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TDARemoteService_AsyncProxy.Invoke_GetDatasetDataEx(const DatasetName: AnsiString; const Params: TDADatasetParamArray; const UserFilter: AnsiString; const IncludeSchema: Boolean; const MaxRecords: Integer); +begin + __AssertProxyNotBusy('GetDatasetDataEx'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetDatasetDataEx'); + __Message.Write('DatasetName', TypeInfo(AnsiString), DatasetName, []); + __Message.Write('Params', TypeInfo(TDADatasetParamArray), Params, []); + __Message.Write('UserFilter', TypeInfo(AnsiString), UserFilter, []); + __Message.Write('IncludeSchema', TypeInfo(Boolean), IncludeSchema, []); + __Message.Write('MaxRecords', TypeInfo(Integer), MaxRecords, []); + __DispatchAsyncRequest('GetDatasetDataEx',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDARemoteService_AsyncProxy.Retrieve_GetDatasetDataEx: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('GetDatasetDataEx'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TDARemoteService_AsyncProxy.Invoke_UpdateData(const Delta: Binary); +begin + __AssertProxyNotBusy('UpdateData'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'UpdateData'); + __Message.Write('Delta', TypeInfo(Binary), Delta, []); + __DispatchAsyncRequest('UpdateData',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDARemoteService_AsyncProxy.Retrieve_UpdateData: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('UpdateData'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TDARemoteService_AsyncProxy.Invoke_ExecuteSQLCommand(const SQL: AnsiString); +begin + __AssertProxyNotBusy('ExecuteSQLCommand'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'ExecuteSQLCommand'); + __Message.Write('SQL', TypeInfo(AnsiString), SQL, []); + __DispatchAsyncRequest('ExecuteSQLCommand',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDARemoteService_AsyncProxy.Retrieve_ExecuteSQLCommand: Integer; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('ExecuteSQLCommand'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), Result, []); + + __response.Free(); +end; + +procedure TDARemoteService_AsyncProxy.Invoke_GetSchemaAsXML; +begin + __AssertProxyNotBusy('GetSchemaAsXML'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetSchemaAsXML'); + __DispatchAsyncRequest('GetSchemaAsXML',__Message); +end; + +function TDARemoteService_AsyncProxy.Retrieve_GetSchemaAsXML: AnsiString; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('GetSchemaAsXML'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(AnsiString), Result, []); + + __response.Free(); +end; + +procedure TDARemoteService_AsyncProxy.Invoke_GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray); +begin + __AssertProxyNotBusy('GetMultipleDatasets'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetMultipleDatasets'); + __Message.Write('DatasetRequestInfoArray', TypeInfo(TDADatasetRequestInfoArray), DatasetRequestInfoArray, []); + __DispatchAsyncRequest('GetMultipleDatasets',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDARemoteService_AsyncProxy.Retrieve_GetMultipleDatasets: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('GetMultipleDatasets'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TDARemoteService_AsyncProxy.Invoke_ExecuteSQLCommandEx(const CommandName: AnsiString; const Params: TDADatasetParamArray); +begin + __AssertProxyNotBusy('ExecuteSQLCommandEx'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'ExecuteSQLCommandEx'); + __Message.Write('CommandName', TypeInfo(AnsiString), CommandName, []); + __Message.Write('Params', TypeInfo(TDADatasetParamArray), Params, []); + __DispatchAsyncRequest('ExecuteSQLCommandEx',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDARemoteService_AsyncProxy.Retrieve_ExecuteSQLCommandEx: Integer; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('ExecuteSQLCommandEx'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), Result, []); + + __response.Free(); +end; + + +{ CoDALoginService } + +class function CoDALoginService_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDALoginService_Async; +begin + result := TDALoginService_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TDALoginService_AsyncProxy } + +function TDALoginService_AsyncProxy.__GetInterfaceName:string; +begin + result := 'DALoginService'; +end; + +procedure TDALoginService_AsyncProxy.Invoke_Login(const UserID: AnsiString; const Password: AnsiString); +begin + __AssertProxyNotBusy('Login'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'Login'); + __Message.Write('UserID', TypeInfo(AnsiString), UserID, []); + __Message.Write('Password', TypeInfo(AnsiString), Password, []); + __DispatchAsyncRequest('Login',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDALoginService_AsyncProxy.Retrieve_Login(out LoginInfo: TDALoginInfo): Boolean; +var __response:TStream; +begin + LoginInfo := nil; + __response := __RetrieveAsyncResponse('Login'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), Result, []); + __Message.Read('LoginInfo', TypeInfo(TDALoginInfo), LoginInfo, []); + + __response.Free(); +end; + +procedure TDALoginService_AsyncProxy.Invoke_Logout; +begin + __AssertProxyNotBusy('Logout'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'Logout'); + __DispatchAsyncRequest('Logout',__Message, false); +end; + + +initialization +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract3_Intf.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract3_Intf.pas new file mode 100644 index 0000000..c1f4134 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract3_Intf.pas @@ -0,0 +1,1367 @@ +unit DataAbstract3_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf; + +const + { Library ID } + LibraryUID = '{2966A4BF-569C-45AA-8F34-CF1E155FD77A}'; + TargetNamespace = ''; + + { Service Interface ID's } + IDARemoteService_IID : TGUID = '{C532E842-0AA9-4253-A9BF-AFCF22885B97}'; + IDALoginService_IID : TGUID = '{58550AA0-B64F-495A-B2F8-C981D4C39180}'; + + { Event ID's } + +type + { Forward declarations } + IDARemoteService = interface; + IDALoginService = interface; + + TDADatasetParamArray = class; + TDADatasetRequestInfoArray = class; + TDAStringArray = class; + + TDADatasetParam = class; + TDADatasetRequestInfo = class; + TDALoginInfo = class; + + + { TDADatasetParam } + TDADatasetParam = class(TROComplexType) + private + fName: AnsiString; + fValue: Variant; + public + procedure Assign(iSource: TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property Name:AnsiString read fName write fName; + property Value:Variant read fValue write fValue; + end; + + { TDADatasetParamCollection } + TDADatasetParamCollection = class(TROCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(aIndex: integer): TDADatasetParam; + procedure SetItems(aIndex: integer; const Value: TDADatasetParam); + public + constructor Create; overload; + function Add: TDADatasetParam; reintroduce; + procedure SaveToArray(anArray: TDADatasetParamArray); + procedure LoadFromArray(anArray: TDADatasetParamArray); + property Items[Index: integer]:TDADatasetParam read GetItems write SetItems; default; + end; + + { TDADatasetRequestInfo } + TDADatasetRequestInfo = class(TROComplexType) + private + fDatasetName: AnsiString; + fIncludeSchema: Boolean; + fMaxRecords: Integer; + fParams: TDADatasetParamArray; + function GetParams: TDADatasetParamArray; + public + procedure Assign(iSource: TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property DatasetName:AnsiString read fDatasetName write fDatasetName; + property IncludeSchema:Boolean read fIncludeSchema write fIncludeSchema; + property MaxRecords:Integer read fMaxRecords write fMaxRecords; + property Params:TDADatasetParamArray read GetParams write fParams; + end; + + { TDADatasetRequestInfoCollection } + TDADatasetRequestInfoCollection = class(TROCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(aIndex: integer): TDADatasetRequestInfo; + procedure SetItems(aIndex: integer; const Value: TDADatasetRequestInfo); + public + constructor Create; overload; + function Add: TDADatasetRequestInfo; reintroduce; + procedure SaveToArray(anArray: TDADatasetRequestInfoArray); + procedure LoadFromArray(anArray: TDADatasetRequestInfoArray); + property Items[Index: integer]:TDADatasetRequestInfo read GetItems write SetItems; default; + end; + + { TDALoginInfo } + TDALoginInfo = class(TROComplexType) + private + fSessionID: AnsiString; + fUserID: AnsiString; + fPrivileges: TDAStringArray; + fAttributes: TDAStringArray; + fData: Binary; + function GetPrivileges: TDAStringArray; + function GetAttributes: TDAStringArray; + function GetData: Binary; + public + procedure Assign(iSource: TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property SessionID:AnsiString read fSessionID write fSessionID; + property UserID:AnsiString read fUserID write fUserID; + property Privileges:TDAStringArray read GetPrivileges write fPrivileges; + property Attributes:TDAStringArray read GetAttributes write fAttributes; + property Data:Binary read GetData write fData; + end; + + { TDALoginInfoCollection } + TDALoginInfoCollection = class(TROCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(aIndex: integer): TDALoginInfo; + procedure SetItems(aIndex: integer; const Value: TDALoginInfo); + public + constructor Create; overload; + function Add: TDALoginInfo; reintroduce; + property Items[Index: integer]:TDALoginInfo read GetItems write SetItems; default; + end; + + { TDADatasetParamArray } + TDADatasetParamArray_TDADatasetParam = array of TDADatasetParam; + TDADatasetParamArray = class(TROArray) + private + fCount: Integer; + fItems : TDADatasetParamArray_TDADatasetParam; + protected + procedure Grow; virtual; + function GetItems(aIndex: integer): TDADatasetParam; + procedure SetItems(aIndex: integer; const Value: TDADatasetParam); + function GetCount: integer; override; + public + class function GetItemType: PTypeInfo; override; + class function GetItemClass: TClass; override; + class function GetItemSize: integer; override; + + function GetItemRef(aIndex: integer): pointer; override; + procedure SetItemRef(aIndex: integer; Ref: pointer); override; + procedure Clear; override; + procedure Delete(aIndex: integer); override; + procedure Resize(ElementCount: integer); override; + + procedure Assign(iSource:TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + function Add: TDADatasetParam; overload; + function Add(const Value: TDADatasetParam):integer; overload; + + property Count : integer read GetCount; + property Items[Index: integer]:TDADatasetParam read GetItems write SetItems; default; + property InnerArray: TDADatasetParamArray_TDADatasetParam read fItems; + end; + + { TDADatasetRequestInfoArray } + TDADatasetRequestInfoArray_TDADatasetRequestInfo = array of TDADatasetRequestInfo; + TDADatasetRequestInfoArray = class(TROArray) + private + fCount: Integer; + fItems : TDADatasetRequestInfoArray_TDADatasetRequestInfo; + protected + procedure Grow; virtual; + function GetItems(aIndex: integer): TDADatasetRequestInfo; + procedure SetItems(aIndex: integer; const Value: TDADatasetRequestInfo); + function GetCount: integer; override; + public + class function GetItemType: PTypeInfo; override; + class function GetItemClass: TClass; override; + class function GetItemSize: integer; override; + + function GetItemRef(aIndex: integer): pointer; override; + procedure SetItemRef(aIndex: integer; Ref: pointer); override; + procedure Clear; override; + procedure Delete(aIndex: integer); override; + procedure Resize(ElementCount: integer); override; + + procedure Assign(iSource:TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + function Add: TDADatasetRequestInfo; overload; + function Add(const Value: TDADatasetRequestInfo):integer; overload; + + property Count : integer read GetCount; + property Items[Index: integer]:TDADatasetRequestInfo read GetItems write SetItems; default; + property InnerArray: TDADatasetRequestInfoArray_TDADatasetRequestInfo read fItems; + end; + + { TDAStringArray } + TDAStringArray_AnsiString = array of AnsiString; + TDAStringArray = class(TROArray) + private + fCount: Integer; + fItems : TDAStringArray_AnsiString; + protected + procedure Grow; virtual; + function GetItems(aIndex: integer): AnsiString; + procedure SetItems(aIndex: integer; const Value: AnsiString); + function GetCount: integer; override; + public + class function GetItemType: PTypeInfo; override; + class function GetItemSize: integer; override; + + function GetItemRef(aIndex: integer): pointer; override; + procedure Clear; override; + procedure Delete(aIndex: integer); override; + procedure Resize(ElementCount: integer); override; + + procedure Assign(iSource:TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + function Add(const Value:AnsiString): integer; + function GetIndex(const aPropertyName : string; + const aPropertyValue : Variant; + StartFrom : integer = 0; + Options : TROSearchOptions = [soIgnoreCase]) : integer; override; + + property Count : integer read GetCount; + property Items[Index: integer]:AnsiString read GetItems write SetItems; default; + property InnerArray: TDAStringArray_AnsiString read fItems; + end; + + { IDARemoteService } + IDARemoteService = interface + ['{C532E842-0AA9-4253-A9BF-AFCF22885B97}'] + function GetDatasetSchema(const aDatasetName: AnsiString): Binary; + function GetDatasetScripts(const DatasetNames: AnsiString): AnsiString; + function GetDatasetData(const DatasetName: AnsiString; const Params: AnsiString; const IncludeSchema: Boolean; const MaxRecords: Integer): Binary; + function GetDatasetDataEx(const DatasetName: AnsiString; const Params: TDADatasetParamArray; const UserFilter: AnsiString; const IncludeSchema: Boolean; + const MaxRecords: Integer): Binary; + function UpdateData(const Delta: Binary): Binary; + function ExecuteSQLCommand(const SQL: AnsiString): Integer; + function GetSchemaAsXML: AnsiString; + function GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray): Binary; + function ExecuteSQLCommandEx(const CommandName: AnsiString; const Params: TDADatasetParamArray): Integer; + end; + + { CoDARemoteService } + CoDARemoteService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDARemoteService; + end; + + { TDARemoteService_Proxy } + TDARemoteService_Proxy = class(TROProxy, IDARemoteService) + protected + function __GetInterfaceName:string; override; + + function GetDatasetSchema(const aDatasetName: AnsiString): Binary; + function GetDatasetScripts(const DatasetNames: AnsiString): AnsiString; + function GetDatasetData(const DatasetName: AnsiString; const Params: AnsiString; const IncludeSchema: Boolean; const MaxRecords: Integer): Binary; + function GetDatasetDataEx(const DatasetName: AnsiString; const Params: TDADatasetParamArray; const UserFilter: AnsiString; const IncludeSchema: Boolean; + const MaxRecords: Integer): Binary; + function UpdateData(const Delta: Binary): Binary; + function ExecuteSQLCommand(const SQL: AnsiString): Integer; + function GetSchemaAsXML: AnsiString; + function GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray): Binary; + function ExecuteSQLCommandEx(const CommandName: AnsiString; const Params: TDADatasetParamArray): Integer; + end; + + { IDALoginService } + IDALoginService = interface(IDARemoteService) + ['{58550AA0-B64F-495A-B2F8-C981D4C39180}'] + function Login(const UserID: AnsiString; const Password: AnsiString; out LoginInfo: TDALoginInfo): Boolean; + procedure Logout; + end; + + { CoDALoginService } + CoDALoginService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDALoginService; + end; + + { TDALoginService_Proxy } + TDALoginService_Proxy = class(TDARemoteService_Proxy, IDALoginService) + protected + function __GetInterfaceName:string; override; + + function Login(const UserID: AnsiString; const Password: AnsiString; out LoginInfo: TDALoginInfo): Boolean; + procedure Logout; + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uROSerializer, uRORes; + +{ TDADatasetParamArray } + +procedure TDADatasetParamArray.Assign(iSource: TPersistent); +var lSource:TDADatasetParamArray; + i:integer; +begin + if (iSource is TDADatasetParamArray) then begin + lSource := TDADatasetParamArray(iSource); + Clear(); + Resize(lSource.Count); + + for i := 0 to Count-1 do begin + if Assigned(lSource.Items[i]) then begin + Items[i].Assign(lSource.Items[i]); + end; + end; + end + else begin + inherited Assign(iSource); + end; +end; + +class function TDADatasetParamArray.GetItemType: PTypeInfo; +begin + result := TypeInfo(TDADatasetParam); +end; + +class function TDADatasetParamArray.GetItemClass: TClass; +begin + result := TDADatasetParam; +end; + +class function TDADatasetParamArray.GetItemSize: integer; +begin + result := SizeOf(TDADatasetParam); +end; + +function TDADatasetParamArray.GetItems(aIndex: integer): TDADatasetParam; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +function TDADatasetParamArray.GetItemRef(aIndex: integer): pointer; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +procedure TDADatasetParamArray.SetItemRef(aIndex: integer; Ref: pointer); +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if Ref <> fItems[aIndex] then begin + if fItems[aIndex] <> nil then fItems[aIndex].Free; + fItems[aIndex] := Ref; + end; +end; + +procedure TDADatasetParamArray.Clear; +var i: integer; +begin + for i := 0 to (Count-1) do fItems[i].Free(); + SetLength(fItems, 0); + FCount := 0; +end; + +procedure TDADatasetParamArray.Delete(aIndex: integer); +var i: integer; +begin + if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]); + + fItems[aIndex].Free(); + + if (aIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if fItems[aIndex] <> Value then begin + fItems[aIndex].Free; + fItems[aIndex] := Value; + end; +end; + +procedure TDADatasetParamArray.Resize(ElementCount: integer); +var i: Integer; +begin + if fCount = ElementCount then Exit; + for i := FCount -1 downto ElementCount do + FItems[i].Free; + SetLength(fItems, ElementCount); + for i := FCount to ElementCount -1 do + FItems[i] := TDADatasetParam.Create; + FCount := ElementCount; +end; + +function TDADatasetParamArray.GetCount: integer; +begin + result := FCount; +end; + +procedure TDADatasetParamArray.Grow; +var + Delta, Capacity: Integer; +begin + Capacity := Length(fItems); + if Capacity > 64 then + Delta := Capacity div 4 + else + if Capacity > 8 then + Delta := 16 + else + Delta := 4; + SetLength(fItems, Capacity + Delta); +end; + +function TDADatasetParamArray.Add: TDADatasetParam; +begin + result := TDADatasetParam.Create; + Add(Result); +end; + +function TDADatasetParamArray.Add(const Value:TDADatasetParam): integer; +begin + Result := Count; + if Length(fItems) = Result then + Grow; + fItems[result] := Value; + Inc(fCount); +end; + +procedure TDADatasetParamArray.ReadComplex(ASerializer: TObject); +var + lval: TDADatasetParam; + i: integer; +begin + for i := 0 to Count-1 do begin + with TROSerializer(ASerializer) do + ReadStruct(GetArrayElementName(GetItemType, GetItemRef(i)), TDADatasetParam, lval, i); + Items[i] := lval; + end; +end; + +procedure TDADatasetParamArray.WriteComplex(ASerializer: TObject); +var + i: integer; +begin + for i := 0 to Count-1 do + with TROSerializer(ASerializer) do + WriteStruct(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], TDADatasetParam, i); +end; + +{ TDADatasetRequestInfoArray } + +procedure TDADatasetRequestInfoArray.Assign(iSource: TPersistent); +var lSource:TDADatasetRequestInfoArray; + i:integer; +begin + if (iSource is TDADatasetRequestInfoArray) then begin + lSource := TDADatasetRequestInfoArray(iSource); + Clear(); + Resize(lSource.Count); + + for i := 0 to Count-1 do begin + if Assigned(lSource.Items[i]) then begin + Items[i].Assign(lSource.Items[i]); + end; + end; + end + else begin + inherited Assign(iSource); + end; +end; + +class function TDADatasetRequestInfoArray.GetItemType: PTypeInfo; +begin + result := TypeInfo(TDADatasetRequestInfo); +end; + +class function TDADatasetRequestInfoArray.GetItemClass: TClass; +begin + result := TDADatasetRequestInfo; +end; + +class function TDADatasetRequestInfoArray.GetItemSize: integer; +begin + result := SizeOf(TDADatasetRequestInfo); +end; + +function TDADatasetRequestInfoArray.GetItems(aIndex: integer): TDADatasetRequestInfo; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +function TDADatasetRequestInfoArray.GetItemRef(aIndex: integer): pointer; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +procedure TDADatasetRequestInfoArray.SetItemRef(aIndex: integer; Ref: pointer); +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if Ref <> fItems[aIndex] then begin + if fItems[aIndex] <> nil then fItems[aIndex].Free; + fItems[aIndex] := Ref; + end; +end; + +procedure TDADatasetRequestInfoArray.Clear; +var i: integer; +begin + for i := 0 to (Count-1) do fItems[i].Free(); + SetLength(fItems, 0); + FCount := 0; +end; + +procedure TDADatasetRequestInfoArray.Delete(aIndex: integer); +var i: integer; +begin + if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]); + + fItems[aIndex].Free(); + + if (aIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if fItems[aIndex] <> Value then begin + fItems[aIndex].Free; + fItems[aIndex] := Value; + end; +end; + +procedure TDADatasetRequestInfoArray.Resize(ElementCount: integer); +var i: Integer; +begin + if fCount = ElementCount then Exit; + for i := FCount -1 downto ElementCount do + FItems[i].Free; + SetLength(fItems, ElementCount); + for i := FCount to ElementCount -1 do + FItems[i] := TDADatasetRequestInfo.Create; + FCount := ElementCount; +end; + +function TDADatasetRequestInfoArray.GetCount: integer; +begin + result := FCount; +end; + +procedure TDADatasetRequestInfoArray.Grow; +var + Delta, Capacity: Integer; +begin + Capacity := Length(fItems); + if Capacity > 64 then + Delta := Capacity div 4 + else + if Capacity > 8 then + Delta := 16 + else + Delta := 4; + SetLength(fItems, Capacity + Delta); +end; + +function TDADatasetRequestInfoArray.Add: TDADatasetRequestInfo; +begin + result := TDADatasetRequestInfo.Create; + Add(Result); +end; + +function TDADatasetRequestInfoArray.Add(const Value:TDADatasetRequestInfo): integer; +begin + Result := Count; + if Length(fItems) = Result then + Grow; + fItems[result] := Value; + Inc(fCount); +end; + +procedure TDADatasetRequestInfoArray.ReadComplex(ASerializer: TObject); +var + lval: TDADatasetRequestInfo; + i: integer; +begin + for i := 0 to Count-1 do begin + with TROSerializer(ASerializer) do + ReadStruct(GetArrayElementName(GetItemType, GetItemRef(i)), TDADatasetRequestInfo, lval, i); + Items[i] := lval; + end; +end; + +procedure TDADatasetRequestInfoArray.WriteComplex(ASerializer: TObject); +var + i: integer; +begin + for i := 0 to Count-1 do + with TROSerializer(ASerializer) do + WriteStruct(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], TDADatasetRequestInfo, i); +end; + +{ TDAStringArray } + +procedure TDAStringArray.Assign(iSource: TPersistent); +var lSource:TDAStringArray; + i:integer; +begin + if (iSource is TDAStringArray) then begin + lSource := TDAStringArray(iSource); + Clear(); + Resize(lSource.Count); + + for i := 0 to Count-1 do begin + Items[i] := lSource.Items[i]; + end; + end + else begin + inherited Assign(iSource); + end; +end; + +class function TDAStringArray.GetItemType: PTypeInfo; +begin + result := TypeInfo(AnsiString); +end; + +class function TDAStringArray.GetItemSize: integer; +begin + result := SizeOf(AnsiString); +end; + +function TDAStringArray.GetItems(aIndex: integer): AnsiString; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +function TDAStringArray.GetItemRef(aIndex: integer): pointer; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := @fItems[aIndex]; +end; + +procedure TDAStringArray.Clear; +begin + SetLength(fItems, 0); + FCount := 0; +end; + +procedure TDAStringArray.Delete(aIndex: integer); +var i: integer; +begin + if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]); + + if (aIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + fItems[aIndex] := Value; +end; + +procedure TDAStringArray.Resize(ElementCount: integer); +begin + if fCount = ElementCount then Exit; + SetLength(fItems, ElementCount); + FCount := ElementCount; +end; + +function TDAStringArray.GetCount: integer; +begin + result := FCount; +end; + +procedure TDAStringArray.Grow; +var + Delta, Capacity: Integer; +begin + Capacity := Length(fItems); + if Capacity > 64 then + Delta := Capacity div 4 + else + if Capacity > 8 then + Delta := 16 + else + Delta := 4; + SetLength(fItems, Capacity + Delta); +end; + +function TDAStringArray.Add(const Value: AnsiString): integer; +begin + Result := Count; + if Length(fItems) = Result then + Grow; + fItems[result] := Value; + Inc(fCount); +end; + +function TDAStringArray.GetIndex(const aPropertyName: string; + const aPropertyValue: Variant; StartFrom: integer; + Options: TROSearchOptions): integer; +begin + result := -1; +end; + +procedure TDAStringArray.ReadComplex(ASerializer: TObject); +var + lval: AnsiString; + i: integer; +begin + for i := 0 to Count-1 do begin + with TROSerializer(ASerializer) do + ReadUTF8String(GetArrayElementName(GetItemType, GetItemRef(i)), lval, i); + Items[i] := lval; + end; +end; + +procedure TDAStringArray.WriteComplex(ASerializer: TObject); +var + i: integer; +begin + for i := 0 to Count-1 do + with TROSerializer(ASerializer) do + WriteUTF8String(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], i); +end; + +{ TDADatasetParam } + +procedure TDADatasetParam.Assign(iSource: TPersistent); +var lSource: DataAbstract3_Intf.TDADatasetParam; +begin + inherited Assign(iSource); + if (iSource is DataAbstract3_Intf.TDADatasetParam) then begin + lSource := DataAbstract3_Intf.TDADatasetParam(iSource); + Name := lSource.Name; + Value := lSource.Value; + end; +end; + +procedure TDADatasetParam.ReadComplex(ASerializer: TObject); +var + l_Name: AnsiString; + l_Value: Variant; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + l_Name := Name; + TROSerializer(ASerializer).ReadUTF8String('Name', l_Name); + Name := l_Name; + l_Value := Value; + TROSerializer(ASerializer).ReadVariant('Value', l_Value); + Value := l_Value; + end + else begin + l_Name := Name; + TROSerializer(ASerializer).ReadUTF8String('Name', l_Name); + Name := l_Name; + l_Value := Value; + TROSerializer(ASerializer).ReadVariant('Value', l_Value); + Value := l_Value; + end; +end; + +procedure TDADatasetParam.WriteComplex(ASerializer: TObject); +var + l_Name: AnsiString; + l_Value: Variant; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + TROSerializer(ASerializer).ChangeClass(TDADatasetParam); + l_Name := Name; + TROSerializer(ASerializer).WriteUTF8String('Name', l_Name); + l_Value := Value; + TROSerializer(ASerializer).WriteVariant('Value', l_Value); + end + else begin + l_Name := Name; + TROSerializer(ASerializer).WriteUTF8String('Name', l_Name); + l_Value := Value; + TROSerializer(ASerializer).WriteVariant('Value', l_Value); + end; +end; + +{ TDADatasetParamCollection } +constructor TDADatasetParamCollection.Create; +begin + inherited Create(TDADatasetParam); +end; + +constructor TDADatasetParamCollection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function TDADatasetParamCollection.Add: TDADatasetParam; +begin + result := TDADatasetParam(inherited Add); +end; + +function TDADatasetParamCollection.GetItems(aIndex: integer): TDADatasetParam; +begin + result := TDADatasetParam(inherited Items[aIndex]); +end; + +procedure TDADatasetParamCollection.LoadFromArray(anArray: TDADatasetParamArray); +var i : integer; +begin + Clear; + for i := 0 to (anArray.Count-1) do + Add.Assign(anArray[i]); +end; + +procedure TDADatasetParamCollection.SaveToArray(anArray: TDADatasetParamArray); +var i : integer; +begin + anArray.Clear; + anArray.Resize(Count); + for i := 0 to (Count-1) do begin + anArray[i] := TDADatasetParam.Create; + anArray[i].Assign(Items[i]); + end; +end; + +procedure TDADatasetParamCollection.SetItems(aIndex: integer; const Value: TDADatasetParam); +begin + TDADatasetParam(inherited Items[aIndex]).Assign(Value); +end; + +{ TDADatasetRequestInfo } + +procedure TDADatasetRequestInfo.Assign(iSource: TPersistent); +var lSource: DataAbstract3_Intf.TDADatasetRequestInfo; +begin + inherited Assign(iSource); + if (iSource is DataAbstract3_Intf.TDADatasetRequestInfo) then begin + lSource := DataAbstract3_Intf.TDADatasetRequestInfo(iSource); + DatasetName := lSource.DatasetName; + IncludeSchema := lSource.IncludeSchema; + MaxRecords := lSource.MaxRecords; + Params.Assign(lSource.Params); + end; +end; + +function TDADatasetRequestInfo.GetParams: TDADatasetParamArray; +begin + if (fParams = nil) then fParams := TDADatasetParamArray.Create(); + result := fParams; +end; + +procedure TDADatasetRequestInfo.ReadComplex(ASerializer: TObject); +var + l_DatasetName: AnsiString; + l_IncludeSchema: Boolean; + l_MaxRecords: Integer; + l_Params: TDADatasetParamArray; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + l_DatasetName := DatasetName; + TROSerializer(ASerializer).ReadUTF8String('DatasetName', l_DatasetName); + DatasetName := l_DatasetName; + l_IncludeSchema := IncludeSchema; + TROSerializer(ASerializer).ReadEnumerated('IncludeSchema',TypeInfo(boolean), l_IncludeSchema); + IncludeSchema := l_IncludeSchema; + l_MaxRecords := MaxRecords; + TROSerializer(ASerializer).ReadInteger('MaxRecords', otSLong, l_MaxRecords); + MaxRecords := l_MaxRecords; + l_Params := Params; + TROSerializer(ASerializer).ReadArray('Params', TDADatasetParamArray, l_Params); + if Params <> l_Params then Params.Free; + Params := l_Params; + end + else begin + l_DatasetName := DatasetName; + TROSerializer(ASerializer).ReadUTF8String('DatasetName', l_DatasetName); + DatasetName := l_DatasetName; + l_IncludeSchema := IncludeSchema; + TROSerializer(ASerializer).ReadEnumerated('IncludeSchema',TypeInfo(boolean), l_IncludeSchema); + IncludeSchema := l_IncludeSchema; + l_MaxRecords := MaxRecords; + TROSerializer(ASerializer).ReadInteger('MaxRecords', otSLong, l_MaxRecords); + MaxRecords := l_MaxRecords; + l_Params := Params; + TROSerializer(ASerializer).ReadArray('Params', TDADatasetParamArray, l_Params); + if Params <> l_Params then Params.Free; + Params := l_Params; + end; +end; + +procedure TDADatasetRequestInfo.WriteComplex(ASerializer: TObject); +var + l_DatasetName: AnsiString; + l_IncludeSchema: Boolean; + l_MaxRecords: Integer; + l_Params: TDADatasetParamArray; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + TROSerializer(ASerializer).ChangeClass(TDADatasetRequestInfo); + l_DatasetName := DatasetName; + TROSerializer(ASerializer).WriteUTF8String('DatasetName', l_DatasetName); + l_IncludeSchema := IncludeSchema; + TROSerializer(ASerializer).WriteEnumerated('IncludeSchema',TypeInfo(boolean), l_IncludeSchema); + l_MaxRecords := MaxRecords; + TROSerializer(ASerializer).WriteInteger('MaxRecords', otSLong, l_MaxRecords); + l_Params := Params; + TROSerializer(ASerializer).WriteArray('Params', l_Params, TDADatasetParamArray); + end + else begin + l_DatasetName := DatasetName; + TROSerializer(ASerializer).WriteUTF8String('DatasetName', l_DatasetName); + l_IncludeSchema := IncludeSchema; + TROSerializer(ASerializer).WriteEnumerated('IncludeSchema',TypeInfo(boolean), l_IncludeSchema); + l_MaxRecords := MaxRecords; + TROSerializer(ASerializer).WriteInteger('MaxRecords', otSLong, l_MaxRecords); + l_Params := Params; + TROSerializer(ASerializer).WriteArray('Params', l_Params, TDADatasetParamArray); + end; +end; + +{ TDADatasetRequestInfoCollection } +constructor TDADatasetRequestInfoCollection.Create; +begin + inherited Create(TDADatasetRequestInfo); +end; + +constructor TDADatasetRequestInfoCollection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function TDADatasetRequestInfoCollection.Add: TDADatasetRequestInfo; +begin + result := TDADatasetRequestInfo(inherited Add); +end; + +function TDADatasetRequestInfoCollection.GetItems(aIndex: integer): TDADatasetRequestInfo; +begin + result := TDADatasetRequestInfo(inherited Items[aIndex]); +end; + +procedure TDADatasetRequestInfoCollection.LoadFromArray(anArray: TDADatasetRequestInfoArray); +var i : integer; +begin + Clear; + for i := 0 to (anArray.Count-1) do + Add.Assign(anArray[i]); +end; + +procedure TDADatasetRequestInfoCollection.SaveToArray(anArray: TDADatasetRequestInfoArray); +var i : integer; +begin + anArray.Clear; + anArray.Resize(Count); + for i := 0 to (Count-1) do begin + anArray[i] := TDADatasetRequestInfo.Create; + anArray[i].Assign(Items[i]); + end; +end; + +procedure TDADatasetRequestInfoCollection.SetItems(aIndex: integer; const Value: TDADatasetRequestInfo); +begin + TDADatasetRequestInfo(inherited Items[aIndex]).Assign(Value); +end; + +{ TDALoginInfo } + +procedure TDALoginInfo.Assign(iSource: TPersistent); +var lSource: DataAbstract3_Intf.TDALoginInfo; +begin + inherited Assign(iSource); + if (iSource is DataAbstract3_Intf.TDALoginInfo) then begin + lSource := DataAbstract3_Intf.TDALoginInfo(iSource); + SessionID := lSource.SessionID; + UserID := lSource.UserID; + Privileges.Assign(lSource.Privileges); + Attributes.Assign(lSource.Attributes); + Data.Assign(lSource.Data); + end; +end; + +function TDALoginInfo.GetPrivileges: TDAStringArray; +begin + if (fPrivileges = nil) then fPrivileges := TDAStringArray.Create(); + result := fPrivileges; +end; + +function TDALoginInfo.GetAttributes: TDAStringArray; +begin + if (fAttributes = nil) then fAttributes := TDAStringArray.Create(); + result := fAttributes; +end; + +function TDALoginInfo.GetData: Binary; +begin + if (fData = nil) then fData := Binary.Create(); + result := fData; +end; + +procedure TDALoginInfo.ReadComplex(ASerializer: TObject); +var + l_Attributes: TDAStringArray; + l_Data: Binary; + l_Privileges: TDAStringArray; + l_SessionID: AnsiString; + l_UserID: AnsiString; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + l_SessionID := SessionID; + TROSerializer(ASerializer).ReadUTF8String('SessionID', l_SessionID); + SessionID := l_SessionID; + l_UserID := UserID; + TROSerializer(ASerializer).ReadUTF8String('UserID', l_UserID); + UserID := l_UserID; + l_Privileges := Privileges; + TROSerializer(ASerializer).ReadArray('Privileges', TDAStringArray, l_Privileges); + if Privileges <> l_Privileges then Privileges.Free; + Privileges := l_Privileges; + l_Attributes := Attributes; + TROSerializer(ASerializer).ReadArray('Attributes', TDAStringArray, l_Attributes); + if Attributes <> l_Attributes then Attributes.Free; + Attributes := l_Attributes; + l_Data := Data; + TROSerializer(ASerializer).ReadBinary('Data', l_Data); + if Data <> l_Data then Data.Free; + Data := l_Data; + end + else begin + l_Attributes := Attributes; + TROSerializer(ASerializer).ReadArray('Attributes', TDAStringArray, l_Attributes); + if Attributes <> l_Attributes then Attributes.Free; + Attributes := l_Attributes; + l_Data := Data; + TROSerializer(ASerializer).ReadBinary('Data', l_Data); + if Data <> l_Data then Data.Free; + Data := l_Data; + l_Privileges := Privileges; + TROSerializer(ASerializer).ReadArray('Privileges', TDAStringArray, l_Privileges); + if Privileges <> l_Privileges then Privileges.Free; + Privileges := l_Privileges; + l_SessionID := SessionID; + TROSerializer(ASerializer).ReadUTF8String('SessionID', l_SessionID); + SessionID := l_SessionID; + l_UserID := UserID; + TROSerializer(ASerializer).ReadUTF8String('UserID', l_UserID); + UserID := l_UserID; + end; +end; + +procedure TDALoginInfo.WriteComplex(ASerializer: TObject); +var + l_Attributes: TDAStringArray; + l_Data: Binary; + l_Privileges: TDAStringArray; + l_SessionID: AnsiString; + l_UserID: AnsiString; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + TROSerializer(ASerializer).ChangeClass(TDALoginInfo); + l_SessionID := SessionID; + TROSerializer(ASerializer).WriteUTF8String('SessionID', l_SessionID); + l_UserID := UserID; + TROSerializer(ASerializer).WriteUTF8String('UserID', l_UserID); + l_Privileges := Privileges; + TROSerializer(ASerializer).WriteArray('Privileges', l_Privileges, TDAStringArray); + l_Attributes := Attributes; + TROSerializer(ASerializer).WriteArray('Attributes', l_Attributes, TDAStringArray); + l_Data := Data; + TROSerializer(ASerializer).WriteBinary('Data', l_Data); + end + else begin + l_Attributes := Attributes; + TROSerializer(ASerializer).WriteArray('Attributes', l_Attributes, TDAStringArray); + l_Data := Data; + TROSerializer(ASerializer).WriteBinary('Data', l_Data); + l_Privileges := Privileges; + TROSerializer(ASerializer).WriteArray('Privileges', l_Privileges, TDAStringArray); + l_SessionID := SessionID; + TROSerializer(ASerializer).WriteUTF8String('SessionID', l_SessionID); + l_UserID := UserID; + TROSerializer(ASerializer).WriteUTF8String('UserID', l_UserID); + end; +end; + +{ TDALoginInfoCollection } +constructor TDALoginInfoCollection.Create; +begin + inherited Create(TDALoginInfo); +end; + +constructor TDALoginInfoCollection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function TDALoginInfoCollection.Add: TDALoginInfo; +begin + result := TDALoginInfo(inherited Add); +end; + +function TDALoginInfoCollection.GetItems(aIndex: integer): TDALoginInfo; +begin + result := TDALoginInfo(inherited Items[aIndex]); +end; + +procedure TDALoginInfoCollection.SetItems(aIndex: integer; const Value: TDALoginInfo); +begin + TDALoginInfo(inherited Items[aIndex]).Assign(Value); +end; + +{ CoDARemoteService } + +class function CoDARemoteService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDARemoteService; +begin + result := TDARemoteService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TDARemoteService_Proxy } + +function TDARemoteService_Proxy.__GetInterfaceName:string; +begin + result := 'DARemoteService'; +end; + +function TDARemoteService_Proxy.GetDatasetSchema(const aDatasetName: AnsiString): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetDatasetSchema'); + __Message.Write('aDatasetName', TypeInfo(AnsiString), aDatasetName, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDARemoteService_Proxy.GetDatasetScripts(const DatasetNames: AnsiString): AnsiString; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetDatasetScripts'); + __Message.Write('DatasetNames', TypeInfo(AnsiString), DatasetNames, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(AnsiString), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDARemoteService_Proxy.GetDatasetData(const DatasetName: AnsiString; const Params: AnsiString; const IncludeSchema: Boolean; const MaxRecords: Integer): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetDatasetData'); + __Message.Write('DatasetName', TypeInfo(AnsiString), DatasetName, []); + __Message.Write('Params', TypeInfo(AnsiString), Params, []); + __Message.Write('IncludeSchema', TypeInfo(Boolean), IncludeSchema, []); + __Message.Write('MaxRecords', TypeInfo(Integer), MaxRecords, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDARemoteService_Proxy.GetDatasetDataEx(const DatasetName: AnsiString; const Params: TDADatasetParamArray; const UserFilter: AnsiString; const IncludeSchema: Boolean; + const MaxRecords: Integer): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetDatasetDataEx'); + __Message.Write('DatasetName', TypeInfo(AnsiString), DatasetName, []); + __Message.Write('Params', TypeInfo(DataAbstract3_Intf.TDADatasetParamArray), Params, []); + __Message.Write('UserFilter', TypeInfo(AnsiString), UserFilter, []); + __Message.Write('IncludeSchema', TypeInfo(Boolean), IncludeSchema, []); + __Message.Write('MaxRecords', TypeInfo(Integer), MaxRecords, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDARemoteService_Proxy.UpdateData(const Delta: Binary): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'UpdateData'); + __Message.Write('Delta', TypeInfo(Binary), Delta, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDARemoteService_Proxy.ExecuteSQLCommand(const SQL: AnsiString): Integer; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'ExecuteSQLCommand'); + __Message.Write('SQL', TypeInfo(AnsiString), SQL, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDARemoteService_Proxy.GetSchemaAsXML: AnsiString; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetSchemaAsXML'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(AnsiString), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDARemoteService_Proxy.GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetMultipleDatasets'); + __Message.Write('DatasetRequestInfoArray', TypeInfo(DataAbstract3_Intf.TDADatasetRequestInfoArray), DatasetRequestInfoArray, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDARemoteService_Proxy.ExecuteSQLCommandEx(const CommandName: AnsiString; const Params: TDADatasetParamArray): Integer; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'ExecuteSQLCommandEx'); + __Message.Write('CommandName', TypeInfo(AnsiString), CommandName, []); + __Message.Write('Params', TypeInfo(DataAbstract3_Intf.TDADatasetParamArray), Params, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CoDALoginService } + +class function CoDALoginService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDALoginService; +begin + result := TDALoginService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TDALoginService_Proxy } + +function TDALoginService_Proxy.__GetInterfaceName:string; +begin + result := 'DALoginService'; +end; + +function TDALoginService_Proxy.Login(const UserID: AnsiString; const Password: AnsiString; out LoginInfo: TDALoginInfo): Boolean; +begin + try + LoginInfo := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'Login'); + __Message.Write('UserID', TypeInfo(AnsiString), UserID, []); + __Message.Write('Password', TypeInfo(AnsiString), Password, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + __Message.Read('LoginInfo', TypeInfo(DataAbstract3_Intf.TDALoginInfo), LoginInfo, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +procedure TDALoginService_Proxy.Logout; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'Logout'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.FreeStream; + end +end; + +initialization + RegisterROClass(TDADatasetParam); + RegisterROClass(TDADatasetRequestInfo); + RegisterROClass(TDALoginInfo); + RegisterROClass(TDADatasetParamArray); + RegisterROClass(TDADatasetRequestInfoArray); + RegisterROClass(TDAStringArray); + RegisterProxyClass(IDARemoteService_IID, TDARemoteService_Proxy); + RegisterProxyClass(IDALoginService_IID, TDALoginService_Proxy); + + +finalization + UnregisterROClass(TDADatasetParam); + UnregisterROClass(TDADatasetRequestInfo); + UnregisterROClass(TDALoginInfo); + UnregisterROClass(TDADatasetParamArray); + UnregisterROClass(TDADatasetRequestInfoArray); + UnregisterROClass(TDAStringArray); + UnregisterProxyClass(IDARemoteService_IID); + UnregisterProxyClass(IDALoginService_IID); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract3_Invk.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract3_Invk.pas new file mode 100644 index 0000000..9ad9018 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract3_Invk.pas @@ -0,0 +1,365 @@ +unit DataAbstract3_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Generated:} DataAbstract3_Intf; + +type + TDARemoteService_Invoker = class(TROInvoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_GetDatasetSchema(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetDatasetScripts(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetDatasetData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetDatasetDataEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_UpdateData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_ExecuteSQLCommand(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetSchemaAsXML(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetMultipleDatasets(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_ExecuteSQLCommandEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TDALoginService_Invoker = class(TDARemoteService_Invoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_Logout(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TDARemoteService_Invoker } + +constructor TDARemoteService_Invoker.Create; +begin + inherited Create; + FAbstract := True; +end; + +procedure TDARemoteService_Invoker.Invoke_GetDatasetSchema(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetDatasetSchema(const aDatasetName: AnsiString): Binary; } +var + aDatasetName: AnsiString; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('aDatasetName', TypeInfo(AnsiString), aDatasetName, []); + + lResult := (__Instance as IDARemoteService).GetDatasetSchema(aDatasetName); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract3', 'DARemoteService', 'GetDatasetSchemaResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDARemoteService_Invoker.Invoke_GetDatasetScripts(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetDatasetScripts(const DatasetNames: AnsiString): AnsiString; } +var + DatasetNames: AnsiString; + lResult: AnsiString; +begin + try + __Message.Read('DatasetNames', TypeInfo(AnsiString), DatasetNames, []); + + lResult := (__Instance as IDARemoteService).GetDatasetScripts(DatasetNames); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract3', 'DARemoteService', 'GetDatasetScriptsResponse'); + __Message.Write('Result', TypeInfo(AnsiString), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TDARemoteService_Invoker.Invoke_GetDatasetData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetDatasetData(const DatasetName: AnsiString; const Params: AnsiString; const IncludeSchema: Boolean; const MaxRecords: Integer): Binary; } +var + DatasetName: AnsiString; + Params: AnsiString; + IncludeSchema: Boolean; + MaxRecords: Integer; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('DatasetName', TypeInfo(AnsiString), DatasetName, []); + __Message.Read('Params', TypeInfo(AnsiString), Params, []); + __Message.Read('IncludeSchema', TypeInfo(Boolean), IncludeSchema, []); + __Message.Read('MaxRecords', TypeInfo(Integer), MaxRecords, []); + + lResult := (__Instance as IDARemoteService).GetDatasetData(DatasetName, Params, IncludeSchema, MaxRecords); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract3', 'DARemoteService', 'GetDatasetDataResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDARemoteService_Invoker.Invoke_GetDatasetDataEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetDatasetDataEx(const DatasetName: AnsiString; const Params: TDADatasetParamArray; const UserFilter: AnsiString; const IncludeSchema: Boolean; + const MaxRecords: Integer): Binary; } +var + DatasetName: AnsiString; + Params: DataAbstract3_Intf.TDADatasetParamArray; + UserFilter: AnsiString; + IncludeSchema: Boolean; + MaxRecords: Integer; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + Params := nil; + lResult := nil; + try + __Message.Read('DatasetName', TypeInfo(AnsiString), DatasetName, []); + __Message.Read('Params', TypeInfo(DataAbstract3_Intf.TDADatasetParamArray), Params, []); + __Message.Read('UserFilter', TypeInfo(AnsiString), UserFilter, []); + __Message.Read('IncludeSchema', TypeInfo(Boolean), IncludeSchema, []); + __Message.Read('MaxRecords', TypeInfo(Integer), MaxRecords, []); + + lResult := (__Instance as IDARemoteService).GetDatasetDataEx(DatasetName, Params, UserFilter, IncludeSchema, MaxRecords); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract3', 'DARemoteService', 'GetDatasetDataExResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(Params); + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDARemoteService_Invoker.Invoke_UpdateData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function UpdateData(const Delta: Binary): Binary; } +var + Delta: Binary; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + Delta := nil; + lResult := nil; + try + __Message.Read('Delta', TypeInfo(Binary), Delta, []); + + lResult := (__Instance as IDARemoteService).UpdateData(Delta); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract3', 'DARemoteService', 'UpdateDataResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(Delta); + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDARemoteService_Invoker.Invoke_ExecuteSQLCommand(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function ExecuteSQLCommand(const SQL: AnsiString): Integer; } +var + SQL: AnsiString; + lResult: Integer; +begin + try + __Message.Read('SQL', TypeInfo(AnsiString), SQL, []); + + lResult := (__Instance as IDARemoteService).ExecuteSQLCommand(SQL); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract3', 'DARemoteService', 'ExecuteSQLCommandResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TDARemoteService_Invoker.Invoke_GetSchemaAsXML(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetSchemaAsXML: AnsiString; } +var + lResult: AnsiString; +begin + try + lResult := (__Instance as IDARemoteService).GetSchemaAsXML; + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract3', 'DARemoteService', 'GetSchemaAsXMLResponse'); + __Message.Write('Result', TypeInfo(AnsiString), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TDARemoteService_Invoker.Invoke_GetMultipleDatasets(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray): Binary; } +var + DatasetRequestInfoArray: DataAbstract3_Intf.TDADatasetRequestInfoArray; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + DatasetRequestInfoArray := nil; + lResult := nil; + try + __Message.Read('DatasetRequestInfoArray', TypeInfo(DataAbstract3_Intf.TDADatasetRequestInfoArray), DatasetRequestInfoArray, []); + + lResult := (__Instance as IDARemoteService).GetMultipleDatasets(DatasetRequestInfoArray); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract3', 'DARemoteService', 'GetMultipleDatasetsResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(DatasetRequestInfoArray); + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDARemoteService_Invoker.Invoke_ExecuteSQLCommandEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function ExecuteSQLCommandEx(const CommandName: AnsiString; const Params: TDADatasetParamArray): Integer; } +var + CommandName: AnsiString; + Params: DataAbstract3_Intf.TDADatasetParamArray; + lResult: Integer; + __lObjectDisposer: TROObjectDisposer; +begin + Params := nil; + try + __Message.Read('CommandName', TypeInfo(AnsiString), CommandName, []); + __Message.Read('Params', TypeInfo(DataAbstract3_Intf.TDADatasetParamArray), Params, []); + + lResult := (__Instance as IDARemoteService).ExecuteSQLCommandEx(CommandName, Params); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract3', 'DARemoteService', 'ExecuteSQLCommandExResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(Params); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +{ TDALoginService_Invoker } + +constructor TDALoginService_Invoker.Create; +begin + inherited Create; + FAbstract := True; +end; + +procedure TDALoginService_Invoker.Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function Login(const UserID: AnsiString; const Password: AnsiString; out LoginInfo: TDALoginInfo): Boolean; } +var + UserID: AnsiString; + Password: AnsiString; + LoginInfo: DataAbstract3_Intf.TDALoginInfo; + lResult: Boolean; + __lObjectDisposer: TROObjectDisposer; +begin + LoginInfo := nil; + try + __Message.Read('UserID', TypeInfo(AnsiString), UserID, []); + __Message.Read('Password', TypeInfo(AnsiString), Password, []); + + lResult := (__Instance as IDALoginService).Login(UserID, Password, LoginInfo); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract3', 'DALoginService', 'LoginResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Write('LoginInfo', TypeInfo(DataAbstract3_Intf.TDALoginInfo), LoginInfo, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(LoginInfo); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDALoginService_Invoker.Invoke_Logout(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure Logout; } +begin + try + (__Instance as IDALoginService).Logout; + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract3', 'DALoginService', 'LogoutResponse'); + __Message.Finalize; + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + +initialization +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract4.RODL b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract4.RODL new file mode 100644 index 0000000..d89329e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract4.RODL @@ -0,0 +1,317 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract4_Async.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract4_Async.pas new file mode 100644 index 0000000..3db4e4d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract4_Async.pas @@ -0,0 +1,645 @@ +unit DataAbstract4_Async; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROTypes, uROClientIntf, uROAsync, + {Project:} DataAbstract4_Intf; + +type + { IDataAbstractService_Async } + IDataAbstractService_Async = interface(IROAsyncInterface) + ['{B4C1D84D-1C6F-4E5A-8839-0C9F7EA5431B}'] + procedure Invoke_GetSchema(const aFilter: Utf8String); + procedure Invoke_GetData(const aTableNameArray: StringArray; const aTableRequestInfoArray: TableRequestInfoArray); + procedure Invoke_UpdateData(const aDelta: Binary); + procedure Invoke_ExecuteCommand(const aCommandName: Utf8String; const aParameterArray: DataParameterArray); + procedure Invoke_ExecuteCommandEx(const aCommandName: Utf8String; const aInputParameters: DataParameterArray); + procedure Invoke_GetTableSchema(const aTableNameArray: StringArray); + procedure Invoke_GetCommandSchema(const aCommandNameArray: StringArray); + procedure Invoke_SQLGetData(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer); + procedure Invoke_SQLGetDataEx(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer; const aDynamicWhereXML: Widestring); + procedure Invoke_SQLExecuteCommand(const aSQLText: Utf8String); + procedure Invoke_SQLExecuteCommandEx(const aSQLText: Utf8String; const aDynamicWhereXML: Widestring); + procedure Invoke_GetDatasetScripts(const DatasetNames: Utf8String); + procedure Invoke_RegisterForDataChangeNotification(const aTableName: Utf8String); + procedure Invoke_UnregisterForDataChangeNotification(const aTableName: Utf8String); + function Retrieve_GetSchema: Utf8String; + function Retrieve_GetData: Binary; + function Retrieve_UpdateData: Binary; + function Retrieve_ExecuteCommand: Integer; + function Retrieve_ExecuteCommandEx(out aOutputParameters: DataParameterArray): Integer; + function Retrieve_GetTableSchema: Utf8String; + function Retrieve_GetCommandSchema: Utf8String; + function Retrieve_SQLGetData: Binary; + function Retrieve_SQLGetDataEx: Binary; + function Retrieve_SQLExecuteCommand: Integer; + function Retrieve_SQLExecuteCommandEx: Integer; + function Retrieve_GetDatasetScripts: Utf8String; + end; + + { IBaseLoginService_Async } + IBaseLoginService_Async = interface(IROAsyncInterface) + ['{45A761A3-80E9-43E6-86BC-E96693551453}'] + procedure Invoke_Logout; + end; + + { IMultiDbLoginService_Async } + IMultiDbLoginService_Async = interface(IBaseLoginService_Async) + ['{8EBB1878-ECD9-4F4E-8A87-E26D51FD0ADD}'] + procedure Invoke_Login(const aUserID: Utf8String; const aPassword: Utf8String; const aConnectionName: Utf8String); + function Retrieve_Login(out aUserInfo: UserInfo): Boolean; + end; + + { IMultiDbLoginServiceV5_Async } + IMultiDbLoginServiceV5_Async = interface(IMultiDbLoginService_Async) + ['{292C3E8B-B263-4D95-9EE6-41DA014ACDF3}'] + procedure Invoke_GetConnectionNames; + procedure Invoke_GetDefaultConnectionName; + function Retrieve_GetConnectionNames: StringArray; + function Retrieve_GetDefaultConnectionName: Utf8String; + end; + + { ISimpleLoginService_Async } + ISimpleLoginService_Async = interface(IBaseLoginService_Async) + ['{74BC5406-7AA7-45CD-8012-193C38DF62E9}'] + procedure Invoke_Login(const aUserID: Utf8String; const aPassword: Utf8String); + function Retrieve_Login(out aUserInfo: UserInfo): Boolean; + end; + + { CoDataAbstractService_Async } + CoDataAbstractService_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDataAbstractService_Async; + end; + + { CoBaseLoginService_Async } + CoBaseLoginService_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IBaseLoginService_Async; + end; + + { CoMultiDbLoginService_Async } + CoMultiDbLoginService_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMultiDbLoginService_Async; + end; + + { CoMultiDbLoginServiceV5_Async } + CoMultiDbLoginServiceV5_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMultiDbLoginServiceV5_Async; + end; + + { CoSimpleLoginService_Async } + CoSimpleLoginService_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ISimpleLoginService_Async; + end; + + { TDataAbstractService_AsyncProxy } + TDataAbstractService_AsyncProxy = class(TROAsyncProxy, IDataAbstractService_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_GetSchema(const aFilter: Utf8String); + procedure Invoke_GetData(const aTableNameArray: StringArray; const aTableRequestInfoArray: TableRequestInfoArray); + procedure Invoke_UpdateData(const aDelta: Binary); + procedure Invoke_ExecuteCommand(const aCommandName: Utf8String; const aParameterArray: DataParameterArray); + procedure Invoke_ExecuteCommandEx(const aCommandName: Utf8String; const aInputParameters: DataParameterArray); + procedure Invoke_GetTableSchema(const aTableNameArray: StringArray); + procedure Invoke_GetCommandSchema(const aCommandNameArray: StringArray); + procedure Invoke_SQLGetData(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer); + procedure Invoke_SQLGetDataEx(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer; const aDynamicWhereXML: Widestring); + procedure Invoke_SQLExecuteCommand(const aSQLText: Utf8String); + procedure Invoke_SQLExecuteCommandEx(const aSQLText: Utf8String; const aDynamicWhereXML: Widestring); + procedure Invoke_GetDatasetScripts(const DatasetNames: Utf8String); + procedure Invoke_RegisterForDataChangeNotification(const aTableName: Utf8String); + procedure Invoke_UnregisterForDataChangeNotification(const aTableName: Utf8String); + function Retrieve_GetSchema: Utf8String; + function Retrieve_GetData: Binary; + function Retrieve_UpdateData: Binary; + function Retrieve_ExecuteCommand: Integer; + function Retrieve_ExecuteCommandEx(out aOutputParameters: DataParameterArray): Integer; + function Retrieve_GetTableSchema: Utf8String; + function Retrieve_GetCommandSchema: Utf8String; + function Retrieve_SQLGetData: Binary; + function Retrieve_SQLGetDataEx: Binary; + function Retrieve_SQLExecuteCommand: Integer; + function Retrieve_SQLExecuteCommandEx: Integer; + function Retrieve_GetDatasetScripts: Utf8String; + end; + + { TBaseLoginService_AsyncProxy } + TBaseLoginService_AsyncProxy = class(TROAsyncProxy, IBaseLoginService_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_Logout; + end; + + { TMultiDbLoginService_AsyncProxy } + TMultiDbLoginService_AsyncProxy = class(TBaseLoginService_AsyncProxy, IMultiDbLoginService_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_Login(const aUserID: Utf8String; const aPassword: Utf8String; const aConnectionName: Utf8String); + function Retrieve_Login(out aUserInfo: UserInfo): Boolean; + end; + + { TMultiDbLoginServiceV5_AsyncProxy } + TMultiDbLoginServiceV5_AsyncProxy = class(TMultiDbLoginService_AsyncProxy, IMultiDbLoginServiceV5_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_GetConnectionNames; + procedure Invoke_GetDefaultConnectionName; + function Retrieve_GetConnectionNames: StringArray; + function Retrieve_GetDefaultConnectionName: Utf8String; + end; + + { TSimpleLoginService_AsyncProxy } + TSimpleLoginService_AsyncProxy = class(TBaseLoginService_AsyncProxy, ISimpleLoginService_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_Login(const aUserID: Utf8String; const aPassword: Utf8String); + function Retrieve_Login(out aUserInfo: UserInfo): Boolean; + end; + +implementation + +uses + {vcl:} SysUtils; + +{ CoDataAbstractService } + +class function CoDataAbstractService_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDataAbstractService_Async; +begin + result := TDataAbstractService_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TDataAbstractService_AsyncProxy } + +function TDataAbstractService_AsyncProxy.__GetInterfaceName:string; +begin + result := 'DataAbstractService'; +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_GetSchema(const aFilter: Utf8String); +begin + __AssertProxyNotBusy('GetSchema'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetSchema'); + __Message.Write('aFilter', TypeInfo(Utf8String), aFilter, []); + __DispatchAsyncRequest('GetSchema',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_GetSchema: Utf8String; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('GetSchema'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Utf8String), Result, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_GetData(const aTableNameArray: StringArray; const aTableRequestInfoArray: TableRequestInfoArray); +begin + __AssertProxyNotBusy('GetData'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetData'); + __Message.Write('aTableNameArray', TypeInfo(StringArray), aTableNameArray, []); + __Message.Write('aTableRequestInfoArray', TypeInfo(TableRequestInfoArray), aTableRequestInfoArray, []); + __DispatchAsyncRequest('GetData',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_GetData: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('GetData'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_UpdateData(const aDelta: Binary); +begin + __AssertProxyNotBusy('UpdateData'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'UpdateData'); + __Message.Write('aDelta', TypeInfo(Binary), aDelta, []); + __DispatchAsyncRequest('UpdateData',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_UpdateData: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('UpdateData'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_ExecuteCommand(const aCommandName: Utf8String; const aParameterArray: DataParameterArray); +begin + __AssertProxyNotBusy('ExecuteCommand'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'ExecuteCommand'); + __Message.Write('aCommandName', TypeInfo(Utf8String), aCommandName, []); + __Message.Write('aParameterArray', TypeInfo(DataParameterArray), aParameterArray, []); + __DispatchAsyncRequest('ExecuteCommand',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_ExecuteCommand: Integer; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('ExecuteCommand'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), Result, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_ExecuteCommandEx(const aCommandName: Utf8String; const aInputParameters: DataParameterArray); +begin + __AssertProxyNotBusy('ExecuteCommandEx'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'ExecuteCommandEx'); + __Message.Write('aCommandName', TypeInfo(Utf8String), aCommandName, []); + __Message.Write('aInputParameters', TypeInfo(DataParameterArray), aInputParameters, []); + __DispatchAsyncRequest('ExecuteCommandEx',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_ExecuteCommandEx(out aOutputParameters: DataParameterArray): Integer; +var __response:TStream; +begin + aOutputParameters := nil; + __response := __RetrieveAsyncResponse('ExecuteCommandEx'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), Result, []); + __Message.Read('aOutputParameters', TypeInfo(DataParameterArray), aOutputParameters, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_GetTableSchema(const aTableNameArray: StringArray); +begin + __AssertProxyNotBusy('GetTableSchema'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetTableSchema'); + __Message.Write('aTableNameArray', TypeInfo(StringArray), aTableNameArray, []); + __DispatchAsyncRequest('GetTableSchema',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_GetTableSchema: Utf8String; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('GetTableSchema'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Utf8String), Result, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_GetCommandSchema(const aCommandNameArray: StringArray); +begin + __AssertProxyNotBusy('GetCommandSchema'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetCommandSchema'); + __Message.Write('aCommandNameArray', TypeInfo(StringArray), aCommandNameArray, []); + __DispatchAsyncRequest('GetCommandSchema',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_GetCommandSchema: Utf8String; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('GetCommandSchema'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Utf8String), Result, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_SQLGetData(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer); +begin + __AssertProxyNotBusy('SQLGetData'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'SQLGetData'); + __Message.Write('aSQLText', TypeInfo(Utf8String), aSQLText, []); + __Message.Write('aIncludeSchema', TypeInfo(Boolean), aIncludeSchema, []); + __Message.Write('aMaxRecords', TypeInfo(Integer), aMaxRecords, []); + __DispatchAsyncRequest('SQLGetData',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_SQLGetData: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('SQLGetData'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_SQLGetDataEx(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer; const aDynamicWhereXML: Widestring); +begin + __AssertProxyNotBusy('SQLGetDataEx'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'SQLGetDataEx'); + __Message.Write('aSQLText', TypeInfo(Utf8String), aSQLText, []); + __Message.Write('aIncludeSchema', TypeInfo(Boolean), aIncludeSchema, []); + __Message.Write('aMaxRecords', TypeInfo(Integer), aMaxRecords, []); + __Message.Write('aDynamicWhereXML', TypeInfo(Widestring), aDynamicWhereXML, []); + __DispatchAsyncRequest('SQLGetDataEx',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_SQLGetDataEx: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('SQLGetDataEx'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_SQLExecuteCommand(const aSQLText: Utf8String); +begin + __AssertProxyNotBusy('SQLExecuteCommand'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'SQLExecuteCommand'); + __Message.Write('aSQLText', TypeInfo(Utf8String), aSQLText, []); + __DispatchAsyncRequest('SQLExecuteCommand',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_SQLExecuteCommand: Integer; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('SQLExecuteCommand'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), Result, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_SQLExecuteCommandEx(const aSQLText: Utf8String; const aDynamicWhereXML: Widestring); +begin + __AssertProxyNotBusy('SQLExecuteCommandEx'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'SQLExecuteCommandEx'); + __Message.Write('aSQLText', TypeInfo(Utf8String), aSQLText, []); + __Message.Write('aDynamicWhereXML', TypeInfo(Widestring), aDynamicWhereXML, []); + __DispatchAsyncRequest('SQLExecuteCommandEx',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_SQLExecuteCommandEx: Integer; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('SQLExecuteCommandEx'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), Result, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_GetDatasetScripts(const DatasetNames: Utf8String); +begin + __AssertProxyNotBusy('GetDatasetScripts'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetDatasetScripts'); + __Message.Write('DatasetNames', TypeInfo(Utf8String), DatasetNames, []); + __DispatchAsyncRequest('GetDatasetScripts',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_GetDatasetScripts: Utf8String; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('GetDatasetScripts'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Utf8String), Result, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_RegisterForDataChangeNotification(const aTableName: Utf8String); +begin + __AssertProxyNotBusy('RegisterForDataChangeNotification'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'RegisterForDataChangeNotification'); + __Message.Write('aTableName', TypeInfo(Utf8String), aTableName, []); + __DispatchAsyncRequest('RegisterForDataChangeNotification',__Message, false); + __Message.UnsetAttributes(__TransportChannel); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_UnregisterForDataChangeNotification(const aTableName: Utf8String); +begin + __AssertProxyNotBusy('UnregisterForDataChangeNotification'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'UnregisterForDataChangeNotification'); + __Message.Write('aTableName', TypeInfo(Utf8String), aTableName, []); + __DispatchAsyncRequest('UnregisterForDataChangeNotification',__Message, false); + __Message.UnsetAttributes(__TransportChannel); +end; + + +{ CoSimpleLoginService } + +class function CoSimpleLoginService_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ISimpleLoginService_Async; +begin + result := TSimpleLoginService_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TSimpleLoginService_AsyncProxy } + +function TSimpleLoginService_AsyncProxy.__GetInterfaceName:string; +begin + result := 'SimpleLoginService'; +end; + +procedure TSimpleLoginService_AsyncProxy.Invoke_Login(const aUserID: Utf8String; const aPassword: Utf8String); +begin + __AssertProxyNotBusy('Login'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'Login'); + __Message.Write('aUserID', TypeInfo(Utf8String), aUserID, []); + __Message.Write('aPassword', TypeInfo(Utf8String), aPassword, []); + __DispatchAsyncRequest('Login',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TSimpleLoginService_AsyncProxy.Retrieve_Login(out aUserInfo: UserInfo): Boolean; +var __response:TStream; +begin + aUserInfo := nil; + __response := __RetrieveAsyncResponse('Login'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), Result, []); + __Message.Read('aUserInfo', TypeInfo(UserInfo), aUserInfo, []); + + __response.Free(); +end; + + +{ CoBaseLoginService } + +class function CoBaseLoginService_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IBaseLoginService_Async; +begin + result := TBaseLoginService_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TBaseLoginService_AsyncProxy } + +function TBaseLoginService_AsyncProxy.__GetInterfaceName:string; +begin + result := 'BaseLoginService'; +end; + +procedure TBaseLoginService_AsyncProxy.Invoke_Logout; +begin + __AssertProxyNotBusy('Logout'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'Logout'); + __DispatchAsyncRequest('Logout',__Message, false); +end; + + +{ CoMultiDbLoginService } + +class function CoMultiDbLoginService_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMultiDbLoginService_Async; +begin + result := TMultiDbLoginService_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TMultiDbLoginService_AsyncProxy } + +function TMultiDbLoginService_AsyncProxy.__GetInterfaceName:string; +begin + result := 'MultiDbLoginService'; +end; + +procedure TMultiDbLoginService_AsyncProxy.Invoke_Login(const aUserID: Utf8String; const aPassword: Utf8String; const aConnectionName: Utf8String); +begin + __AssertProxyNotBusy('Login'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'Login'); + __Message.Write('aUserID', TypeInfo(Utf8String), aUserID, []); + __Message.Write('aPassword', TypeInfo(Utf8String), aPassword, []); + __Message.Write('aConnectionName', TypeInfo(Utf8String), aConnectionName, []); + __DispatchAsyncRequest('Login',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TMultiDbLoginService_AsyncProxy.Retrieve_Login(out aUserInfo: UserInfo): Boolean; +var __response:TStream; +begin + aUserInfo := nil; + __response := __RetrieveAsyncResponse('Login'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), Result, []); + __Message.Read('aUserInfo', TypeInfo(UserInfo), aUserInfo, []); + + __response.Free(); +end; + + +{ CoMultiDbLoginServiceV5 } + +class function CoMultiDbLoginServiceV5_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMultiDbLoginServiceV5_Async; +begin + result := TMultiDbLoginServiceV5_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TMultiDbLoginServiceV5_AsyncProxy } + +function TMultiDbLoginServiceV5_AsyncProxy.__GetInterfaceName:string; +begin + result := 'MultiDbLoginServiceV5'; +end; + +procedure TMultiDbLoginServiceV5_AsyncProxy.Invoke_GetConnectionNames; +begin + __AssertProxyNotBusy('GetConnectionNames'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetConnectionNames'); + __DispatchAsyncRequest('GetConnectionNames',__Message); +end; + +function TMultiDbLoginServiceV5_AsyncProxy.Retrieve_GetConnectionNames: StringArray; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('GetConnectionNames'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(StringArray), Result, []); + + __response.Free(); +end; + +procedure TMultiDbLoginServiceV5_AsyncProxy.Invoke_GetDefaultConnectionName; +begin + __AssertProxyNotBusy('GetDefaultConnectionName'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetDefaultConnectionName'); + __DispatchAsyncRequest('GetDefaultConnectionName',__Message); +end; + +function TMultiDbLoginServiceV5_AsyncProxy.Retrieve_GetDefaultConnectionName: Utf8String; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('GetDefaultConnectionName'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Utf8String), Result, []); + + __response.Free(); +end; + + +initialization +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract4_Intf.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract4_Intf.pas new file mode 100644 index 0000000..8e43d28 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract4_Intf.pas @@ -0,0 +1,2368 @@ +unit DataAbstract4_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf; + +const + { Library ID } + LibraryUID = '{DC8B7BE2-14AF-402D-B1F8-E1008B6FA4F6}'; + TargetNamespace = ''; + + { Service Interface ID's } + IDataAbstractService_IID : TGUID = '{4C2EC238-4FB4-434E-8CFF-ED25EEFF1525}'; + ISimpleLoginService_IID : TGUID = '{B186853B-168B-4E33-B798-467444BFC8C6}'; + IBaseLoginService_IID : TGUID = '{C349DB54-9DFB-454E-AD23-6F2166A624A6}'; + IMultiDbLoginService_IID : TGUID = '{2C6D5764-01CE-447A-8264-27210B2C7371}'; + IMultiDbLoginServiceV5_IID : TGUID = '{5A78AB01-2097-4473-A4D5-78980FFD90E4}'; + + { Event ID's } + EID_DataChangeNotification = 'DataChangeNotification'; + +type + { Forward declarations } + IDataAbstractService = interface; + ISimpleLoginService = interface; + IBaseLoginService = interface; + IMultiDbLoginService = interface; + IMultiDbLoginServiceV5 = interface; + + DataParameterArray = class; + TableRequestInfoArray = class; + StringArray = class; + VariantArray = class; + ColumnSortingArray = class; + + DataParameter = class; + TableRequestInfo = class; + UserInfo = class; + TableRequestInfoV5 = class; + ColumnSorting = class; + + IDataChangeNotification = interface; + + + { Enumerateds } + ColumnSortDirection = (ColumnSortDirection_Ascending,ColumnSortDirection_Descending); + + { DataParameter } + DataParameter = class(TROComplexType) + private + fName: Utf8String; + fValue: Variant; + public + procedure Assign(iSource: TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property Name:Utf8String read fName write fName; + property Value:Variant read fValue write fValue; + end; + + { DataParameterCollection } + DataParameterCollection = class(TROCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(aIndex: integer): DataParameter; + procedure SetItems(aIndex: integer; const Value: DataParameter); + public + constructor Create; overload; + function Add: DataParameter; reintroduce; + procedure SaveToArray(anArray: DataParameterArray); + procedure LoadFromArray(anArray: DataParameterArray); + property Items[Index: integer]:DataParameter read GetItems write SetItems; default; + end; + + { TableRequestInfo } + TableRequestInfo = class(TROComplexType) + private + fUserFilter: Utf8String; + fIncludeSchema: Boolean; + fMaxRecords: Integer; + fParameters: DataParameterArray; + function GetParameters: DataParameterArray; + public + constructor Create(aCollection : TCollection); override; + procedure Assign(iSource: TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property UserFilter:Utf8String read fUserFilter write fUserFilter; + property IncludeSchema:Boolean read fIncludeSchema write fIncludeSchema; + property MaxRecords:Integer read fMaxRecords write fMaxRecords; + property Parameters:DataParameterArray read GetParameters write fParameters; + end; + + { TableRequestInfoCollection } + TableRequestInfoCollection = class(TROCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(aIndex: integer): TableRequestInfo; + procedure SetItems(aIndex: integer; const Value: TableRequestInfo); + public + constructor Create; overload; + function Add: TableRequestInfo; reintroduce; + procedure SaveToArray(anArray: TableRequestInfoArray); + procedure LoadFromArray(anArray: TableRequestInfoArray); + property Items[Index: integer]:TableRequestInfo read GetItems write SetItems; default; + end; + + { TableRequestInfoV5 } + TableRequestInfoV5 = class(TableRequestInfo) + private + fWhereClause: IXmlNode; + fDynamicSelectFieldNames: StringArray; + fSorting: ColumnSorting; + function GetDynamicSelectFieldNames: StringArray; + function GetSorting: ColumnSorting; + public + procedure Assign(iSource: TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property WhereClause:IXmlNode read fWhereClause write fWhereClause; + property DynamicSelectFieldNames:StringArray read GetDynamicSelectFieldNames write fDynamicSelectFieldNames; + property Sorting:ColumnSorting read GetSorting write fSorting; + end; + + { TableRequestInfoV5Collection } + TableRequestInfoV5Collection = class(TableRequestInfoCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(aIndex: integer): TableRequestInfoV5; + procedure SetItems(aIndex: integer; const Value: TableRequestInfoV5); + public + constructor Create; overload; + function Add: TableRequestInfoV5; reintroduce; + property Items[Index: integer]:TableRequestInfoV5 read GetItems write SetItems; default; + end; + + { UserInfo } + UserInfo = class(TROComplexType) + private + fSessionID: Utf8String; + fUserID: Utf8String; + fPrivileges: StringArray; + fAttributes: VariantArray; + fUserData: Binary; + function GetPrivileges: StringArray; + function GetAttributes: VariantArray; + function GetUserData: Binary; + public + procedure Assign(iSource: TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property SessionID:Utf8String read fSessionID write fSessionID; + property UserID:Utf8String read fUserID write fUserID; + property Privileges:StringArray read GetPrivileges write fPrivileges; + property Attributes:VariantArray read GetAttributes write fAttributes; + property UserData:Binary read GetUserData write fUserData; + end; + + { UserInfoCollection } + UserInfoCollection = class(TROCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(aIndex: integer): UserInfo; + procedure SetItems(aIndex: integer; const Value: UserInfo); + public + constructor Create; overload; + function Add: UserInfo; reintroduce; + property Items[Index: integer]:UserInfo read GetItems write SetItems; default; + end; + + { ColumnSorting } + ColumnSorting = class(TROComplexType) + private + fFieldName: Utf8String; + fSortDirection: ColumnSortDirection; + public + procedure Assign(iSource: TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property FieldName:Utf8String read fFieldName write fFieldName; + property SortDirection:ColumnSortDirection read fSortDirection write fSortDirection; + end; + + { ColumnSortingCollection } + ColumnSortingCollection = class(TROCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(aIndex: integer): ColumnSorting; + procedure SetItems(aIndex: integer; const Value: ColumnSorting); + public + constructor Create; overload; + function Add: ColumnSorting; reintroduce; + procedure SaveToArray(anArray: ColumnSortingArray); + procedure LoadFromArray(anArray: ColumnSortingArray); + property Items[Index: integer]:ColumnSorting read GetItems write SetItems; default; + end; + + { DataParameterArray } + DataParameterArray_DataParameter = array of DataParameter; + DataParameterArray = class(TROArray) + private + fCount: Integer; + fItems : DataParameterArray_DataParameter; + protected + procedure Grow; virtual; + function GetItems(aIndex: integer): DataParameter; + procedure SetItems(aIndex: integer; const Value: DataParameter); + function GetCount: integer; override; + public + class function GetItemType: PTypeInfo; override; + class function GetItemClass: TClass; override; + class function GetItemSize: integer; override; + + function GetItemRef(aIndex: integer): pointer; override; + procedure SetItemRef(aIndex: integer; Ref: pointer); override; + procedure Clear; override; + procedure Delete(aIndex: integer); override; + procedure Resize(ElementCount: integer); override; + + procedure Assign(iSource:TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + function Add: DataParameter; overload; + function Add(const Value: DataParameter):integer; overload; + + property Count : integer read GetCount; + property Items[Index: integer]:DataParameter read GetItems write SetItems; default; + property InnerArray: DataParameterArray_DataParameter read fItems; + end; + + { TableRequestInfoArray } + TableRequestInfoArray_TableRequestInfo = array of TableRequestInfo; + TableRequestInfoArray = class(TROArray) + private + fCount: Integer; + fItems : TableRequestInfoArray_TableRequestInfo; + protected + procedure Grow; virtual; + function GetItems(aIndex: integer): TableRequestInfo; + procedure SetItems(aIndex: integer; const Value: TableRequestInfo); + function GetCount: integer; override; + public + class function GetItemType: PTypeInfo; override; + class function GetItemClass: TClass; override; + class function GetItemSize: integer; override; + + function GetItemRef(aIndex: integer): pointer; override; + procedure SetItemRef(aIndex: integer; Ref: pointer); override; + procedure Clear; override; + procedure Delete(aIndex: integer); override; + procedure Resize(ElementCount: integer); override; + + procedure Assign(iSource:TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + function Add: TableRequestInfo; overload; + function Add(const Value: TableRequestInfo):integer; overload; + + property Count : integer read GetCount; + property Items[Index: integer]:TableRequestInfo read GetItems write SetItems; default; + property InnerArray: TableRequestInfoArray_TableRequestInfo read fItems; + end; + + { StringArray } + StringArray_Utf8String = array of Utf8String; + StringArray = class(TROArray) + private + fCount: Integer; + fItems : StringArray_Utf8String; + protected + procedure Grow; virtual; + function GetItems(aIndex: integer): Utf8String; + procedure SetItems(aIndex: integer; const Value: Utf8String); + function GetCount: integer; override; + public + class function GetItemType: PTypeInfo; override; + class function GetItemSize: integer; override; + + function GetItemRef(aIndex: integer): pointer; override; + procedure Clear; override; + procedure Delete(aIndex: integer); override; + procedure Resize(ElementCount: integer); override; + + procedure Assign(iSource:TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + function Add(const Value:Utf8String): integer; + function GetIndex(const aPropertyName : string; + const aPropertyValue : Variant; + StartFrom : integer = 0; + Options : TROSearchOptions = [soIgnoreCase]) : integer; override; + + property Count : integer read GetCount; + property Items[Index: integer]:Utf8String read GetItems write SetItems; default; + property InnerArray: StringArray_Utf8String read fItems; + end; + + { VariantArray } + VariantArray_Variant = array of Variant; + VariantArray = class(TROArray) + private + fCount: Integer; + fItems : VariantArray_Variant; + protected + procedure Grow; virtual; + function GetItems(aIndex: integer): Variant; + procedure SetItems(aIndex: integer; const Value: Variant); + function GetCount: integer; override; + public + class function GetItemType: PTypeInfo; override; + class function GetItemSize: integer; override; + + function GetItemRef(aIndex: integer): pointer; override; + procedure Clear; override; + procedure Delete(aIndex: integer); override; + procedure Resize(ElementCount: integer); override; + + procedure Assign(iSource:TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + function Add(const Value:Variant): integer; + function GetIndex(const aPropertyName : string; + const aPropertyValue : Variant; + StartFrom : integer = 0; + Options : TROSearchOptions = [soIgnoreCase]) : integer; override; + + property Count : integer read GetCount; + property Items[Index: integer]:Variant read GetItems write SetItems; default; + property InnerArray: VariantArray_Variant read fItems; + end; + + { ColumnSortingArray } + ColumnSortingArray_ColumnSorting = array of ColumnSorting; + ColumnSortingArray = class(TROArray) + private + fCount: Integer; + fItems : ColumnSortingArray_ColumnSorting; + protected + procedure Grow; virtual; + function GetItems(aIndex: integer): ColumnSorting; + procedure SetItems(aIndex: integer; const Value: ColumnSorting); + function GetCount: integer; override; + public + class function GetItemType: PTypeInfo; override; + class function GetItemClass: TClass; override; + class function GetItemSize: integer; override; + + function GetItemRef(aIndex: integer): pointer; override; + procedure SetItemRef(aIndex: integer; Ref: pointer); override; + procedure Clear; override; + procedure Delete(aIndex: integer); override; + procedure Resize(ElementCount: integer); override; + + procedure Assign(iSource:TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + function Add: ColumnSorting; overload; + function Add(const Value: ColumnSorting):integer; overload; + + property Count : integer read GetCount; + property Items[Index: integer]:ColumnSorting read GetItems write SetItems; default; + property InnerArray: ColumnSortingArray_ColumnSorting read fItems; + end; + + { IDataAbstractService } + IDataAbstractService = interface + ['{4C2EC238-4FB4-434E-8CFF-ED25EEFF1525}'] + function GetSchema(const aFilter: Utf8String): Utf8String; + function GetData(const aTableNameArray: StringArray; const aTableRequestInfoArray: TableRequestInfoArray): Binary; + function UpdateData(const aDelta: Binary): Binary; + function ExecuteCommand(const aCommandName: Utf8String; const aParameterArray: DataParameterArray): Integer; + function ExecuteCommandEx(const aCommandName: Utf8String; const aInputParameters: DataParameterArray; out aOutputParameters: DataParameterArray): Integer; + function GetTableSchema(const aTableNameArray: StringArray): Utf8String; + function GetCommandSchema(const aCommandNameArray: StringArray): Utf8String; + function SQLGetData(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer): Binary; + function SQLGetDataEx(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer; const aDynamicWhereXML: Widestring): Binary; + function SQLExecuteCommand(const aSQLText: Utf8String): Integer; + function SQLExecuteCommandEx(const aSQLText: Utf8String; const aDynamicWhereXML: Widestring): Integer; + function GetDatasetScripts(const DatasetNames: Utf8String): Utf8String; + procedure RegisterForDataChangeNotification(const aTableName: Utf8String); + procedure UnregisterForDataChangeNotification(const aTableName: Utf8String); + end; + + { CoDataAbstractService } + CoDataAbstractService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDataAbstractService; + end; + + { TDataAbstractService_Proxy } + TDataAbstractService_Proxy = class(TROProxy, IDataAbstractService) + protected + function __GetInterfaceName:string; override; + + function GetSchema(const aFilter: Utf8String): Utf8String; + function GetData(const aTableNameArray: StringArray; const aTableRequestInfoArray: TableRequestInfoArray): Binary; + function UpdateData(const aDelta: Binary): Binary; + function ExecuteCommand(const aCommandName: Utf8String; const aParameterArray: DataParameterArray): Integer; + function ExecuteCommandEx(const aCommandName: Utf8String; const aInputParameters: DataParameterArray; out aOutputParameters: DataParameterArray): Integer; + function GetTableSchema(const aTableNameArray: StringArray): Utf8String; + function GetCommandSchema(const aCommandNameArray: StringArray): Utf8String; + function SQLGetData(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer): Binary; + function SQLGetDataEx(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer; const aDynamicWhereXML: Widestring): Binary; + function SQLExecuteCommand(const aSQLText: Utf8String): Integer; + function SQLExecuteCommandEx(const aSQLText: Utf8String; const aDynamicWhereXML: Widestring): Integer; + function GetDatasetScripts(const DatasetNames: Utf8String): Utf8String; + procedure RegisterForDataChangeNotification(const aTableName: Utf8String); + procedure UnregisterForDataChangeNotification(const aTableName: Utf8String); + end; + + { IBaseLoginService } + IBaseLoginService = interface + ['{C349DB54-9DFB-454E-AD23-6F2166A624A6}'] + procedure Logout; + end; + + { CoBaseLoginService } + CoBaseLoginService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IBaseLoginService; + end; + + { TBaseLoginService_Proxy } + TBaseLoginService_Proxy = class(TROProxy, IBaseLoginService) + protected + function __GetInterfaceName:string; override; + + procedure Logout; + end; + + { IMultiDbLoginService } + IMultiDbLoginService = interface(IBaseLoginService) + ['{2C6D5764-01CE-447A-8264-27210B2C7371}'] + function Login(const aUserID: Utf8String; const aPassword: Utf8String; const aConnectionName: Utf8String; out aUserInfo: UserInfo): Boolean; + end; + + { CoMultiDbLoginService } + CoMultiDbLoginService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMultiDbLoginService; + end; + + { TMultiDbLoginService_Proxy } + TMultiDbLoginService_Proxy = class(TBaseLoginService_Proxy, IMultiDbLoginService) + protected + function __GetInterfaceName:string; override; + + function Login(const aUserID: Utf8String; const aPassword: Utf8String; const aConnectionName: Utf8String; out aUserInfo: UserInfo): Boolean; + end; + + { IMultiDbLoginServiceV5 } + IMultiDbLoginServiceV5 = interface(IMultiDbLoginService) + ['{5A78AB01-2097-4473-A4D5-78980FFD90E4}'] + function GetConnectionNames: StringArray; + function GetDefaultConnectionName: Utf8String; + end; + + { CoMultiDbLoginServiceV5 } + CoMultiDbLoginServiceV5 = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMultiDbLoginServiceV5; + end; + + { TMultiDbLoginServiceV5_Proxy } + TMultiDbLoginServiceV5_Proxy = class(TMultiDbLoginService_Proxy, IMultiDbLoginServiceV5) + protected + function __GetInterfaceName:string; override; + + function GetConnectionNames: StringArray; + function GetDefaultConnectionName: Utf8String; + end; + + { ISimpleLoginService } + ISimpleLoginService = interface(IBaseLoginService) + ['{B186853B-168B-4E33-B798-467444BFC8C6}'] + function Login(const aUserID: Utf8String; const aPassword: Utf8String; out aUserInfo: UserInfo): Boolean; + end; + + { CoSimpleLoginService } + CoSimpleLoginService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ISimpleLoginService; + end; + + { TSimpleLoginService_Proxy } + TSimpleLoginService_Proxy = class(TBaseLoginService_Proxy, ISimpleLoginService) + protected + function __GetInterfaceName:string; override; + + function Login(const aUserID: Utf8String; const aPassword: Utf8String; out aUserInfo: UserInfo): Boolean; + end; + + { IDataChangeNotification } + IDataChangeNotification = interface + ['{1309480C-AEF8-48E0-A27F-E6090F441B46}'] + procedure OnDataTableChanged(const aTableName: Utf8String; const aDelta: Binary); + end; + + { IDataChangeNotification_Writer } + IDataChangeNotification_Writer = interface(IROEventWriter) + ['{1309480C-AEF8-48E0-A27F-E6090F441B46}'] + procedure OnDataTableChanged(const __Sender : TGUID; const aTableName: Utf8String; const aDelta: Binary); + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uROSerializer, uRORes; + +{ DataParameterArray } + +procedure DataParameterArray.Assign(iSource: TPersistent); +var lSource:DataParameterArray; + i:integer; +begin + if (iSource is DataParameterArray) then begin + lSource := DataParameterArray(iSource); + Clear(); + Resize(lSource.Count); + + for i := 0 to Count-1 do begin + if Assigned(lSource.Items[i]) then begin + Items[i].Assign(lSource.Items[i]); + end; + end; + end + else begin + inherited Assign(iSource); + end; +end; + +class function DataParameterArray.GetItemType: PTypeInfo; +begin + result := TypeInfo(DataParameter); +end; + +class function DataParameterArray.GetItemClass: TClass; +begin + result := DataParameter; +end; + +class function DataParameterArray.GetItemSize: integer; +begin + result := SizeOf(DataParameter); +end; + +function DataParameterArray.GetItems(aIndex: integer): DataParameter; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +function DataParameterArray.GetItemRef(aIndex: integer): pointer; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +procedure DataParameterArray.SetItemRef(aIndex: integer; Ref: pointer); +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if Ref <> fItems[aIndex] then begin + if fItems[aIndex] <> nil then fItems[aIndex].Free; + fItems[aIndex] := Ref; + end; +end; + +procedure DataParameterArray.Clear; +var i: integer; +begin + for i := 0 to (Count-1) do fItems[i].Free(); + SetLength(fItems, 0); + FCount := 0; +end; + +procedure DataParameterArray.Delete(aIndex: integer); +var i: integer; +begin + if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]); + + fItems[aIndex].Free(); + + if (aIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if fItems[aIndex] <> Value then begin + fItems[aIndex].Free; + fItems[aIndex] := Value; + end; +end; + +procedure DataParameterArray.Resize(ElementCount: integer); +var i: Integer; +begin + if fCount = ElementCount then Exit; + for i := FCount -1 downto ElementCount do + FItems[i].Free; + SetLength(fItems, ElementCount); + for i := FCount to ElementCount -1 do + FItems[i] := DataParameter.Create; + FCount := ElementCount; +end; + +function DataParameterArray.GetCount: integer; +begin + result := FCount; +end; + +procedure DataParameterArray.Grow; +var + Delta, Capacity: Integer; +begin + Capacity := Length(fItems); + if Capacity > 64 then + Delta := Capacity div 4 + else + if Capacity > 8 then + Delta := 16 + else + Delta := 4; + SetLength(fItems, Capacity + Delta); +end; + +function DataParameterArray.Add: DataParameter; +begin + result := DataParameter.Create; + Add(Result); +end; + +function DataParameterArray.Add(const Value:DataParameter): integer; +begin + Result := Count; + if Length(fItems) = Result then + Grow; + fItems[result] := Value; + Inc(fCount); +end; + +procedure DataParameterArray.ReadComplex(ASerializer: TObject); +var + lval: DataParameter; + i: integer; +begin + for i := 0 to Count-1 do begin + with TROSerializer(ASerializer) do + ReadStruct(GetArrayElementName(GetItemType, GetItemRef(i)), DataParameter, lval, i); + Items[i] := lval; + end; +end; + +procedure DataParameterArray.WriteComplex(ASerializer: TObject); +var + i: integer; +begin + for i := 0 to Count-1 do + with TROSerializer(ASerializer) do + WriteStruct(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], DataParameter, i); +end; + +{ TableRequestInfoArray } + +procedure TableRequestInfoArray.Assign(iSource: TPersistent); +var lSource:TableRequestInfoArray; + i:integer; +begin + if (iSource is TableRequestInfoArray) then begin + lSource := TableRequestInfoArray(iSource); + Clear(); + Resize(lSource.Count); + + for i := 0 to Count-1 do begin + if Assigned(lSource.Items[i]) then begin + Items[i].Assign(lSource.Items[i]); + end; + end; + end + else begin + inherited Assign(iSource); + end; +end; + +class function TableRequestInfoArray.GetItemType: PTypeInfo; +begin + result := TypeInfo(TableRequestInfo); +end; + +class function TableRequestInfoArray.GetItemClass: TClass; +begin + result := TableRequestInfo; +end; + +class function TableRequestInfoArray.GetItemSize: integer; +begin + result := SizeOf(TableRequestInfo); +end; + +function TableRequestInfoArray.GetItems(aIndex: integer): TableRequestInfo; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +function TableRequestInfoArray.GetItemRef(aIndex: integer): pointer; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +procedure TableRequestInfoArray.SetItemRef(aIndex: integer; Ref: pointer); +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if Ref <> fItems[aIndex] then begin + if fItems[aIndex] <> nil then fItems[aIndex].Free; + fItems[aIndex] := Ref; + end; +end; + +procedure TableRequestInfoArray.Clear; +var i: integer; +begin + for i := 0 to (Count-1) do fItems[i].Free(); + SetLength(fItems, 0); + FCount := 0; +end; + +procedure TableRequestInfoArray.Delete(aIndex: integer); +var i: integer; +begin + if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]); + + fItems[aIndex].Free(); + + if (aIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if fItems[aIndex] <> Value then begin + fItems[aIndex].Free; + fItems[aIndex] := Value; + end; +end; + +procedure TableRequestInfoArray.Resize(ElementCount: integer); +var i: Integer; +begin + if fCount = ElementCount then Exit; + for i := FCount -1 downto ElementCount do + FItems[i].Free; + SetLength(fItems, ElementCount); + for i := FCount to ElementCount -1 do + FItems[i] := TableRequestInfo.Create; + FCount := ElementCount; +end; + +function TableRequestInfoArray.GetCount: integer; +begin + result := FCount; +end; + +procedure TableRequestInfoArray.Grow; +var + Delta, Capacity: Integer; +begin + Capacity := Length(fItems); + if Capacity > 64 then + Delta := Capacity div 4 + else + if Capacity > 8 then + Delta := 16 + else + Delta := 4; + SetLength(fItems, Capacity + Delta); +end; + +function TableRequestInfoArray.Add: TableRequestInfo; +begin + result := TableRequestInfo.Create; + Add(Result); +end; + +function TableRequestInfoArray.Add(const Value:TableRequestInfo): integer; +begin + Result := Count; + if Length(fItems) = Result then + Grow; + fItems[result] := Value; + Inc(fCount); +end; + +procedure TableRequestInfoArray.ReadComplex(ASerializer: TObject); +var + lval: TableRequestInfo; + i: integer; +begin + for i := 0 to Count-1 do begin + with TROSerializer(ASerializer) do + ReadStruct(GetArrayElementName(GetItemType, GetItemRef(i)), TableRequestInfo, lval, i); + Items[i] := lval; + end; +end; + +procedure TableRequestInfoArray.WriteComplex(ASerializer: TObject); +var + i: integer; +begin + for i := 0 to Count-1 do + with TROSerializer(ASerializer) do + WriteStruct(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], TableRequestInfo, i); +end; + +{ StringArray } + +procedure StringArray.Assign(iSource: TPersistent); +var lSource:StringArray; + i:integer; +begin + if (iSource is StringArray) then begin + lSource := StringArray(iSource); + Clear(); + Resize(lSource.Count); + + for i := 0 to Count-1 do begin + Items[i] := lSource.Items[i]; + end; + end + else begin + inherited Assign(iSource); + end; +end; + +class function StringArray.GetItemType: PTypeInfo; +begin + result := TypeInfo(Utf8String); +end; + +class function StringArray.GetItemSize: integer; +begin + result := SizeOf(Utf8String); +end; + +function StringArray.GetItems(aIndex: integer): Utf8String; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +function StringArray.GetItemRef(aIndex: integer): pointer; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := @fItems[aIndex]; +end; + +procedure StringArray.Clear; +begin + SetLength(fItems, 0); + FCount := 0; +end; + +procedure StringArray.Delete(aIndex: integer); +var i: integer; +begin + if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]); + + if (aIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + fItems[aIndex] := Value; +end; + +procedure StringArray.Resize(ElementCount: integer); +begin + if fCount = ElementCount then Exit; + SetLength(fItems, ElementCount); + FCount := ElementCount; +end; + +function StringArray.GetCount: integer; +begin + result := FCount; +end; + +procedure StringArray.Grow; +var + Delta, Capacity: Integer; +begin + Capacity := Length(fItems); + if Capacity > 64 then + Delta := Capacity div 4 + else + if Capacity > 8 then + Delta := 16 + else + Delta := 4; + SetLength(fItems, Capacity + Delta); +end; + +function StringArray.Add(const Value: Utf8String): integer; +begin + Result := Count; + if Length(fItems) = Result then + Grow; + fItems[result] := Value; + Inc(fCount); +end; + +function StringArray.GetIndex(const aPropertyName: string; + const aPropertyValue: Variant; StartFrom: integer; + Options: TROSearchOptions): integer; +begin + result := -1; +end; + +procedure StringArray.ReadComplex(ASerializer: TObject); +var + lval: Utf8String; + i: integer; +begin + for i := 0 to Count-1 do begin + with TROSerializer(ASerializer) do + ReadUTF8String(GetArrayElementName(GetItemType, GetItemRef(i)), lval, i); + Items[i] := lval; + end; +end; + +procedure StringArray.WriteComplex(ASerializer: TObject); +var + i: integer; +begin + for i := 0 to Count-1 do + with TROSerializer(ASerializer) do + WriteUTF8String(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], i); +end; + +{ VariantArray } + +procedure VariantArray.Assign(iSource: TPersistent); +var lSource:VariantArray; + i:integer; +begin + if (iSource is VariantArray) then begin + lSource := VariantArray(iSource); + Clear(); + Resize(lSource.Count); + + for i := 0 to Count-1 do begin + Items[i] := lSource.Items[i]; + end; + end + else begin + inherited Assign(iSource); + end; +end; + +class function VariantArray.GetItemType: PTypeInfo; +begin + result := TypeInfo(Variant); +end; + +class function VariantArray.GetItemSize: integer; +begin + result := SizeOf(Variant); +end; + +function VariantArray.GetItems(aIndex: integer): Variant; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +function VariantArray.GetItemRef(aIndex: integer): pointer; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := @fItems[aIndex]; +end; + +procedure VariantArray.Clear; +begin + SetLength(fItems, 0); + FCount := 0; +end; + +procedure VariantArray.Delete(aIndex: integer); +var i: integer; +begin + if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]); + + if (aIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + fItems[aIndex] := Value; +end; + +procedure VariantArray.Resize(ElementCount: integer); +begin + if fCount = ElementCount then Exit; + SetLength(fItems, ElementCount); + FCount := ElementCount; +end; + +function VariantArray.GetCount: integer; +begin + result := FCount; +end; + +procedure VariantArray.Grow; +var + Delta, Capacity: Integer; +begin + Capacity := Length(fItems); + if Capacity > 64 then + Delta := Capacity div 4 + else + if Capacity > 8 then + Delta := 16 + else + Delta := 4; + SetLength(fItems, Capacity + Delta); +end; + +function VariantArray.Add(const Value: Variant): integer; +begin + Result := Count; + if Length(fItems) = Result then + Grow; + fItems[result] := Value; + Inc(fCount); +end; + +function VariantArray.GetIndex(const aPropertyName: string; + const aPropertyValue: Variant; StartFrom: integer; + Options: TROSearchOptions): integer; +begin + result := -1; +end; + +procedure VariantArray.ReadComplex(ASerializer: TObject); +var + lval: Variant; + i: integer; +begin + for i := 0 to Count-1 do begin + with TROSerializer(ASerializer) do + ReadVariant(GetArrayElementName(GetItemType, GetItemRef(i)), lval, i); + Items[i] := lval; + end; +end; + +procedure VariantArray.WriteComplex(ASerializer: TObject); +var + i: integer; +begin + for i := 0 to Count-1 do + with TROSerializer(ASerializer) do + WriteVariant(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], i); +end; + +{ ColumnSortingArray } + +procedure ColumnSortingArray.Assign(iSource: TPersistent); +var lSource:ColumnSortingArray; + i:integer; +begin + if (iSource is ColumnSortingArray) then begin + lSource := ColumnSortingArray(iSource); + Clear(); + Resize(lSource.Count); + + for i := 0 to Count-1 do begin + if Assigned(lSource.Items[i]) then begin + Items[i].Assign(lSource.Items[i]); + end; + end; + end + else begin + inherited Assign(iSource); + end; +end; + +class function ColumnSortingArray.GetItemType: PTypeInfo; +begin + result := TypeInfo(ColumnSorting); +end; + +class function ColumnSortingArray.GetItemClass: TClass; +begin + result := ColumnSorting; +end; + +class function ColumnSortingArray.GetItemSize: integer; +begin + result := SizeOf(ColumnSorting); +end; + +function ColumnSortingArray.GetItems(aIndex: integer): ColumnSorting; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +function ColumnSortingArray.GetItemRef(aIndex: integer): pointer; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +procedure ColumnSortingArray.SetItemRef(aIndex: integer; Ref: pointer); +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if Ref <> fItems[aIndex] then begin + if fItems[aIndex] <> nil then fItems[aIndex].Free; + fItems[aIndex] := Ref; + end; +end; + +procedure ColumnSortingArray.Clear; +var i: integer; +begin + for i := 0 to (Count-1) do fItems[i].Free(); + SetLength(fItems, 0); + FCount := 0; +end; + +procedure ColumnSortingArray.Delete(aIndex: integer); +var i: integer; +begin + if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]); + + fItems[aIndex].Free(); + + if (aIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if fItems[aIndex] <> Value then begin + fItems[aIndex].Free; + fItems[aIndex] := Value; + end; +end; + +procedure ColumnSortingArray.Resize(ElementCount: integer); +var i: Integer; +begin + if fCount = ElementCount then Exit; + for i := FCount -1 downto ElementCount do + FItems[i].Free; + SetLength(fItems, ElementCount); + for i := FCount to ElementCount -1 do + FItems[i] := ColumnSorting.Create; + FCount := ElementCount; +end; + +function ColumnSortingArray.GetCount: integer; +begin + result := FCount; +end; + +procedure ColumnSortingArray.Grow; +var + Delta, Capacity: Integer; +begin + Capacity := Length(fItems); + if Capacity > 64 then + Delta := Capacity div 4 + else + if Capacity > 8 then + Delta := 16 + else + Delta := 4; + SetLength(fItems, Capacity + Delta); +end; + +function ColumnSortingArray.Add: ColumnSorting; +begin + result := ColumnSorting.Create; + Add(Result); +end; + +function ColumnSortingArray.Add(const Value:ColumnSorting): integer; +begin + Result := Count; + if Length(fItems) = Result then + Grow; + fItems[result] := Value; + Inc(fCount); +end; + +procedure ColumnSortingArray.ReadComplex(ASerializer: TObject); +var + lval: ColumnSorting; + i: integer; +begin + for i := 0 to Count-1 do begin + with TROSerializer(ASerializer) do + ReadStruct(GetArrayElementName(GetItemType, GetItemRef(i)), ColumnSorting, lval, i); + Items[i] := lval; + end; +end; + +procedure ColumnSortingArray.WriteComplex(ASerializer: TObject); +var + i: integer; +begin + for i := 0 to Count-1 do + with TROSerializer(ASerializer) do + WriteStruct(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], ColumnSorting, i); +end; + +{ DataParameter } + +procedure DataParameter.Assign(iSource: TPersistent); +var lSource: DataAbstract4_Intf.DataParameter; +begin + inherited Assign(iSource); + if (iSource is DataAbstract4_Intf.DataParameter) then begin + lSource := DataAbstract4_Intf.DataParameter(iSource); + Name := lSource.Name; + Value := lSource.Value; + end; +end; + +procedure DataParameter.ReadComplex(ASerializer: TObject); +var + l_Name: Utf8String; + l_Value: Variant; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + l_Name := Name; + TROSerializer(ASerializer).ReadUTF8String('Name', l_Name); + Name := l_Name; + l_Value := Value; + TROSerializer(ASerializer).ReadVariant('Value', l_Value); + Value := l_Value; + end + else begin + l_Name := Name; + TROSerializer(ASerializer).ReadUTF8String('Name', l_Name); + Name := l_Name; + l_Value := Value; + TROSerializer(ASerializer).ReadVariant('Value', l_Value); + Value := l_Value; + end; +end; + +procedure DataParameter.WriteComplex(ASerializer: TObject); +var + l_Name: Utf8String; + l_Value: Variant; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + TROSerializer(ASerializer).ChangeClass(DataParameter); + l_Name := Name; + TROSerializer(ASerializer).WriteUTF8String('Name', l_Name); + l_Value := Value; + TROSerializer(ASerializer).WriteVariant('Value', l_Value); + end + else begin + l_Name := Name; + TROSerializer(ASerializer).WriteUTF8String('Name', l_Name); + l_Value := Value; + TROSerializer(ASerializer).WriteVariant('Value', l_Value); + end; +end; + +{ DataParameterCollection } +constructor DataParameterCollection.Create; +begin + inherited Create(DataParameter); +end; + +constructor DataParameterCollection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function DataParameterCollection.Add: DataParameter; +begin + result := DataParameter(inherited Add); +end; + +function DataParameterCollection.GetItems(aIndex: integer): DataParameter; +begin + result := DataParameter(inherited Items[aIndex]); +end; + +procedure DataParameterCollection.LoadFromArray(anArray: DataParameterArray); +var i : integer; +begin + Clear; + for i := 0 to (anArray.Count-1) do + Add.Assign(anArray[i]); +end; + +procedure DataParameterCollection.SaveToArray(anArray: DataParameterArray); +var i : integer; +begin + anArray.Clear; + anArray.Resize(Count); + for i := 0 to (Count-1) do begin + anArray[i] := DataParameter.Create; + anArray[i].Assign(Items[i]); + end; +end; + +procedure DataParameterCollection.SetItems(aIndex: integer; const Value: DataParameter); +begin + DataParameter(inherited Items[aIndex]).Assign(Value); +end; + +{ TableRequestInfo } + +procedure TableRequestInfo.Assign(iSource: TPersistent); +var lSource: DataAbstract4_Intf.TableRequestInfo; +begin + inherited Assign(iSource); + if (iSource is DataAbstract4_Intf.TableRequestInfo) then begin + lSource := DataAbstract4_Intf.TableRequestInfo(iSource); + UserFilter := lSource.UserFilter; + IncludeSchema := lSource.IncludeSchema; + MaxRecords := lSource.MaxRecords; + Parameters.Assign(lSource.Parameters); + end; +end; +constructor TableRequestInfo.Create(aCollection : TCollection); +begin + inherited Create(aCollection); + fMaxRecords := -1; +end; + +function TableRequestInfo.GetParameters: DataParameterArray; +begin + if (fParameters = nil) then fParameters := DataParameterArray.Create(); + result := fParameters; +end; + +procedure TableRequestInfo.ReadComplex(ASerializer: TObject); +var + l_IncludeSchema: Boolean; + l_MaxRecords: Integer; + l_Parameters: DataParameterArray; + l_UserFilter: Utf8String; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + l_UserFilter := UserFilter; + TROSerializer(ASerializer).ReadUTF8String('UserFilter', l_UserFilter); + UserFilter := l_UserFilter; + l_IncludeSchema := IncludeSchema; + TROSerializer(ASerializer).ReadEnumerated('IncludeSchema',TypeInfo(boolean), l_IncludeSchema); + IncludeSchema := l_IncludeSchema; + l_MaxRecords := MaxRecords; + TROSerializer(ASerializer).ReadInteger('MaxRecords', otSLong, l_MaxRecords); + MaxRecords := l_MaxRecords; + l_Parameters := Parameters; + TROSerializer(ASerializer).ReadArray('Parameters', DataParameterArray, l_Parameters); + if Parameters <> l_Parameters then Parameters.Free; + Parameters := l_Parameters; + end + else begin + l_IncludeSchema := IncludeSchema; + TROSerializer(ASerializer).ReadEnumerated('IncludeSchema',TypeInfo(boolean), l_IncludeSchema); + IncludeSchema := l_IncludeSchema; + l_MaxRecords := MaxRecords; + TROSerializer(ASerializer).ReadInteger('MaxRecords', otSLong, l_MaxRecords); + MaxRecords := l_MaxRecords; + l_Parameters := Parameters; + TROSerializer(ASerializer).ReadArray('Parameters', DataParameterArray, l_Parameters); + if Parameters <> l_Parameters then Parameters.Free; + Parameters := l_Parameters; + l_UserFilter := UserFilter; + TROSerializer(ASerializer).ReadUTF8String('UserFilter', l_UserFilter); + UserFilter := l_UserFilter; + end; +end; + +procedure TableRequestInfo.WriteComplex(ASerializer: TObject); +var + l_IncludeSchema: Boolean; + l_MaxRecords: Integer; + l_Parameters: DataParameterArray; + l_UserFilter: Utf8String; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + TROSerializer(ASerializer).ChangeClass(TableRequestInfo); + l_UserFilter := UserFilter; + TROSerializer(ASerializer).WriteUTF8String('UserFilter', l_UserFilter); + l_IncludeSchema := IncludeSchema; + TROSerializer(ASerializer).WriteEnumerated('IncludeSchema',TypeInfo(boolean), l_IncludeSchema); + l_MaxRecords := MaxRecords; + TROSerializer(ASerializer).WriteInteger('MaxRecords', otSLong, l_MaxRecords); + l_Parameters := Parameters; + TROSerializer(ASerializer).WriteArray('Parameters', l_Parameters, DataParameterArray); + end + else begin + l_IncludeSchema := IncludeSchema; + TROSerializer(ASerializer).WriteEnumerated('IncludeSchema',TypeInfo(boolean), l_IncludeSchema); + l_MaxRecords := MaxRecords; + TROSerializer(ASerializer).WriteInteger('MaxRecords', otSLong, l_MaxRecords); + l_Parameters := Parameters; + TROSerializer(ASerializer).WriteArray('Parameters', l_Parameters, DataParameterArray); + l_UserFilter := UserFilter; + TROSerializer(ASerializer).WriteUTF8String('UserFilter', l_UserFilter); + end; +end; + +{ TableRequestInfoCollection } +constructor TableRequestInfoCollection.Create; +begin + inherited Create(TableRequestInfo); +end; + +constructor TableRequestInfoCollection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function TableRequestInfoCollection.Add: TableRequestInfo; +begin + result := TableRequestInfo(inherited Add); +end; + +function TableRequestInfoCollection.GetItems(aIndex: integer): TableRequestInfo; +begin + result := TableRequestInfo(inherited Items[aIndex]); +end; + +procedure TableRequestInfoCollection.LoadFromArray(anArray: TableRequestInfoArray); +var i : integer; +begin + Clear; + for i := 0 to (anArray.Count-1) do + Add.Assign(anArray[i]); +end; + +procedure TableRequestInfoCollection.SaveToArray(anArray: TableRequestInfoArray); +var i : integer; +begin + anArray.Clear; + anArray.Resize(Count); + for i := 0 to (Count-1) do begin + anArray[i] := TableRequestInfo.Create; + anArray[i].Assign(Items[i]); + end; +end; + +procedure TableRequestInfoCollection.SetItems(aIndex: integer; const Value: TableRequestInfo); +begin + TableRequestInfo(inherited Items[aIndex]).Assign(Value); +end; + +{ UserInfo } + +procedure UserInfo.Assign(iSource: TPersistent); +var lSource: DataAbstract4_Intf.UserInfo; +begin + inherited Assign(iSource); + if (iSource is DataAbstract4_Intf.UserInfo) then begin + lSource := DataAbstract4_Intf.UserInfo(iSource); + SessionID := lSource.SessionID; + UserID := lSource.UserID; + Privileges.Assign(lSource.Privileges); + Attributes.Assign(lSource.Attributes); + UserData.Assign(lSource.UserData); + end; +end; + +function UserInfo.GetPrivileges: StringArray; +begin + if (fPrivileges = nil) then fPrivileges := StringArray.Create(); + result := fPrivileges; +end; + +function UserInfo.GetAttributes: VariantArray; +begin + if (fAttributes = nil) then fAttributes := VariantArray.Create(); + result := fAttributes; +end; + +function UserInfo.GetUserData: Binary; +begin + if (fUserData = nil) then fUserData := Binary.Create(); + result := fUserData; +end; + +procedure UserInfo.ReadComplex(ASerializer: TObject); +var + l_Attributes: VariantArray; + l_Privileges: StringArray; + l_SessionID: Utf8String; + l_UserData: Binary; + l_UserID: Utf8String; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + l_SessionID := SessionID; + TROSerializer(ASerializer).ReadUTF8String('SessionID', l_SessionID); + SessionID := l_SessionID; + l_UserID := UserID; + TROSerializer(ASerializer).ReadUTF8String('UserID', l_UserID); + UserID := l_UserID; + l_Privileges := Privileges; + TROSerializer(ASerializer).ReadArray('Privileges', StringArray, l_Privileges); + if Privileges <> l_Privileges then Privileges.Free; + Privileges := l_Privileges; + l_Attributes := Attributes; + TROSerializer(ASerializer).ReadArray('Attributes', VariantArray, l_Attributes); + if Attributes <> l_Attributes then Attributes.Free; + Attributes := l_Attributes; + l_UserData := UserData; + TROSerializer(ASerializer).ReadBinary('UserData', l_UserData); + if UserData <> l_UserData then UserData.Free; + UserData := l_UserData; + end + else begin + l_Attributes := Attributes; + TROSerializer(ASerializer).ReadArray('Attributes', VariantArray, l_Attributes); + if Attributes <> l_Attributes then Attributes.Free; + Attributes := l_Attributes; + l_Privileges := Privileges; + TROSerializer(ASerializer).ReadArray('Privileges', StringArray, l_Privileges); + if Privileges <> l_Privileges then Privileges.Free; + Privileges := l_Privileges; + l_SessionID := SessionID; + TROSerializer(ASerializer).ReadUTF8String('SessionID', l_SessionID); + SessionID := l_SessionID; + l_UserData := UserData; + TROSerializer(ASerializer).ReadBinary('UserData', l_UserData); + if UserData <> l_UserData then UserData.Free; + UserData := l_UserData; + l_UserID := UserID; + TROSerializer(ASerializer).ReadUTF8String('UserID', l_UserID); + UserID := l_UserID; + end; +end; + +procedure UserInfo.WriteComplex(ASerializer: TObject); +var + l_Attributes: VariantArray; + l_Privileges: StringArray; + l_SessionID: Utf8String; + l_UserData: Binary; + l_UserID: Utf8String; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + TROSerializer(ASerializer).ChangeClass(UserInfo); + l_SessionID := SessionID; + TROSerializer(ASerializer).WriteUTF8String('SessionID', l_SessionID); + l_UserID := UserID; + TROSerializer(ASerializer).WriteUTF8String('UserID', l_UserID); + l_Privileges := Privileges; + TROSerializer(ASerializer).WriteArray('Privileges', l_Privileges, StringArray); + l_Attributes := Attributes; + TROSerializer(ASerializer).WriteArray('Attributes', l_Attributes, VariantArray); + l_UserData := UserData; + TROSerializer(ASerializer).WriteBinary('UserData', l_UserData); + end + else begin + l_Attributes := Attributes; + TROSerializer(ASerializer).WriteArray('Attributes', l_Attributes, VariantArray); + l_Privileges := Privileges; + TROSerializer(ASerializer).WriteArray('Privileges', l_Privileges, StringArray); + l_SessionID := SessionID; + TROSerializer(ASerializer).WriteUTF8String('SessionID', l_SessionID); + l_UserData := UserData; + TROSerializer(ASerializer).WriteBinary('UserData', l_UserData); + l_UserID := UserID; + TROSerializer(ASerializer).WriteUTF8String('UserID', l_UserID); + end; +end; + +{ UserInfoCollection } +constructor UserInfoCollection.Create; +begin + inherited Create(UserInfo); +end; + +constructor UserInfoCollection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function UserInfoCollection.Add: UserInfo; +begin + result := UserInfo(inherited Add); +end; + +function UserInfoCollection.GetItems(aIndex: integer): UserInfo; +begin + result := UserInfo(inherited Items[aIndex]); +end; + +procedure UserInfoCollection.SetItems(aIndex: integer; const Value: UserInfo); +begin + UserInfo(inherited Items[aIndex]).Assign(Value); +end; + +{ TableRequestInfoV5 } + +procedure TableRequestInfoV5.Assign(iSource: TPersistent); +var lSource: DataAbstract4_Intf.TableRequestInfoV5; +begin + inherited Assign(iSource); + if (iSource is DataAbstract4_Intf.TableRequestInfoV5) then begin + lSource := DataAbstract4_Intf.TableRequestInfoV5(iSource); + WhereClause := lSource.WhereClause; + DynamicSelectFieldNames.Assign(lSource.DynamicSelectFieldNames); + Sorting.Assign(lSource.Sorting); + end; +end; + +function TableRequestInfoV5.GetDynamicSelectFieldNames: StringArray; +begin + if (fDynamicSelectFieldNames = nil) then fDynamicSelectFieldNames := StringArray.Create(); + result := fDynamicSelectFieldNames; +end; + +function TableRequestInfoV5.GetSorting: ColumnSorting; +begin + if (fSorting = nil) then fSorting := ColumnSorting.Create(); + result := fSorting; +end; + +procedure TableRequestInfoV5.ReadComplex(ASerializer: TObject); +var + l_DynamicSelectFieldNames: StringArray; + l_IncludeSchema: Boolean; + l_MaxRecords: Integer; + l_Parameters: DataParameterArray; + l_Sorting: ColumnSorting; + l_UserFilter: Utf8String; + l_WhereClause: IXmlNode; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + inherited; + l_WhereClause := WhereClause; + TROSerializer(ASerializer).ReadXML('WhereClause', l_WhereClause); + WhereClause := l_WhereClause; + l_DynamicSelectFieldNames := DynamicSelectFieldNames; + TROSerializer(ASerializer).ReadArray('DynamicSelectFieldNames', StringArray, l_DynamicSelectFieldNames); + if DynamicSelectFieldNames <> l_DynamicSelectFieldNames then DynamicSelectFieldNames.Free; + DynamicSelectFieldNames := l_DynamicSelectFieldNames; + l_Sorting := Sorting; + TROSerializer(ASerializer).ReadStruct('Sorting', ColumnSorting, l_Sorting); + if Sorting <> l_Sorting then Sorting.Free; + Sorting := l_Sorting; + end + else begin + l_DynamicSelectFieldNames := DynamicSelectFieldNames; + TROSerializer(ASerializer).ReadArray('DynamicSelectFieldNames', StringArray, l_DynamicSelectFieldNames); + if DynamicSelectFieldNames <> l_DynamicSelectFieldNames then DynamicSelectFieldNames.Free; + DynamicSelectFieldNames := l_DynamicSelectFieldNames; + l_IncludeSchema := IncludeSchema; + TROSerializer(ASerializer).ReadEnumerated('IncludeSchema',TypeInfo(boolean), l_IncludeSchema); + IncludeSchema := l_IncludeSchema; + l_MaxRecords := MaxRecords; + TROSerializer(ASerializer).ReadInteger('MaxRecords', otSLong, l_MaxRecords); + MaxRecords := l_MaxRecords; + l_Parameters := Parameters; + TROSerializer(ASerializer).ReadArray('Parameters', DataParameterArray, l_Parameters); + if Parameters <> l_Parameters then Parameters.Free; + Parameters := l_Parameters; + l_Sorting := Sorting; + TROSerializer(ASerializer).ReadStruct('Sorting', ColumnSorting, l_Sorting); + if Sorting <> l_Sorting then Sorting.Free; + Sorting := l_Sorting; + l_UserFilter := UserFilter; + TROSerializer(ASerializer).ReadUTF8String('UserFilter', l_UserFilter); + UserFilter := l_UserFilter; + l_WhereClause := WhereClause; + TROSerializer(ASerializer).ReadXML('WhereClause', l_WhereClause); + WhereClause := l_WhereClause; + end; +end; + +procedure TableRequestInfoV5.WriteComplex(ASerializer: TObject); +var + l_DynamicSelectFieldNames: StringArray; + l_IncludeSchema: Boolean; + l_MaxRecords: Integer; + l_Parameters: DataParameterArray; + l_Sorting: ColumnSorting; + l_UserFilter: Utf8String; + l_WhereClause: IXmlNode; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + inherited; + TROSerializer(ASerializer).ChangeClass(TableRequestInfoV5); + l_WhereClause := WhereClause; + TROSerializer(ASerializer).WriteXML('WhereClause', l_WhereClause); + l_DynamicSelectFieldNames := DynamicSelectFieldNames; + TROSerializer(ASerializer).WriteArray('DynamicSelectFieldNames', l_DynamicSelectFieldNames, StringArray); + l_Sorting := Sorting; + TROSerializer(ASerializer).WriteStruct('Sorting', l_Sorting, ColumnSorting); + end + else begin + l_DynamicSelectFieldNames := DynamicSelectFieldNames; + TROSerializer(ASerializer).WriteArray('DynamicSelectFieldNames', l_DynamicSelectFieldNames, StringArray); + l_IncludeSchema := IncludeSchema; + TROSerializer(ASerializer).WriteEnumerated('IncludeSchema',TypeInfo(boolean), l_IncludeSchema); + l_MaxRecords := MaxRecords; + TROSerializer(ASerializer).WriteInteger('MaxRecords', otSLong, l_MaxRecords); + l_Parameters := Parameters; + TROSerializer(ASerializer).WriteArray('Parameters', l_Parameters, DataParameterArray); + l_Sorting := Sorting; + TROSerializer(ASerializer).WriteStruct('Sorting', l_Sorting, ColumnSorting); + l_UserFilter := UserFilter; + TROSerializer(ASerializer).WriteUTF8String('UserFilter', l_UserFilter); + l_WhereClause := WhereClause; + TROSerializer(ASerializer).WriteXML('WhereClause', l_WhereClause); + end; +end; + +{ TableRequestInfoV5Collection } +constructor TableRequestInfoV5Collection.Create; +begin + inherited Create(TableRequestInfoV5); +end; + +constructor TableRequestInfoV5Collection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function TableRequestInfoV5Collection.Add: TableRequestInfoV5; +begin + result := TableRequestInfoV5(inherited Add); +end; + +function TableRequestInfoV5Collection.GetItems(aIndex: integer): TableRequestInfoV5; +begin + result := TableRequestInfoV5(inherited Items[aIndex]); +end; + +procedure TableRequestInfoV5Collection.SetItems(aIndex: integer; const Value: TableRequestInfoV5); +begin + TableRequestInfoV5(inherited Items[aIndex]).Assign(Value); +end; + +{ ColumnSorting } + +procedure ColumnSorting.Assign(iSource: TPersistent); +var lSource: DataAbstract4_Intf.ColumnSorting; +begin + inherited Assign(iSource); + if (iSource is DataAbstract4_Intf.ColumnSorting) then begin + lSource := DataAbstract4_Intf.ColumnSorting(iSource); + FieldName := lSource.FieldName; + SortDirection := lSource.SortDirection; + end; +end; + +procedure ColumnSorting.ReadComplex(ASerializer: TObject); +var + l_FieldName: Utf8String; + l_SortDirection: ColumnSortDirection; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + l_FieldName := FieldName; + TROSerializer(ASerializer).ReadUTF8String('FieldName', l_FieldName); + FieldName := l_FieldName; + l_SortDirection := SortDirection; + TROSerializer(ASerializer).ReadEnumerated('SortDirection',TypeInfo(ColumnSortDirection), l_SortDirection); + SortDirection := l_SortDirection; + end + else begin + l_FieldName := FieldName; + TROSerializer(ASerializer).ReadUTF8String('FieldName', l_FieldName); + FieldName := l_FieldName; + l_SortDirection := SortDirection; + TROSerializer(ASerializer).ReadEnumerated('SortDirection',TypeInfo(ColumnSortDirection), l_SortDirection); + SortDirection := l_SortDirection; + end; +end; + +procedure ColumnSorting.WriteComplex(ASerializer: TObject); +var + l_FieldName: Utf8String; + l_SortDirection: ColumnSortDirection; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + TROSerializer(ASerializer).ChangeClass(ColumnSorting); + l_FieldName := FieldName; + TROSerializer(ASerializer).WriteUTF8String('FieldName', l_FieldName); + l_SortDirection := SortDirection; + TROSerializer(ASerializer).WriteEnumerated('SortDirection',TypeInfo(ColumnSortDirection), l_SortDirection); + end + else begin + l_FieldName := FieldName; + TROSerializer(ASerializer).WriteUTF8String('FieldName', l_FieldName); + l_SortDirection := SortDirection; + TROSerializer(ASerializer).WriteEnumerated('SortDirection',TypeInfo(ColumnSortDirection), l_SortDirection); + end; +end; + +{ ColumnSortingCollection } +constructor ColumnSortingCollection.Create; +begin + inherited Create(ColumnSorting); +end; + +constructor ColumnSortingCollection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function ColumnSortingCollection.Add: ColumnSorting; +begin + result := ColumnSorting(inherited Add); +end; + +function ColumnSortingCollection.GetItems(aIndex: integer): ColumnSorting; +begin + result := ColumnSorting(inherited Items[aIndex]); +end; + +procedure ColumnSortingCollection.LoadFromArray(anArray: ColumnSortingArray); +var i : integer; +begin + Clear; + for i := 0 to (anArray.Count-1) do + Add.Assign(anArray[i]); +end; + +procedure ColumnSortingCollection.SaveToArray(anArray: ColumnSortingArray); +var i : integer; +begin + anArray.Clear; + anArray.Resize(Count); + for i := 0 to (Count-1) do begin + anArray[i] := ColumnSorting.Create; + anArray[i].Assign(Items[i]); + end; +end; + +procedure ColumnSortingCollection.SetItems(aIndex: integer; const Value: ColumnSorting); +begin + ColumnSorting(inherited Items[aIndex]).Assign(Value); +end; + +{ CoDataAbstractService } + +class function CoDataAbstractService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDataAbstractService; +begin + result := TDataAbstractService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TDataAbstractService_Proxy } + +function TDataAbstractService_Proxy.__GetInterfaceName:string; +begin + result := 'DataAbstractService'; +end; + +function TDataAbstractService_Proxy.GetSchema(const aFilter: Utf8String): Utf8String; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetSchema'); + __Message.Write('aFilter', TypeInfo(Utf8String), aFilter, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Utf8String), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDataAbstractService_Proxy.GetData(const aTableNameArray: StringArray; const aTableRequestInfoArray: TableRequestInfoArray): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetData'); + __Message.Write('aTableNameArray', TypeInfo(DataAbstract4_Intf.StringArray), aTableNameArray, []); + __Message.Write('aTableRequestInfoArray', TypeInfo(DataAbstract4_Intf.TableRequestInfoArray), aTableRequestInfoArray, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDataAbstractService_Proxy.UpdateData(const aDelta: Binary): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'UpdateData'); + __Message.Write('aDelta', TypeInfo(Binary), aDelta, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDataAbstractService_Proxy.ExecuteCommand(const aCommandName: Utf8String; const aParameterArray: DataParameterArray): Integer; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'ExecuteCommand'); + __Message.Write('aCommandName', TypeInfo(Utf8String), aCommandName, []); + __Message.Write('aParameterArray', TypeInfo(DataAbstract4_Intf.DataParameterArray), aParameterArray, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDataAbstractService_Proxy.ExecuteCommandEx(const aCommandName: Utf8String; const aInputParameters: DataParameterArray; out aOutputParameters: DataParameterArray): Integer; +begin + try + aOutputParameters := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'ExecuteCommandEx'); + __Message.Write('aCommandName', TypeInfo(Utf8String), aCommandName, []); + __Message.Write('aInputParameters', TypeInfo(DataAbstract4_Intf.DataParameterArray), aInputParameters, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Integer), result, []); + __Message.Read('aOutputParameters', TypeInfo(DataAbstract4_Intf.DataParameterArray), aOutputParameters, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDataAbstractService_Proxy.GetTableSchema(const aTableNameArray: StringArray): Utf8String; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetTableSchema'); + __Message.Write('aTableNameArray', TypeInfo(DataAbstract4_Intf.StringArray), aTableNameArray, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Utf8String), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDataAbstractService_Proxy.GetCommandSchema(const aCommandNameArray: StringArray): Utf8String; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetCommandSchema'); + __Message.Write('aCommandNameArray', TypeInfo(DataAbstract4_Intf.StringArray), aCommandNameArray, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Utf8String), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDataAbstractService_Proxy.SQLGetData(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'SQLGetData'); + __Message.Write('aSQLText', TypeInfo(Utf8String), aSQLText, []); + __Message.Write('aIncludeSchema', TypeInfo(Boolean), aIncludeSchema, []); + __Message.Write('aMaxRecords', TypeInfo(Integer), aMaxRecords, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDataAbstractService_Proxy.SQLGetDataEx(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer; const aDynamicWhereXML: Widestring): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'SQLGetDataEx'); + __Message.Write('aSQLText', TypeInfo(Utf8String), aSQLText, []); + __Message.Write('aIncludeSchema', TypeInfo(Boolean), aIncludeSchema, []); + __Message.Write('aMaxRecords', TypeInfo(Integer), aMaxRecords, []); + __Message.Write('aDynamicWhereXML', TypeInfo(Widestring), aDynamicWhereXML, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDataAbstractService_Proxy.SQLExecuteCommand(const aSQLText: Utf8String): Integer; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'SQLExecuteCommand'); + __Message.Write('aSQLText', TypeInfo(Utf8String), aSQLText, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDataAbstractService_Proxy.SQLExecuteCommandEx(const aSQLText: Utf8String; const aDynamicWhereXML: Widestring): Integer; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'SQLExecuteCommandEx'); + __Message.Write('aSQLText', TypeInfo(Utf8String), aSQLText, []); + __Message.Write('aDynamicWhereXML', TypeInfo(Widestring), aDynamicWhereXML, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDataAbstractService_Proxy.GetDatasetScripts(const DatasetNames: Utf8String): Utf8String; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetDatasetScripts'); + __Message.Write('DatasetNames', TypeInfo(Utf8String), DatasetNames, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Utf8String), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +procedure TDataAbstractService_Proxy.RegisterForDataChangeNotification(const aTableName: Utf8String); +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'RegisterForDataChangeNotification'); + __Message.Write('aTableName', TypeInfo(Utf8String), aTableName, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +procedure TDataAbstractService_Proxy.UnregisterForDataChangeNotification(const aTableName: Utf8String); +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'UnregisterForDataChangeNotification'); + __Message.Write('aTableName', TypeInfo(Utf8String), aTableName, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CoSimpleLoginService } + +class function CoSimpleLoginService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ISimpleLoginService; +begin + result := TSimpleLoginService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TSimpleLoginService_Proxy } + +function TSimpleLoginService_Proxy.__GetInterfaceName:string; +begin + result := 'SimpleLoginService'; +end; + +function TSimpleLoginService_Proxy.Login(const aUserID: Utf8String; const aPassword: Utf8String; out aUserInfo: UserInfo): Boolean; +begin + try + aUserInfo := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'Login'); + __Message.Write('aUserID', TypeInfo(Utf8String), aUserID, []); + __Message.Write('aPassword', TypeInfo(Utf8String), aPassword, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + __Message.Read('aUserInfo', TypeInfo(DataAbstract4_Intf.UserInfo), aUserInfo, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CoBaseLoginService } + +class function CoBaseLoginService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IBaseLoginService; +begin + result := TBaseLoginService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TBaseLoginService_Proxy } + +function TBaseLoginService_Proxy.__GetInterfaceName:string; +begin + result := 'BaseLoginService'; +end; + +procedure TBaseLoginService_Proxy.Logout; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'Logout'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.FreeStream; + end +end; + +{ CoMultiDbLoginService } + +class function CoMultiDbLoginService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMultiDbLoginService; +begin + result := TMultiDbLoginService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TMultiDbLoginService_Proxy } + +function TMultiDbLoginService_Proxy.__GetInterfaceName:string; +begin + result := 'MultiDbLoginService'; +end; + +function TMultiDbLoginService_Proxy.Login(const aUserID: Utf8String; const aPassword: Utf8String; const aConnectionName: Utf8String; out aUserInfo: UserInfo): Boolean; +begin + try + aUserInfo := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'Login'); + __Message.Write('aUserID', TypeInfo(Utf8String), aUserID, []); + __Message.Write('aPassword', TypeInfo(Utf8String), aPassword, []); + __Message.Write('aConnectionName', TypeInfo(Utf8String), aConnectionName, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + __Message.Read('aUserInfo', TypeInfo(DataAbstract4_Intf.UserInfo), aUserInfo, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CoMultiDbLoginServiceV5 } + +class function CoMultiDbLoginServiceV5.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMultiDbLoginServiceV5; +begin + result := TMultiDbLoginServiceV5_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TMultiDbLoginServiceV5_Proxy } + +function TMultiDbLoginServiceV5_Proxy.__GetInterfaceName:string; +begin + result := 'MultiDbLoginServiceV5'; +end; + +function TMultiDbLoginServiceV5_Proxy.GetConnectionNames: StringArray; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetConnectionNames'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(DataAbstract4_Intf.StringArray), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TMultiDbLoginServiceV5_Proxy.GetDefaultConnectionName: Utf8String; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetDefaultConnectionName'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Utf8String), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +type + { TDataChangeNotification_Writer } + TDataChangeNotification_Writer = class(TROEventWriter, IDataChangeNotification_Writer) + protected + procedure OnDataTableChanged(const __Sender : TGUID; const aTableName: Utf8String; const aDelta: Binary); + end; + +procedure TDataChangeNotification_Writer.OnDataTableChanged(const __Sender : TGUID; const aTableName: Utf8String; const aDelta: Binary); +var __eventdata : Binary; +begin + __eventdata := Binary.Create; + try + __Message.InitializeEventMessage(NIL, 'DataAbstract4', EID_DataChangeNotification, 'OnDataTableChanged'); + __Message.Write('aTableName', TypeInfo(Utf8String), aTableName, []); + __Message.Write('aDelta', TypeInfo(Binary), aDelta, []); + __Message.Finalize; + + __Message.WriteToStream(__eventdata); + + Repository.StoreEventData(__Sender, __eventdata, ExcludeSender, ExcludeSessionList, SessionList.CommaText); + finally + __eventdata.Free; + end; +end; + +type + { TDataChangeNotification_Invoker } + TDataChangeNotification_Invoker = class(TROEventInvoker) + published + procedure Invoke_OnDataTableChanged(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown); + end; + +procedure TDataChangeNotification_Invoker.Invoke_OnDataTableChanged(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown); +var +__lObjectDisposer: TROObjectDisposer; + aTableName: Utf8String; + aDelta: Binary; +begin + aDelta := NIL; + + try + __Message.Read('aTableName', TypeInfo(Utf8String), aTableName, []); + __Message.Read('aDelta', TypeInfo(Binary), aDelta, []); + + (__Target as IDataChangeNotification).OnDataTableChanged(aTableName, aDelta); + + finally + __lObjectDisposer:= TROObjectDisposer.Create(__EventReceiver); + try + __lObjectDisposer.Add(aDelta); + finally + __lObjectDisposer.Free(); + end + end +end; + +initialization + RegisterROClass(DataParameter); + RegisterROClass(TableRequestInfo); + RegisterROClass(UserInfo); + RegisterROClass(TableRequestInfoV5); + RegisterROClass(ColumnSorting); + RegisterROClass(DataParameterArray); + RegisterROClass(TableRequestInfoArray); + RegisterROClass(StringArray); + RegisterROClass(VariantArray); + RegisterROClass(ColumnSortingArray); + RegisterProxyClass(IDataAbstractService_IID, TDataAbstractService_Proxy); + RegisterProxyClass(ISimpleLoginService_IID, TSimpleLoginService_Proxy); + RegisterProxyClass(IBaseLoginService_IID, TBaseLoginService_Proxy); + RegisterProxyClass(IMultiDbLoginService_IID, TMultiDbLoginService_Proxy); + RegisterProxyClass(IMultiDbLoginServiceV5_IID, TMultiDbLoginServiceV5_Proxy); + + RegisterEventWriterClass(IDataChangeNotification_Writer, TDataChangeNotification_Writer); + RegisterEventInvokerClass(EID_DataChangeNotification, TDataChangeNotification_Invoker); + +finalization + UnregisterROClass(DataParameter); + UnregisterROClass(TableRequestInfo); + UnregisterROClass(UserInfo); + UnregisterROClass(TableRequestInfoV5); + UnregisterROClass(ColumnSorting); + UnregisterROClass(DataParameterArray); + UnregisterROClass(TableRequestInfoArray); + UnregisterROClass(StringArray); + UnregisterROClass(VariantArray); + UnregisterROClass(ColumnSortingArray); + UnregisterProxyClass(IDataAbstractService_IID); + UnregisterProxyClass(ISimpleLoginService_IID); + UnregisterProxyClass(IBaseLoginService_IID); + UnregisterProxyClass(IMultiDbLoginService_IID); + UnregisterProxyClass(IMultiDbLoginServiceV5_IID); + + UnregisterEventWriterClass(IDataChangeNotification_Writer); + UnregisterEventInvokerClass(EID_DataChangeNotification); +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract4_Invk.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract4_Invk.pas new file mode 100644 index 0000000..3058bec --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract4_Invk.pas @@ -0,0 +1,621 @@ +unit DataAbstract4_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Generated:} DataAbstract4_Intf; + +type + TDataAbstractService_Invoker = class(TROInvoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_GetSchema(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_UpdateData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_ExecuteCommand(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_ExecuteCommandEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetTableSchema(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetCommandSchema(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_SQLGetData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_SQLGetDataEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_SQLExecuteCommand(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_SQLExecuteCommandEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetDatasetScripts(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_RegisterForDataChangeNotification(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_UnregisterForDataChangeNotification(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TBaseLoginService_Invoker = class(TROInvoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_Logout(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TMultiDbLoginService_Invoker = class(TBaseLoginService_Invoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TMultiDbLoginServiceV5_Invoker = class(TMultiDbLoginService_Invoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_GetConnectionNames(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetDefaultConnectionName(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TSimpleLoginService_Invoker = class(TBaseLoginService_Invoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TDataAbstractService_Invoker } + +constructor TDataAbstractService_Invoker.Create; +begin + inherited Create; + FAbstract := True; +end; + +procedure TDataAbstractService_Invoker.Invoke_GetSchema(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetSchema(const aFilter: Utf8String): Utf8String; } +var + aFilter: Utf8String; + lResult: Utf8String; +begin + try + __Message.Read('aFilter', TypeInfo(Utf8String), aFilter, []); + + lResult := (__Instance as IDataAbstractService).GetSchema(aFilter); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'GetSchemaResponse'); + __Message.Write('Result', TypeInfo(Utf8String), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_GetData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetData(const aTableNameArray: StringArray; const aTableRequestInfoArray: TableRequestInfoArray): Binary; } +var + aTableNameArray: DataAbstract4_Intf.StringArray; + aTableRequestInfoArray: DataAbstract4_Intf.TableRequestInfoArray; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + aTableNameArray := nil; + aTableRequestInfoArray := nil; + lResult := nil; + try + __Message.Read('aTableNameArray', TypeInfo(DataAbstract4_Intf.StringArray), aTableNameArray, []); + __Message.Read('aTableRequestInfoArray', TypeInfo(DataAbstract4_Intf.TableRequestInfoArray), aTableRequestInfoArray, []); + + lResult := (__Instance as IDataAbstractService).GetData(aTableNameArray, aTableRequestInfoArray); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'GetDataResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(aTableNameArray); + __lObjectDisposer.Add(aTableRequestInfoArray); + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_UpdateData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function UpdateData(const aDelta: Binary): Binary; } +var + aDelta: Binary; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + aDelta := nil; + lResult := nil; + try + __Message.Read('aDelta', TypeInfo(Binary), aDelta, []); + + lResult := (__Instance as IDataAbstractService).UpdateData(aDelta); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'UpdateDataResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(aDelta); + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_ExecuteCommand(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function ExecuteCommand(const aCommandName: Utf8String; const aParameterArray: DataParameterArray): Integer; } +var + aCommandName: Utf8String; + aParameterArray: DataAbstract4_Intf.DataParameterArray; + lResult: Integer; + __lObjectDisposer: TROObjectDisposer; +begin + aParameterArray := nil; + try + __Message.Read('aCommandName', TypeInfo(Utf8String), aCommandName, []); + __Message.Read('aParameterArray', TypeInfo(DataAbstract4_Intf.DataParameterArray), aParameterArray, []); + + lResult := (__Instance as IDataAbstractService).ExecuteCommand(aCommandName, aParameterArray); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'ExecuteCommandResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(aParameterArray); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_ExecuteCommandEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function ExecuteCommandEx(const aCommandName: Utf8String; const aInputParameters: DataParameterArray; out aOutputParameters: DataParameterArray): Integer; } +var + aCommandName: Utf8String; + aInputParameters: DataAbstract4_Intf.DataParameterArray; + aOutputParameters: DataAbstract4_Intf.DataParameterArray; + lResult: Integer; + __lObjectDisposer: TROObjectDisposer; +begin + aInputParameters := nil; + aOutputParameters := nil; + try + __Message.Read('aCommandName', TypeInfo(Utf8String), aCommandName, []); + __Message.Read('aInputParameters', TypeInfo(DataAbstract4_Intf.DataParameterArray), aInputParameters, []); + + lResult := (__Instance as IDataAbstractService).ExecuteCommandEx(aCommandName, aInputParameters, aOutputParameters); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'ExecuteCommandExResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Write('aOutputParameters', TypeInfo(DataAbstract4_Intf.DataParameterArray), aOutputParameters, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(aInputParameters); + __lObjectDisposer.Add(aOutputParameters); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_GetTableSchema(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetTableSchema(const aTableNameArray: StringArray): Utf8String; } +var + aTableNameArray: DataAbstract4_Intf.StringArray; + lResult: Utf8String; + __lObjectDisposer: TROObjectDisposer; +begin + aTableNameArray := nil; + try + __Message.Read('aTableNameArray', TypeInfo(DataAbstract4_Intf.StringArray), aTableNameArray, []); + + lResult := (__Instance as IDataAbstractService).GetTableSchema(aTableNameArray); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'GetTableSchemaResponse'); + __Message.Write('Result', TypeInfo(Utf8String), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(aTableNameArray); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_GetCommandSchema(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetCommandSchema(const aCommandNameArray: StringArray): Utf8String; } +var + aCommandNameArray: DataAbstract4_Intf.StringArray; + lResult: Utf8String; + __lObjectDisposer: TROObjectDisposer; +begin + aCommandNameArray := nil; + try + __Message.Read('aCommandNameArray', TypeInfo(DataAbstract4_Intf.StringArray), aCommandNameArray, []); + + lResult := (__Instance as IDataAbstractService).GetCommandSchema(aCommandNameArray); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'GetCommandSchemaResponse'); + __Message.Write('Result', TypeInfo(Utf8String), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(aCommandNameArray); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_SQLGetData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function SQLGetData(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer): Binary; } +var + aSQLText: Utf8String; + aIncludeSchema: Boolean; + aMaxRecords: Integer; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('aSQLText', TypeInfo(Utf8String), aSQLText, []); + __Message.Read('aIncludeSchema', TypeInfo(Boolean), aIncludeSchema, []); + __Message.Read('aMaxRecords', TypeInfo(Integer), aMaxRecords, []); + + lResult := (__Instance as IDataAbstractService).SQLGetData(aSQLText, aIncludeSchema, aMaxRecords); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'SQLGetDataResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_SQLGetDataEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function SQLGetDataEx(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer; const aDynamicWhereXML: Widestring): Binary; } +var + aSQLText: Utf8String; + aIncludeSchema: Boolean; + aMaxRecords: Integer; + aDynamicWhereXML: Widestring; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('aSQLText', TypeInfo(Utf8String), aSQLText, []); + __Message.Read('aIncludeSchema', TypeInfo(Boolean), aIncludeSchema, []); + __Message.Read('aMaxRecords', TypeInfo(Integer), aMaxRecords, []); + __Message.Read('aDynamicWhereXML', TypeInfo(Widestring), aDynamicWhereXML, []); + + lResult := (__Instance as IDataAbstractService).SQLGetDataEx(aSQLText, aIncludeSchema, aMaxRecords, aDynamicWhereXML); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'SQLGetDataExResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_SQLExecuteCommand(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function SQLExecuteCommand(const aSQLText: Utf8String): Integer; } +var + aSQLText: Utf8String; + lResult: Integer; +begin + try + __Message.Read('aSQLText', TypeInfo(Utf8String), aSQLText, []); + + lResult := (__Instance as IDataAbstractService).SQLExecuteCommand(aSQLText); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'SQLExecuteCommandResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_SQLExecuteCommandEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function SQLExecuteCommandEx(const aSQLText: Utf8String; const aDynamicWhereXML: Widestring): Integer; } +var + aSQLText: Utf8String; + aDynamicWhereXML: Widestring; + lResult: Integer; +begin + try + __Message.Read('aSQLText', TypeInfo(Utf8String), aSQLText, []); + __Message.Read('aDynamicWhereXML', TypeInfo(Widestring), aDynamicWhereXML, []); + + lResult := (__Instance as IDataAbstractService).SQLExecuteCommandEx(aSQLText, aDynamicWhereXML); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'SQLExecuteCommandExResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_GetDatasetScripts(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetDatasetScripts(const DatasetNames: Utf8String): Utf8String; } +var + DatasetNames: Utf8String; + lResult: Utf8String; +begin + try + __Message.Read('DatasetNames', TypeInfo(Utf8String), DatasetNames, []); + + lResult := (__Instance as IDataAbstractService).GetDatasetScripts(DatasetNames); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'GetDatasetScriptsResponse'); + __Message.Write('Result', TypeInfo(Utf8String), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_RegisterForDataChangeNotification(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure RegisterForDataChangeNotification(const aTableName: Utf8String); } +var + aTableName: Utf8String; +begin + try + __Message.Read('aTableName', TypeInfo(Utf8String), aTableName, []); + + (__Instance as IDataAbstractService).RegisterForDataChangeNotification(aTableName); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'RegisterForDataChangeNotificationResponse'); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_UnregisterForDataChangeNotification(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure UnregisterForDataChangeNotification(const aTableName: Utf8String); } +var + aTableName: Utf8String; +begin + try + __Message.Read('aTableName', TypeInfo(Utf8String), aTableName, []); + + (__Instance as IDataAbstractService).UnregisterForDataChangeNotification(aTableName); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'UnregisterForDataChangeNotificationResponse'); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + +{ TSimpleLoginService_Invoker } + +constructor TSimpleLoginService_Invoker.Create; +begin + inherited Create; + FAbstract := True; +end; + +procedure TSimpleLoginService_Invoker.Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function Login(const aUserID: Utf8String; const aPassword: Utf8String; out aUserInfo: UserInfo): Boolean; } +var + aUserID: Utf8String; + aPassword: Utf8String; + aUserInfo: DataAbstract4_Intf.UserInfo; + lResult: Boolean; + __lObjectDisposer: TROObjectDisposer; +begin + aUserInfo := nil; + try + __Message.Read('aUserID', TypeInfo(Utf8String), aUserID, []); + __Message.Read('aPassword', TypeInfo(Utf8String), aPassword, []); + + lResult := (__Instance as ISimpleLoginService).Login(aUserID, aPassword, aUserInfo); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'SimpleLoginService', 'LoginResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Write('aUserInfo', TypeInfo(DataAbstract4_Intf.UserInfo), aUserInfo, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(aUserInfo); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +{ TBaseLoginService_Invoker } + +constructor TBaseLoginService_Invoker.Create; +begin + inherited Create; + FAbstract := True; +end; + +procedure TBaseLoginService_Invoker.Invoke_Logout(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure Logout; } +begin + try + (__Instance as IBaseLoginService).Logout; + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'BaseLoginService', 'LogoutResponse'); + __Message.Finalize; + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + +{ TMultiDbLoginService_Invoker } + +constructor TMultiDbLoginService_Invoker.Create; +begin + inherited Create; + FAbstract := True; +end; + +procedure TMultiDbLoginService_Invoker.Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function Login(const aUserID: Utf8String; const aPassword: Utf8String; const aConnectionName: Utf8String; out aUserInfo: UserInfo): Boolean; } +var + aUserID: Utf8String; + aPassword: Utf8String; + aConnectionName: Utf8String; + aUserInfo: DataAbstract4_Intf.UserInfo; + lResult: Boolean; + __lObjectDisposer: TROObjectDisposer; +begin + aUserInfo := nil; + try + __Message.Read('aUserID', TypeInfo(Utf8String), aUserID, []); + __Message.Read('aPassword', TypeInfo(Utf8String), aPassword, []); + __Message.Read('aConnectionName', TypeInfo(Utf8String), aConnectionName, []); + + lResult := (__Instance as IMultiDbLoginService).Login(aUserID, aPassword, aConnectionName, aUserInfo); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'MultiDbLoginService', 'LoginResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Write('aUserInfo', TypeInfo(DataAbstract4_Intf.UserInfo), aUserInfo, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(aUserInfo); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +{ TMultiDbLoginServiceV5_Invoker } + +constructor TMultiDbLoginServiceV5_Invoker.Create; +begin + inherited Create; + FAbstract := True; +end; + +procedure TMultiDbLoginServiceV5_Invoker.Invoke_GetConnectionNames(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetConnectionNames: StringArray; } +var + lResult: DataAbstract4_Intf.StringArray; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + lResult := (__Instance as IMultiDbLoginServiceV5).GetConnectionNames; + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'MultiDbLoginServiceV5', 'GetConnectionNamesResponse'); + __Message.Write('Result', TypeInfo(DataAbstract4_Intf.StringArray), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TMultiDbLoginServiceV5_Invoker.Invoke_GetDefaultConnectionName(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetDefaultConnectionName: Utf8String; } +var + lResult: Utf8String; +begin + try + lResult := (__Instance as IMultiDbLoginServiceV5).GetDefaultConnectionName; + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'MultiDbLoginServiceV5', 'GetDefaultConnectionNameResponse'); + __Message.Write('Result', TypeInfo(Utf8String), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +initialization +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstractService_Impl.dfm b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstractService_Impl.dfm new file mode 100644 index 0000000..65deb18 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstractService_Impl.dfm @@ -0,0 +1,5 @@ +object DataAbstractService: TDataAbstractService + OldCreateOrder = True + Height = 437 + Width = 546 +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstractService_Impl.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstractService_Impl.pas new file mode 100644 index 0000000..dc9238c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstractService_Impl.pas @@ -0,0 +1,1433 @@ +unit DataAbstractService_Impl; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Core Library } +{ } +{ compiler: Delphi 6 and up, Kylix 3 and up } +{ platform: Win32, Linux } +{ } +{ (c)opyright RemObjects Software. all rights reserved. } +{ } +{ Using this code requires a valid license of the Data Abstract } +{ which can be obtained at http://www.remobjects.com. } +{----------------------------------------------------------------------------} + +{----------------------------------------------------------------------------} +{ When applying fixes to this unit, please see if the need to be propagates } +{ to the duplicate dlogic in legacy DARemoteService_Impl.pas, too. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +uses + {vcl:} Classes, SysUtils, DB, + {Generated:} DataAbstract4_Intf, + uROClientIntf, uROTypes, uROServer, uROSessions, uRORemoteDataModule, uROClasses, + uDAInterfaces, uDAClasses, uDADataTable, uDADataStreamer, uDABusinessProcessor, + uDADataTableReferenceCollection, uDADelta; + +type + { Events } + TDAAcquireConnectionEvent = procedure(aSender: TObject; var aConnectionName: string) of object; + TDAConnectionAcquiredEvent = procedure(aSender: TObject; const aConnectionName: string; const aAcquiredConnection: IDAConnection) of object; + TDAAcquireConnectionFailureEvent = procedure(aSender: TObject; const aConnectionName: string; aError: Exception) of object; + TDAGetDatasetSchemaEvent = procedure(aSender: TObject; const aDataset: IDADataset) of object; + TDAGetDatasetDataEvent = procedure(aSender: TObject; const aDataset: IDADataset; const aIncludeSchema: Boolean; const aMaxRecords: Integer) of object; + TDABusinessProcessorAutoCreatedEvent = procedure(aSender: TRORemoteDataModule; BusinessProcessor : TDABusinessProcessor) of object; + TDABeforeExecuteCommandEvent = procedure(aSender: TObject; const aCommand: IDASQLCommand) of object; + TDAAfterExecuteCommandEvent = procedure(aSender: TObject; const aCommand: IDASQLCommand; aRowsAffacted : integer) of object; + TDAConnectionReleasedEvent = procedure(aSender: TObject; const aConnectionName: string) of object; + TDAGetSchemaAsXMLEvent = procedure(aSender: TObject; var aSchemaXML: Utf8string) of object; + TDAProcessDeltasEvent = procedure(aSender: TObject; aDeltaStructs: TDADeltaStructList) of object; + TDAProcessDeltasErrorEvent = procedure(aSender: TObject; aDeltaStructs: TDADeltaStructList; aError: Exception; var aDoRaise: boolean) of object; + TDASchemaElementAccessValidationEvent = procedure(Sender: TObject; const aConnection: IDAConnection; const aDatasetName: string; + const aParamNames: array of string; const aParamValues : array of variant; + aSchema: TDASchema; var Allowed : boolean) of object; + TDASQLValidationEvent = procedure(Sender: TObject; const aConnection: IDAConnection; const aSQLText: string; + const aParamNames: array of string; const aParamValues : array of variant; + var Allowed : boolean) of object; + TDAUpdateDataTransactionEvent = procedure(Sender: TObject; var aUseDefaultTransactionLogic: Boolean) of object; + + TDADeltasMode = (dumExported, dumStandard); + TDADeltasModes = set of TDADeltasMode; + { TDataAbstractService } + TDataAbstractService = class(TRORemoteDataModule, IDataAbstractService) + private + { Properties } + fAllowExecuteCommands: boolean; + fAllowExecuteSQL: boolean; + fAllowDataAccess: boolean; + fAllowSchemaAccess: boolean; + fAllowWhereSQL: boolean; + fConnectionName: string; + fAcquireConnection: boolean; + fServiceSchema: TDASchema; + fAutoCreateBusinessProcessors: boolean; + fServiceDataStreamer: TDADataStreamer; + fProcessDeltasWithoutUpdateRules: boolean; + + fConnection: IDAConnection; + fHETConnection: IDAHETConnection; + fExportedDataTables: TDADataTableReferenceCollection; + + { Events } + fBeforeGetDatasetSchema: TDAGetDatasetSchemaEvent; + fBeforeProcessDeltas: TDAProcessDeltasEvent; + fOnAcquireConnectionFailure: TDAAcquireConnectionFailureEvent; + fOnUpdateDataCommitTransaction: TDAUpdateDataTransactionEvent; + fGetDatasetDataValidation: TDASchemaElementAccessValidationEvent; + fExecuteCommandValidation: TDASchemaElementAccessValidationEvent; + fSQLValidation: TDASQLValidationEvent; + fAfterExecuteCommand: TDAAfterExecuteCommandEvent; + fBeforeAcquireConnection: TDAAcquireConnectionEvent; + fOnUpdateDataRollBackTransaction: TDAUpdateDataTransactionEvent; + fAfterGetDatasetData: TDAGetDatasetDataEvent; + fAfterReleaseConnection: TDAConnectionReleasedEvent; + fAfterGetDatasetSchema: TDAGetDatasetSchemaEvent; + fAfterProcessDeltas: TDAProcessDeltasEvent; + fOnGetSchemaAsXML: TDAGetSchemaAsXMLEvent; + fOnBusinessProcessorAutoCreated: TDABusinessProcessorAutoCreatedEvent; + fOnUpdateDataBeginTransaction: TDAUpdateDataTransactionEvent; + fAfterAcquireConnection: TDAConnectionAcquiredEvent; + fOnProcessDeltasError: TDAProcessDeltasErrorEvent; + fBeforeExecuteCommand: TDABeforeExecuteCommandEvent; + fBeforeGetDatasetData: TDAGetDatasetDataEvent; + fBeforeReleaseConnection: TDAConnectionAcquiredEvent; + fAllowDynamicSelect: boolean; + fAllowDynamicWhere: boolean; + fAllowUpdates: boolean; + fHasReducedDelta: Boolean; + + procedure SetServiceDataStreamer(const Value: TDADataStreamer); + procedure SetServiceSchema(const Value: TDASchema); + procedure SetExportedDataTables(const Value: TDADataTableReferenceCollection); + procedure Check(CheckOnlyDataStreamer:Boolean = false); + private + function GetConnection: IDAConnection; + function UnpackDeltas(const DeltaStream: Binary; DeltaStructList: TDADeltaStructList): TDADeltasModes; + function TriggerTransactionEvent(aEvent: TDAUpdateDataTransactionEvent): boolean; + procedure ExportedDataTables_MergeDelta(ADelta: IDADelta); + protected + { IDataAbstractService methods } + function GetSchema(const aFilter: Utf8String): Utf8String; + function GetData(const aTableNameArray: StringArray; const aTableRequestInfoArray: TableRequestInfoArray): Binary; + function UpdateData(const aDelta: Binary): Binary; + function ExecuteCommand(const aCommandName: Utf8String; const aParameterArray: DataParameterArray): Integer; + function GetTableSchema(const aTableNameArray: StringArray): Utf8String; + function GetCommandSchema(const aCommandNameArray: StringArray): Utf8String; + function SQLGetData(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer): Binary; + function SQLGetDataEx(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer; const aDynamicWhereXML: Widestring): Binary; + function SQLExecuteCommand(const aSQLText: Utf8String): Integer; + function SQLExecuteCommandEx(const aSQLText: Utf8String; const aDynamicWhereXML: Widestring): Integer; + function ExecuteCommandEx(const aCommandName: Utf8String; + const aInputParameters: DataParameterArray; + out aOutputParameters: DataParameterArray): Integer; + function GetDatasetScripts(const DatasetNames: Utf8String): Utf8String; + procedure RegisterForDataChangeNotification(const aTableName: Utf8String); + procedure UnregisterForDataChangeNotification(const aTableName: Utf8String); + + { TRORemoteDataModule } + procedure DoOnDeactivate(aClientID: TGUID); override; + + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + + function GetConnectionForObject(const aName: string): IDAConnection; virtual; + public + constructor Create(aOwner : TComponent); override; + destructor Destroy; override; + + procedure SetConnection(aConnection: IDAConnection); deprecated; + {$WARN SYMBOL_DEPRECATED OFF} + property Connection: IDAConnection read GetConnection write SetConnection; + {$WARN SYMBOL_DEPRECATED ON} + + procedure ReleaseConnection; + published + property AcquireConnection: boolean read fAcquireConnection write fAcquireConnection default true; + property ConnectionName: string read fConnectionName write fConnectionName; + property AutoCreateBusinessProcessors : boolean read fAutoCreateBusinessProcessors write fAutoCreateBusinessProcessors default true; + property ServiceSchema: TDASchema read fServiceSchema write SetServiceSchema; + property ServiceDataStreamer: TDADataStreamer read fServiceDataStreamer write SetServiceDataStreamer; + + property AllowDataAccess: boolean read fAllowDataAccess write fAllowDataAccess default true; + property AllowSchemaAccess: boolean read fAllowSchemaAccess write fAllowSchemaAccess default true; + property AllowUpdates: boolean read fAllowUpdates write fAllowUpdates default true; + property AllowExecuteSQL: boolean read fAllowExecuteSQL write fAllowExecuteSQL default false; + property AllowWhereSQL: boolean read fAllowWhereSQL write fAllowWhereSQL default false; + property AllowExecuteCommands: boolean read fAllowExecuteCommands write fAllowExecuteCommands default false; + property AllowDynamicSelect: boolean read fAllowDynamicSelect write fAllowDynamicSelect default true; + property AllowDynamicWhere: boolean read fAllowDynamicWhere write fAllowDynamicWhere default true; + + property ProcessDeltasWithoutUpdateRules: boolean read fProcessDeltasWithoutUpdateRules write fProcessDeltasWithoutUpdateRules default true; + property ExportedDataTables: TDADataTableReferenceCollection read fExportedDataTables write SetExportedDataTables; + + { Events } + property BeforeAcquireConnection: TDAAcquireConnectionEvent read fBeforeAcquireConnection write fBeforeAcquireConnection; + property AfterAcquireConnection: TDAConnectionAcquiredEvent read fAfterAcquireConnection write fAfterAcquireConnection; + property BeforeReleaseConnection: TDAConnectionAcquiredEvent read fBeforeReleaseConnection write fBeforeReleaseConnection; + property AfterReleaseConnection: TDAConnectionReleasedEvent read fAfterReleaseConnection write fAfterReleaseConnection; + property OnAcquireConnectionFailure: TDAAcquireConnectionFailureEvent read fOnAcquireConnectionFailure write fOnAcquireConnectionFailure; + + property BeforeProcessDeltas : TDAProcessDeltasEvent read fBeforeProcessDeltas write fBeforeProcessDeltas; + property AfterProcessDeltas: TDAProcessDeltasEvent read fAfterProcessDeltas write fAfterProcessDeltas; + property OnProcessDeltasError: TDAProcessDeltasErrorEvent read fOnProcessDeltasError write fOnProcessDeltasError; + + property BeforeGetDatasetSchema: TDAGetDatasetSchemaEvent read fBeforeGetDatasetSchema write fBeforeGetDatasetSchema; + property BeforeGetDatasetData: TDAGetDatasetDataEvent read fBeforeGetDatasetData write fBeforeGetDatasetData; + property AfterGetDatasetSchema: TDAGetDatasetSchemaEvent read fAfterGetDatasetSchema write fAfterGetDatasetSchema; + property AfterGetDatasetData: TDAGetDatasetDataEvent read fAfterGetDatasetData write fAfterGetDatasetData; + property OnBusinessProcessorAutoCreated: TDABusinessProcessorAutoCreatedEvent read fOnBusinessProcessorAutoCreated write fOnBusinessProcessorAutoCreated; + property BeforeExecuteCommand: TDABeforeExecuteCommandEvent read fBeforeExecuteCommand write fBeforeExecuteCommand; + property AfterExecuteCommand: TDAAfterExecuteCommandEvent read fAfterExecuteCommand write fAfterExecuteCommand; + property OnGetSchemaAsXMLEvent: TDAGetSchemaAsXMLEvent read fOnGetSchemaAsXML write fOnGetSchemaAsXML; + property ValidateDatasetAccess: TDASchemaElementAccessValidationEvent read fGetDatasetDataValidation write fGetDatasetDataValidation; + property ValidateCommandExecution: TDASchemaElementAccessValidationEvent read fExecuteCommandValidation write fExecuteCommandValidation; + property ValidateDirectSQLAccess: TDASQLValidationEvent read fSQLValidation write fSQLValidation; + + property OnUpdateDataBeginTransaction : TDAUpdateDataTransactionEvent read fOnUpdateDataBeginTransaction write fOnUpdateDataBeginTransaction; + property OnUpdateDataCommitTransaction : TDAUpdateDataTransactionEvent read fOnUpdateDataCommitTransaction write fOnUpdateDataCommitTransaction; + property OnUpdateDataRollBackTransaction : TDAUpdateDataTransactionEvent read fOnUpdateDataRollBackTransaction write fOnUpdateDataRollBackTransaction; + end; + +implementation + +uses + Contnrs, Variants, + uDARes, uDAExceptions, uDAXMLUtils, uROXMLIntf, + TypInfo, uDAEngine, uDAWhere; + + +const + sUTF8ToAnsiError = 'Can''t decode UTF8 string to ansi string: "%s"'; + +procedure CheckUTF8Decode(const aOriginalStr: Utf8String; aDecodedStr: string); +begin + if (aDecodedStr = '') and (aOriginalStr <> '') then raise Exception.CreateFmt(sUTF8ToAnsiError, [aOriginalStr]); +end; +{ DataAbstractService } + +constructor TDataAbstractService.Create(aOwner : TComponent); +begin + fAllowDataAccess := true; + fAllowSchemaAccess := true; + fAllowDynamicSelect := true; + fAllowDynamicWhere := true; + fAllowUpdates := true; + fAutoCreateBusinessProcessors := true; + fProcessDeltasWithoutUpdateRules := true; + fAcquireConnection := true; + fExportedDataTables := TDADataTableReferenceCollection.Create(Self); + inherited; +end; + +destructor TDataAbstractService.Destroy; +begin + inherited; + FreeAndNIL(fExportedDataTables); +end; + +procedure TDataAbstractService.Notification(AComponent: TComponent; Operation: TOperation); +var + lRef: TDADataTableReference; +begin + inherited; + + if (Operation = opRemove) then begin + + if ((AComponent is TDADataTable) or (AComponent is TDataSet)) and (fExportedDataTables.Count > 0) then begin + lRef := fExportedDataTables.FindByDataTable(TDADataTable(aComponent)); + if (lRef<>NIL) then lRef.DataTable := NIL; + end else if (AComponent = ServiceSchema) then + ServiceSchema := nil + else if (AComponent = ServiceDataStreamer) then + ServiceDataStreamer := nil; + end + +end; + +function TDataAbstractService.TriggerTransactionEvent(aEvent: TDAUpdateDataTransactionEvent): boolean; +begin + result := true; + if assigned(aEvent) then aEvent(self, result); +end; + +{ IDataAbstractService: Schema Access } + +function TDataAbstractService.GetSchema(const aFilter: Utf8String): Utf8String; +var + xml: TStringStream; + dummyrefs: TObjectList; + tempSchema: TDASchema; + + procedure MergeDatatablesToSchema(aList: TObjectList); + var i : integer; + ref : TDADataset; + dt : IDADataset; + begin + for i := 0 to fExportedDataTables.Count-1 do + if fExportedDataTables[i].IsValidReference then begin + dt := fExportedDataTables[i].Dataset; + + ref := tempSchema.Datasets.Add; + ref.Name := dt.LogicalName; + ref.Fields.AssignFieldCollection(dt.Fields); + ref.Params.AssignParamCollection(dt.Params); + + aList.Add(ref); + end; + end; + +begin + if not AllowSchemaAccess then + raise Exception.Create('Schema access has been disabled (GetSchema)'); + + tempSchema := ServiceSchema; + if not Assigned(tempSchema) and (fExportedDataTables.Count<>0) then + tempSchema := TDASchema.Create(nil); + + if not Assigned(tempSchema) then + raise Exception.Create('ServiceSchema property is not assigned and no data tables are exported.'); + + dummyrefs := nil; + try + // New: merges the data tables references by the service + if (fExportedDataTables.Count>0) then begin + dummyrefs := TObjectList.Create(true);; + MergeDatatablesToSchema(dummyrefs); + end; + + // Returns the schema + xml := TStringStream.Create(''); + try + tempSchema.SaveToStream(xml); + + result := AnsiToUtf8(xml.DataString); + + if Assigned(fOnGetSchemaAsXML) then fOnGetSchemaAsXML(Self, result); + finally + xml.Free; + end; + + finally + FreeAndNil(dummyrefs); // automatically removes the datatables from the schema again + if tempSchema <> ServiceSchema then tempSchema.Free; + end; +end; + +function TDataAbstractService.GetTableSchema(const aTableNameArray: StringArray): Utf8String; + + function CreateDatasetFromIDADataset(aRef: IDADataset): TDADataset; + begin + Result := TDADataset.Create(nil); + Result.Name := aRef.LogicalName; + Result.Fields.AssignFieldCollection(aRef.Fields); + Result.Params.AssignParamCollection(aRef.Params); + end; + +var + lxml: IXMLDocument; + i: integer; + lDataSet: TDADataset; + lDataTableRef: TDADataTableReference; + lNeedDeleteDataset: Boolean; + lTableName: string; +begin + if not AllowSchemaAccess then + raise Exception.Create('Schema access has been disabled (GetTableSchema)'); + + if not Assigned(ServiceSchema) and (fExportedDataTables.Count=0) then + raise Exception.Create('ServiceSchema property is not assigned and no data tables are exported.'); + + // Returns the schema + lxml := NewROXmlDocument; + lxml.New('DataTables'); + try + for i := 0 to aTableNameArray.Count - 1 do begin + lTableName := Utf8ToAnsi(aTableNameArray[i]); + CheckUTF8Decode(aTableNameArray[i], lTableName); + lDataSet := nil; + if (fExportedDataTables.Count > 0) then begin + lDataTableRef := fExportedDataTables.FindByName(lTableName); + if lDataTableRef <> nil then lDataSet := CreateDatasetFromIDADataset(lDataTableRef.Dataset); + end; + lNeedDeleteDataset := lDataSet <> nil; + if not lNeedDeleteDataset and (ServiceSchema <> nil) then + lDataSet := ServiceSchema.Datasets.DatasetByName(lTableName); + try + if lDataSet <> nil then begin + // if Assigned(fBeforeGetDatasetSchema) then fBeforeGetDatasetSchema(Self, lDataset as IDADataset); + SaveObjectToXMLNode(lDataSet, lxml.DocumentNode.Add('SchemaDataTable'), [], [], False); + //if Assigned(FAfterGetDatasetSchema) then FAfterGetDatasetSchema(Self, lDataset as IDADataset); + if not (lDataSet.IsPublic) then + raise EDAException.Create(lDataset.Name +' is not accessible'); + end; + finally + if lNeedDeleteDataset then lDataSet.Free; + end; + end; + Result := UTF8Encode(lxml.DocumentNode.XML); + finally + lxml := nil; + end; +end; + +function TDataAbstractService.GetCommandSchema(const aCommandNameArray: StringArray): Utf8String; +var + lxml: IXMLDocument; + i: integer; + lSQLCommand: TDASQLCommand; + lCommand: string; +begin + if not AllowSchemaAccess then + raise Exception.Create('Schema access has been disabled (GetCommandSchema)'); + + if not Assigned(ServiceSchema) then + raise Exception.Create('ServiceSchema property is not assigned.'); + + // Returns the schema + lxml := NewROXmlDocument; + lxml.New('Commands'); + try + for i := 0 to aCommandNameArray.Count - 1 do begin + lCommand:=Utf8ToAnsi(aCommandNameArray[i]); + CheckUTF8Decode(aCommandNameArray[i], lCommand); + lSQLCommand:=ServiceSchema.Commands.SQLCommandByName(lCommand); + if lSQLCommand <> nil then begin + if not lSQLCommand.IsPublic then + raise EDAException.Create(lSqlCommand.Name +' is not accessible'); + SaveObjectToXMLNode(lSQLCommand, lxml.DocumentNode.Add('SchemaCommand'), [], [], False); + end; + end; + result := UTF8Encode(lxml.DocumentNode.XML); + finally + lxml := nil; + end; +end; + +{ IDataAbstractService: Data Access } + +function TDataAbstractService.GetData(const aTableNameArray: StringArray; const aTableRequestInfoArray: TableRequestInfoArray): Binary; +var + i, j, x, n,k: integer; + lParamNames: array of string; + lParamValues: array of Variant; + lOptions: TDAWriteOptions; + lAllow: boolean; + lDataSet: IDADataSet; + lEditableDataset: IDAEditableDataset; + lHasTransaction: boolean; + lMaxRecords: integer; + lDataTableRef: TDADataTableReference; + lDynSelectFields: array of string; + lDynSelectFields2: array of string; + lWhereClause: WideString; + lConnection: IDAConnection; + lTableName: String; + lDataTable: TDADataset; + lUnionTable: TDAUnionDataTable; + lAppendData: TDADataForAppend; + lMapping: TDAColumnMappingCollection; + lFilter: string; + +begin + if not AllowDataAccess then + raise Exception.Create('Data access has been disabled (GetData)'); + + result := nil; + if not assigned(aTableNameArray) or (aTableNameArray.Count = 0) then exit; + + if assigned(aTableRequestInfoArray) and (aTableNameArray.Count <> aTableRequestInfoArray.Count) then + raise Exception.Create('Number of items passed to aTableNameArray and aTableRequestInfoArray do not match.'); + + Check(True); + + result := Binary.Create; + Result.CapacityIncrement := ServiceDataStreamer.BufferSize; + try + lHasTransaction := false; + try + + ServiceDataStreamer.Initialize(result, aiWrite); + try + for i := 0 to (aTableNameArray.Count-1) do begin + + lTableName := Utf8ToAnsi(aTableNameArray[i]); + CheckUTF8Decode(aTableNameArray[i], lTableName); + if ServiceSchema <> nil then lDataTable := ServiceSchema.FindDataset(lTableName) else lDataTable:=nil; + lOptions := [woRows]; + lMaxRecords := -1; + SetLength(lDynSelectFields,0); + lWhereClause := ''; + + if assigned(aTableRequestInfoArray) and assigned(aTableRequestInfoArray[i]) then with aTableRequestInfoArray[i] do begin + SetLength(lParamNames, Parameters.Count); + SetLength(lParamValues, Parameters.Count); + for j := 0 to (Parameters.Count-1) do begin + lParamNames[j] := Utf8ToAnsi(Parameters[j].Name); + CheckUTF8Decode(Parameters[j].Name, lParamNames[j]); + lParamValues[j] := Parameters[j].Value; + end; + + if IncludeSchema then lOptions := lOptions+[woSchema]; + lMaxRecords := MaxRecords; + + // v5 TableRequestInfo + if aTableRequestInfoArray[i] is TableRequestInfoV5 then + with TableRequestInfoV5(aTableRequestInfoArray[i]) do begin + if assigned(DynamicSelectFieldNames) then begin + if AllowDynamicSelect then begin + SetLength(lDynSelectFields,DynamicSelectFieldNames.Count); + for j := 0 to DynamicSelectFieldNames.Count-1 do begin + CheckUTF8Decode(DynamicSelectFieldNames[j], Utf8ToAnsi(DynamicSelectFieldNames[j])); + lDynSelectFields[j] := Trim(Utf8ToAnsi(DynamicSelectFieldNames[j])); + end; + if DynamicSelectFieldNames.Count > 0 then lOptions := lOptions+[woSchema]; + end else begin + raise EDAException.Create('DynamicSelect support has been disabled (GetData)'); + end; + end; + if assigned(TableRequestInfoV5(aTableRequestInfoArray[i]).WhereClause) then begin + if AllowDynamicWhere then + lWhereClause := WhereClause.XML + else + raise EDAException.Create('DynamicWhere support has been disabled (GetData)'); + end; + end; + end; + + if (fExportedDataTables.Count > 0) and Assigned(fExportedDataTables.FindByName(lTableName)) then begin + lConnection := nil; + end + else begin + Check(); + //lConnection := GetConnectionForObject(aTableNameArray[i]); + end; + + lAllow := true; + if assigned(fGetDatasetDataValidation) then fGetDatasetDataValidation(self, {l}Connection, lTableName, lParamNames, lParamValues, ServiceSchema, lAllow); + if not lAllow then raise EDADatasetNotAccessible.CreateFmt(err_DatasetNotAccessible, [lTableName]); + + lDataSet := nil; + if (fExportedDataTables.Count > 0) then begin + lDataTableRef := fExportedDataTables.FindByName(lTableName); + if assigned(lDataTableRef) then lDataSet := lDataTableRef.Dataset; + end; + + if not assigned(lDataSet) then begin + + // Create transaction, if needed + if not lHasTransaction then begin + if TriggerTransactionEvent(fOnUpdateDataBeginTransaction) then begin + Connection.BeginTransaction; + lHasTransaction := true; + end; + end; + + lDataTable := ServiceSchema.FindDataset(lTableName); + + { Unions } + if lDataTable is TDAUnionDataTable then begin + + if (aTableRequestInfoArray <> nil) then begin + lFilter:=Utf8ToAnsi(aTableRequestInfoArray[i].UserFilter); + CheckUTF8Decode(aTableRequestInfoArray[i].UserFilter,lFilter); + if (Trim(lFilter)<>'') then + raise EDAException.Create('Passing of clear text WHERE clauses is not supported for UNIONS (GetData)'); + end; + lUnionTable := lDataTable as TDAUnionDataTable; + lAppendData := ServiceDataStreamer.BeginWriteDataset({Source}nil, {Schema}lDataTable, lOptions, lMaxRecords, lDynSelectFields); + if not (woRows in lOptions) then Continue; + + for x := 0 to lUnionTable.SourceTables.Count - 1 do begin + lTableName := lUnionTable.SourceTables[x].Name; + + // Check is source table exists in schema. + if (not Assigned(ServiceSchema.FindDataset(lTableName))) then + raise EDAException.CreateFmt('Source table %s doesn''t exist in schema.', [lTableName]); + + // Do column remapping for DynFields names + lMapping := lUnionTable.SourceTables[x].ColumnMappings; + SetLength(lDynSelectFields2, Length(lDynSelectFields)); + for n := Low(lDynSelectFields) to High(lDynSelectFields) do begin + if (lDynSelectFields[n]) = def_SourceTableFieldName then + lDynSelectFields2[n] := lDynSelectFields[n] + else + lDynSelectFields2[n] := lMapping.MappingByDatasetField(lDynSelectFields[n]).TableField; + end; + + //Remove that + //lRemappedWhereClause := Where_RemapFieldNames(lWhereClause, lMapping, lTableName); + + lDataSet := ServiceSchema.NewUnionItemDataset( + GetConnectionForObject(lTableName), + lTableName, + lParamNames, + lParamValues, + lDynSelectFields2, + lWhereClause, + lMapping + ); + + ServiceDataStreamer.WriteDatasetData(lDataSet, lAppendData, x); + // Keeping track of maxrecords + if ((lMaxRecords <> -1) and (lAppendData.RecordCount >= lMaxRecords)) then Break; + end; + ServiceDataStreamer.EndWriteDataset(lAppendData); + end + { Joins } + else if lDataTable is TDAJoinDataTable then begin + raise EDAException.Create('TODO: Joined Data Tables are not implemented in this release, yet.'); + end + { Plain Data Tables } + else begin + + lDataSet := ServiceSchema.NewDataset(GetConnectionForObject(lTableName), lTableName, lParamNames, lParamValues, lDynSelectFields, lWhereClause, False); + + if (woSchema in lOptions) and Assigned(fBeforeGetDatasetSchema) then fBeforeGetDatasetSchema(self, lDataset); + if (woRows in lOptions) and Assigned(fBeforeGetDatasetData) then fBeforeGetDatasetData(self, lDataset, (woSchema in lOptions), lMaxRecords); + + if (aTableRequestInfoArray <> nil) then begin + lFilter:=Utf8ToAnsi(aTableRequestInfoArray[i].UserFilter); + CheckUTF8Decode(aTableRequestInfoArray[i].UserFilter,lFilter); + if (Trim(lFilter)<>'') then begin + if not AllowWhereSQL then raise Exception.Create('Passing of clear text WHERE clauses has been disabled (GetData)'); + lDataSet.Where.AddText(lFilter); + for k := 0 to High(lParamValues) do + lDataSet.ParamByName(lParamNames[k]).Value := lParamValues[k]; + end; + end; + lDataSet.Open; + + ServiceDataStreamer.WriteDataset(lDataset, lOptions, lMaxRecords,lDynSelectFields); + + if (woRows in lOptions) and Assigned(fAfterGetDatasetData) then fAfterGetDatasetData(self, lDataset, (woSchema in lOptions), lMaxRecords); + if (woSchema in lOptions) and Assigned(fAfterGetDatasetSchema) then fAfterGetDatasetSchema(self, lDataset); + + end; + + end + { ExportedDataTables } + else begin + lFilter:=Utf8ToAnsi(aTableRequestInfoArray[i].UserFilter); + CheckUTF8Decode(aTableRequestInfoArray[i].UserFilter,lFilter); + if (Trim(lFilter)<>'') then + raise EDAException.Create('WHERE clauses are not supported on data from ExportedDataTables.'); + + if (woSchema in lOptions) and Assigned(fBeforeGetDatasetSchema) then fBeforeGetDatasetSchema(self, lDataset); + if (woRows in lOptions) and Assigned(fBeforeGetDatasetData) then fBeforeGetDatasetData(self, lDataset, (woSchema in lOptions), lMaxRecords); + + if lDataSet.Active and (lMaxRecords = -1) then begin + if lDataSet.QueryInterface(IDAEditableDataset,lEditableDataset) = s_ok then + lEditableDataset.First + else + lDataSet.Close; + end; + + if not lDataSet.Active then lDataSet.Open; + ServiceDataStreamer.WriteDataset(lDataset, lOptions, lMaxRecords,lDynSelectFields); + + if (woRows in lOptions) and Assigned(fAfterGetDatasetData) then fAfterGetDatasetData(self, lDataset, (woSchema in lOptions), lMaxRecords); + if (woSchema in lOptions) and Assigned(fAfterGetDatasetSchema) then fAfterGetDatasetSchema(self, lDataset); + end; + + if assigned(lDataTable) and not (lDataTable.IsPublic) then + raise EDAException.Create(lDataTable.Name +' is not accessible'); + + lDataSet := nil; + end; { for } + + finally + ServiceDataStreamer.Finalize(); + end; + + if lHasTransaction and Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataCommitTransaction) then Connection.CommitTransaction; + except + if lHasTransaction and Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataRollBackTransaction) then Connection.RollbackTransaction; + raise; + end; + + except + FreeAndNIL(result); + raise; + end; + +end; + +//TODO: needs cleaning! +function TDataAbstractService.UnpackDeltas(const DeltaStream: Binary; DeltaStructList: TDADeltaStructList): TDADeltasModes; +var + i, j: integer; + lDeltaName: string; + lBizProc: TDABusinessProcessor; + lDetails : TDADatasetRelationshipList; + lFound: boolean; + lStruct : TDADeltaStruct; + ltabRef: TDADataTableReference; +begin + result := []; + Check(True); + // Reads the deltas. + ServiceDataStreamer.Initialize(DeltaStream, aiReadFromBeginning); + try + if (ServiceDataStreamer.DeltaCount = 0) then Exit; + for i := 0 to (ServiceDataStreamer.DeltaCount - 1) do begin + lDeltaName := ServiceDataStreamer.DeltaNames[i]; + if (ExportedDataTables.Count >0) then begin + ltabRef := ExportedDataTables.FindByName(lDeltaName); + if Assigned(ltabRef) then begin + // for ExportedDataTables , BP=nil + lStruct := DeltaStructList.Add(NewDelta(lDeltaName), nil); + ServiceDataStreamer.ReadDelta(lDeltaName, lStruct.Delta); + Result:=Result+[dumExported]; + Continue; + end; + end; + lFound := false; + { Tries to locate a user-defined business processor } + for j := 0 to (Self.ComponentCount - 1) do begin + if (Self.Components[j] is TDABusinessProcessor) then begin + lBizProc := TDABusinessProcessor(Self.Components[j]); + if SameText(lBizProc.ReferencedDataset, lDeltaName) and (lBizProc.Schema = fServiceSchema) then begin + lStruct := DeltaStructList.Add(NewDelta(lDeltaName), lBizProc); + ServiceDataStreamer.ReadDelta(lDeltaName, lStruct.Delta); + if ServiceDataStreamer.HasReducedDelta then begin + if (lBizProc.InsertCommandName <> '') or + (lBizProc.DeleteCommandName <> '') or + (lBizProc.UpdateCommandName <> '') or + ([poAutoGenerateInsert,poAutoGenerateUpdate,poAutoGenerateDelete]*lBizProc.ProcessorOptions <>[poAutoGenerateInsert,poAutoGenerateUpdate,poAutoGenerateDelete]) then + raise Exception.Create('SendReducedDelta option is uncompatible with '+lBizProc.Name+' settings'); + end; + lFound := true; + Break; + end; + end; + end; + + { Either creates one or aborts raising an exception } + if not lFound then begin + if not AutoCreateBusinessProcessors then + raise Exception.CreateFmt(err_DARDMCannotFindProxessorForDelta, [lDeltaName]); + + //ToDo: this will never get freed, until the DM frees? + lBizProc := TDABusinessProcessor.Create(self); + lBizProc.ReferencedDataset := lDeltaName; + lBizProc.Schema := ServiceSchema; + if Assigned(fOnBusinessProcessorAutoCreated) then fOnBusinessProcessorAutoCreated(Self, lBizProc); + + lStruct := DeltaStructList.Add(NewDelta(lDeltaName), lBizProc); + ServiceDataStreamer.ReadDelta(lDeltaName, lStruct.Delta); + + end; + + Result:=Result+[dumStandard]; + end; + fHasReducedDelta := ServiceDataStreamer.HasReducedDelta; + if not (dumStandard in Result) then exit; // nothing to process + Check; + { Sets the master/detail relationships } + if (ServiceSchema.RelationShips.Count>0) then begin + + lDetails := TDADatasetRelationshipList.Create; + try + for i := 0 to DeltaStructList.Count-1 do begin + ServiceSchema.RelationShips.GetDetails(DeltaStructList[i].BusinessProcessor.ReferencedDataset, lDetails); + if (lDetails.Count=0) then Continue; + + { Prepares an array with the references to the detail deltas that will be used later on to adjust + autoincs, etc. } + for j := 0 to lDetails.Count-1 do begin + lStruct := DeltaStructList.FindStruct(lDetails[j].DetailDatasetName); + if assigned(lStruct) then begin + DeltaStructList[i].DetailDeltas.Add(lStruct.Delta); + DeltaStructList[i].RelationShips.Add(lDetails[j]); + end; + end; + end; + finally + lDetails.Free; + end; + + end; + finally + ServiceDataStreamer.Finalize; + end; +end; + +function TDataAbstractService.UpdateData(const aDelta: Binary): Binary; +var + lProcessedDeltas: TStringList; + lDeltaStructs: TDADeltaStructList; + lStruct: TDADeltaStruct; + lDs: TDADataset; + lDoRaise: boolean; + i,j: integer; + modes: TDADeltasModes; + oldDeltaMode: Boolean; +begin + if not AllowDataAccess then + raise Exception.Create('Data access has been disabled (UpdateData)'); + + if not AllowUpdates then + raise Exception.Create('Data updates have been disabled (UpdateData)'); + + result := nil; + fHasReducedDelta := False; + + lDeltaStructs := TDADeltaStructList.Create; + try + + try + modes:= UnpackDeltas(aDelta, lDeltaStructs); + if modes = [] then exit; + + if dumStandard in modes then begin + Check; + if TriggerTransactionEvent(fOnUpdateDataBeginTransaction) then Connection.BeginTransaction; + end; + if Assigned(fBeforeProcessDeltas) then fBeforeProcessDeltas(Self, lDeltaStructs); + + for i := 0 to lDeltaStructs.Count-1 do begin + if ServiceSchema <> nil then + lDs := ServiceSchema.FindDataset(lDeltaStructs[i].Delta.LogicalName) + else + lDs := nil; + if lDs <> nil then begin + if not lDs.IsPublic then + raise EDAException.Create(lDs.Name+' is not accessible'); + if lDs.ReadOnly then + raise EDAException.Create(lDs.Name+' is read-only'); + end; + end; + if dumExported in modes then + // Processes the delta for exported tables (BP=nil) + for i := 0 to lDeltaStructs.Count-1 do begin + if lDeltaStructs[i].BusinessProcessor = nil then + ExportedDataTables_MergeDelta(lDeltaStructs[i].Delta); + end; + if dumStandard in modes then begin + if (ServiceSchema.UpdateRules.Count = 0) and ProcessDeltasWithoutUpdateRules then begin + + // Processes them in order, from first to last delta sent + for i := 0 to lDeltaStructs.Count-1 do + if lDeltaStructs[i].BusinessProcessor <> nil then begin + oldDeltaMode:=lDeltaStructs[i].BusinessProcessor.HasReducedDelta; + try + lDeltaStructs[i].BusinessProcessor.HasReducedDelta:=fHasReducedDelta; + // TODO: Handle GetConnectionForObject() for 'Rosetta', UNIONS and JOINS + lDeltaStructs[i].BusinessProcessor.ProcessDelta(GetConnectionForObject(lDeltaStructs[i].BusinessProcessor.ReferencedDataset), lDeltaStructs[i].Delta, AllChanges); + finally + lDeltaStructs[i].BusinessProcessor.HasReducedDelta:=oldDeltaMode; + end; + + with lDeltaStructs[i] do + for j := 0 to (DetailDeltas.Count-1) do + BusinessProcessor.SynchronizeAutoIncs(Delta, DetailDeltas[j], RelationShips[j]); + end; + end + else begin + lProcessedDeltas := TStringList.Create; + try + + for i := 0 to (ServiceSchema.UpdateRules.Count-1) do begin + // Processes them in the order defined in the schema + lStruct := lDeltaStructs.FindStruct(ServiceSchema.UpdateRules[i].DatasetName); + if assigned(lStruct) then begin + if lStruct.BusinessProcessor = nil then Continue; + // Adds the dataset name to the list of processed deltas. Those that don't have update rules will be processed later + lProcessedDeltas.Add(lStruct.Delta.LogicalName); + + // Processes the delta + oldDeltaMode:=lStruct.BusinessProcessor.HasReducedDelta; + try + lStruct.BusinessProcessor.HasReducedDelta:=fHasReducedDelta; + // TODO: Handle GetConnectionForObject() for 'Rosetta', UNIONS and JOINS + lStruct.BusinessProcessor.ProcessDelta(GetConnectionForObject(lStruct.BusinessProcessor.ReferencedDataset), lStruct.Delta, ServiceSchema.UpdateRules[i].ChangeTypes); + finally + lStruct.BusinessProcessor.HasReducedDelta:=oldDeltaMode; + end; + + if (ctInsert in ServiceSchema.UpdateRules[i].ChangeTypes) then begin + for j := 0 to (lStruct.DetailDeltas.Count-1) do + lStruct.BusinessProcessor.SynchronizeAutoIncs(lStruct.Delta, lStruct.DetailDeltas[j], lStruct.RelationShips[j]); + end; + end; + end; + + // Processes the deltas for which update rules were not defined + if (ProcessDeltasWithoutUpdateRules) then begin + for i := 0 to lDeltaStructs.Count-1 do begin + // Skips if already processed + if (lProcessedDeltas.IndexOf(lDeltaStructs[i].Delta.LogicalName)>=0) then Continue; + + if lDeltaStructs[i].BusinessProcessor <> nil then begin + oldDeltaMode:=lDeltaStructs[i].BusinessProcessor.HasReducedDelta; + try + lDeltaStructs[i].BusinessProcessor.HasReducedDelta:=fHasReducedDelta; + lDeltaStructs[i].BusinessProcessor.ProcessDelta(GetConnectionForObject(lDeltaStructs[i].BusinessProcessor.ReferencedDataset), lDeltaStructs[i].Delta, AllChanges); + finally + lDeltaStructs[i].BusinessProcessor.HasReducedDelta:=oldDeltaMode; + end; + + with lDeltaStructs[i] do + for j := 0 to (DetailDeltas.Count-1) do + BusinessProcessor.SynchronizeAutoIncs(Delta, DetailDeltas[j], RelationShips[j]); + end; + end; + end; + + finally + lProcessedDeltas.Free; + end; + end; + end; + + if Assigned(fAfterProcessDeltas) then fAfterProcessDeltas(Self, lDeltaStructs); + + if dumStandard in modes then + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataCommitTransaction) then Connection.CommitTransaction; + + // Check for unhandled changes + for i := 0 to lDeltaStructs.Count-1 do begin + for j := 0 to lDeltaStructs[i].Delta.Count -1 do begin + if lDeltaStructs[i].Delta[j].Status = csPending then begin + lDeltaStructs[i].Delta[j].Status := csFailed; + lDeltaStructs[i].Delta[j].Message := 'Change was not processed'; + end; + end; + end; + result := Binary.Create; + oldDeltaMode:=ServiceDataStreamer.SendReducedDelta; + ServiceDataStreamer.Initialize(result, aiWrite); + try + if fHasReducedDelta then ServiceDataStreamer.SendReducedDelta:=True; + for i := 0 to lDeltaStructs.Count-1 do + ServiceDataStreamer.WriteDelta(lDeltaStructs[i].Delta); + finally + ServiceDataStreamer.Finalize; + ServiceDataStreamer.SendReducedDelta:=oldDeltaMode; + end; + + except + on E:Exception do begin + lDoRaise := true; + try + if Assigned(fOnProcessDeltasError) then fOnProcessDeltasError(Self, lDeltaStructs, E, lDoRaise); + finally + if dumStandard in modes then + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataRollBackTransaction) then Connection.RollbackTransaction; + end; + if lDoRaise then raise; + end; + end; + finally + lDeltaStructs.Free; + end; +end; + +function TDataAbstractService.ExecuteCommand(const aCommandName: Utf8String; const aParameterArray: DataParameterArray): Integer; +var + j: integer; + lParamNames: array of string; + lParamValues: array of Variant; + lAllow: boolean; + lCommand: IDASQLCommand; + lCommandSchema: TDASQLCommand; + lConnection: IDAConnection; + lCommandName: string; +begin + if not AllowDataAccess then + raise Exception.Create('Data access has been disabled (ExecuteCommand)'); + + if not AllowExecuteCommands then + raise Exception.Create('Execution of commands has been disabled (ExecuteCommand)'); + + SetLength(lParamNames, aParameterArray.Count); + SetLength(lParamValues, aParameterArray.Count); + for j := 0 to (aParameterArray.Count-1) do begin + lParamNames[j] := Utf8ToAnsi(aParameterArray[j].Name); + CheckUTF8Decode(aParameterArray[j].Name,lParamNames[j]); + lParamValues[j] := aParameterArray[j].Value; + end; + + lCommandName:=Utf8ToAnsi(aCommandName); + CheckUTF8Decode(aCommandName,lCommandName); + lCommandSchema := ServiceSchema.Commands.SQLCommandByName(lCommandName); + if assigned(lCommandSchema) and not (lCommandSchema.IsPublic) then + raise EDAException.Create(lCommandSchema.Name +' is not accessible'); + + + lAllow := true; + lConnection := GetConnectionForObject(lCommandName); + if assigned(fExecuteCommandValidation) then fExecuteCommandValidation(self, lConnection, lCommandName, lParamNames, lParamValues, ServiceSchema, lAllow); + if not lAllow then raise EDADatasetNotAccessible.CreateFmt(err_CommandNotAccessible, [lCommandName]); + + if TriggerTransactionEvent(fOnUpdateDataBeginTransaction) then lConnection.BeginTransaction; + try + + lCommand := ServiceSchema.NewCommand(lConnection, lCommandName, lParamNames, lParamValues, false); + if Assigned(fBeforeExecutecommand) then fBeforeExecuteCommand(self, lCommand); + result := lCommand.Execute; + if assigned(fAfterExecutecommand) then fAfterExecuteCommand(self, lCommand, Result); + + if lConnection.InTransaction and TriggerTransactionEvent(fOnUpdateDataCommitTransaction) then lConnection.CommitTransaction; + except + if lConnection.InTransaction and TriggerTransactionEvent(fOnUpdateDataRollBackTransaction) then lConnection.RollbackTransaction; + raise; + end; +end; + +{ IDataAbstractService: Direct SQL Access } + +function TDataAbstractService.SQLGetDataEx(const aSQLText: Utf8String; + const aIncludeSchema: Boolean; const aMaxRecords: Integer; + const aDynamicWhereXML: Widestring): Binary; +var + lOptions: TDAWriteOptions; + lDataSet: IDADataSet; + lAllow: boolean; + lSQLText: string; +begin + if not AllowDataAccess then + raise Exception.Create('Data access has been disabled (SQLGetData)'); + + if not AllowExecuteSQL then + raise Exception.Create('Execution of SQL has been disabled (SQLGetData)'); + + if assigned(fHETConnection) then + raise Exception.Create('Execution of SQL isnot supported for HET Connections'); + + result := nil; + lSQLText := Utf8ToAnsi(aSQLText); + CheckUTF8Decode(aSQLText,lSQLText); + if lSQLText = '' then exit; + + Check(); + + lAllow := true; + if assigned(fSQLValidation) then fSQLValidation(self, Connection, lSQLText, [], [], lAllow); + if not lAllow then raise EDADatasetNotAccessible.Create(err_SQLNotPermitted); + + result := Binary.Create; + Result.CapacityIncrement := ServiceDataStreamer.BufferSize; + try + if TriggerTransactionEvent(fOnUpdateDataBeginTransaction) then Connection.BeginTransaction; + try + ServiceDataStreamer.Initialize(result, aiWrite); + try + + lOptions := [woRows]; + if aIncludeSchema then lOptions := lOptions+[woSchema]; + + lDataSet := Connection.NewDataset(lSQLText,'SQLResult'); + try + if aDynamicWhereXML <> '' then lDataSet.DynamicWhere.Expression := lDataSet.DynamicWhere.XMLToExpression(aDynamicWhereXML); + if (woSchema in lOptions) and Assigned(fBeforeGetDatasetSchema) then fBeforeGetDatasetSchema(self, lDataset); + if (woRows in lOptions) and Assigned(fBeforeGetDatasetData) then fBeforeGetDatasetData(self, lDataset, (woSchema in lOptions), aMaxRecords); + + lDataSet.Open(); + + ServiceDataStreamer.WriteDataset(lDataset, lOptions, aMaxRecords); + + if (woRows in lOptions) and Assigned(fAfterGetDatasetData) then fAfterGetDatasetData(self, lDataset, (woSchema in lOptions), aMaxRecords); + if (woSchema in lOptions) and Assigned(fAfterGetDatasetSchema) then fAfterGetDatasetSchema(self, lDataset); + + finally + lDataSet := nil; + end; + + finally + ServiceDataStreamer.Finalize(); + end; + + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataCommitTransaction) then Connection.CommitTransaction; + except + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataRollBackTransaction) then Connection.RollbackTransaction; + raise; + end; + + except + FreeAndNIL(result); + raise; + end; + +end; + +function TDataAbstractService.SQLExecuteCommandEx(const aSQLText: Utf8String; const aDynamicWhereXML: Widestring): Integer; +var + lAllow: boolean; + lSQLText: string; +begin + if not AllowDataAccess then + raise Exception.Create('Data access has been disabled (SQLExecuteCommand)'); + + if not AllowExecuteSQL then + raise Exception.Create('Execution of SQL has been disabled (SQLExecuteCommand)'); + + if assigned(fHETConnection) then + raise Exception.Create('Execution of SQL isnot supported for HET Connections'); + + Check(); + lSQLText := Utf8ToAnsi(aSQLText); + CheckUTF8Decode(aSQLText,lSQLText); + lAllow := true; + if assigned(fSQLValidation) then fSQLValidation(self, Connection, lSQLText, [], [], lAllow); + if not lAllow then raise EDADatasetNotAccessible.CreateFmt(err_SQLNotPermitted, []); + + if TriggerTransactionEvent(fOnUpdateDataBeginTransaction) then Connection.BeginTransaction; + try + with Connection.NewCommand(lSQLText, stSQL) do begin + if aDynamicWhereXML <> '' then DynamicWhere.Expression := DynamicWhere.XMLToExpression(aDynamicWhereXML); + result := Execute; + end; + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataCommitTransaction) then Connection.CommitTransaction; + except + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataRollBackTransaction) then Connection.RollbackTransaction; + raise; + end; +end; + +{ Properties } + +procedure TDataAbstractService.SetExportedDataTables(const Value: TDADataTableReferenceCollection); +begin + fExportedDataTables.Assign(Value); +end; + +procedure TDataAbstractService.SetServiceDataStreamer(const Value: TDADataStreamer); +begin + fServiceDataStreamer := Value; + if (fServiceDataStreamer <> nil) then + fServiceDataStreamer.FreeNotification(Self); +end; + +procedure TDataAbstractService.SetServiceSchema(const Value: TDASchema); +begin + fServiceSchema := Value; + + if assigned(fServiceSchema) then + fServiceSchema.FreeNotification(self); +end; + +{ Connections } + +function TDataAbstractService.GetConnection: IDAConnection; +var + lConnectionName: string; +begin + inherited; + result := fConnection; + if assigned(fConnection) then exit; + if (csDesigning in ComponentState) then exit; + + if AcquireConnection then try + + if (fServiceSchema = nil) or (fServiceSchema.ConnectionManager = nil) then raise Exception.Create(err_DARDMInvalidSchema); + + lConnectionName := ConnectionName; + if Assigned(fBeforeAcquireConnection) then fBeforeAcquireConnection(Self, lConnectionName); + + result := ServiceSchema.ConnectionManager.NewConnection(lConnectionName); + Connection := result; + if Assigned(fAfterAcquireConnection) then fAfterAcquireConnection(Self, lConnectionName, result); + + except + on E: Exception do begin + if Assigned(fOnAcquireConnectionFailure) then fOnAcquireConnectionFailure(Self, lConnectionName, E); + raise; + end; + end; +end; + +{$WARN SYMBOL_DEPRECATED OFF} +procedure TDataAbstractService.SetConnection(aConnection: IDAConnection); +begin + if fConnection <> aConnection then begin + fConnection := aConnection; + if not Supports(fConnection, IDAHETConnection, fHETConnection) then fHETConnection := nil; + end; +end; +{$WARN SYMBOL_DEPRECATED ON} + +function TDataAbstractService.GetConnectionForObject(const aName: string): IDAConnection; +begin + result := Connection; // forces acquisition of Connection + if assigned(fHETConnection) then + result := fHETConnection.GetConnectionForObject(aName) +end; + +procedure TDataAbstractService.DoOnDeactivate(aClientID: TGUID); +begin + inherited; + if (csDesigning in ComponentState) then Exit; + + ReleaseConnection(); +end; + +procedure TDataAbstractService.ReleaseConnection; +var + lConnectionName: string; +begin + if assigned(fConnection) then begin + lConnectionName := fConnection.Name; + if Assigned(fBeforeReleaseConnection) then fBeforeReleaseConnection(Self, lConnectionName, fConnection); + Connection := nil; + if Assigned(fAfterReleaseConnection) then fAfterReleaseConnection(Self, lConnectionName); + end; +end; + +procedure TDataAbstractService.Check(CheckOnlyDataStreamer:Boolean = false); +begin + if not CheckOnlyDataStreamer then begin + if not (Assigned(Connection) or AcquireConnection) then + raise EROException.Create('AcquireConnection is not set and there is no connection available'); + if not Assigned(ServiceSchema) then + raise Exception.Create('ServiceSchema property is not assigned.'); + end; + if not Assigned(ServiceDataStreamer) then + raise EROException.Create('DataStreamer must be assigned.'); +end; + +function TDataAbstractService.ExecuteCommandEx(const aCommandName: Utf8String; + const aInputParameters: DataParameterArray; + out aOutputParameters: DataParameterArray): Integer; +var + j: integer; + lParamNames: array of string; + lParamValues: array of Variant; + lAllow: boolean; + lCommand: IDASQLCommand; + lCommandSchema: TDASQLCommand; + lConnection: IDAConnection; + lCommandName: string; +begin + if not AllowDataAccess then + raise Exception.Create('Data access has been disabled (ExecuteCommand)'); + + if not AllowExecuteCommands then + raise Exception.Create('Execution of commands has been disabled (ExecuteCommand)'); + + lCommandName:= Utf8ToAnsi(aCommandName); + CheckUTF8Decode(aCommandName,lCommandName); + SetLength(lParamNames, aInputParameters.Count); + SetLength(lParamValues, aInputParameters.Count); + for j := 0 to (aInputParameters.Count-1) do begin + lParamNames[j] := Utf8ToAnsi(aInputParameters[j].Name); + CheckUTF8Decode(aInputParameters[j].Name,lParamNames[j]); + lParamValues[j] := aInputParameters[j].Value; + end; + + lCommandSchema := ServiceSchema.Commands.SQLCommandByName(lCommandName); + if assigned(lCommandSchema) and not (lCommandSchema.IsPublic) then + raise EDAException.Create(lCommandSchema.Name +' is not accessible'); + + + lAllow := true; + lConnection := GetConnectionForObject(lCommandName); + if assigned(fExecuteCommandValidation) then fExecuteCommandValidation(self, lConnection, lCommandName, lParamNames, lParamValues, ServiceSchema, lAllow); + if not lAllow then raise EDADatasetNotAccessible.CreateFmt(err_CommandNotAccessible, [lCommandName]); + + if TriggerTransactionEvent(fOnUpdateDataBeginTransaction) then lConnection.BeginTransaction; + try + + lCommand := ServiceSchema.NewCommand(lConnection, lCommandName, lParamNames, lParamValues, false); + if Assigned(fBeforeExecutecommand) then fBeforeExecuteCommand(self, lCommand); + result := lCommand.Execute; + if assigned(fAfterExecutecommand) then fAfterExecuteCommand(self, lCommand, Result); + + aOutputParameters := DataParameterArray.Create; + for j := 0 to lCommand.Params.Count -1 do begin + if (lCommand.Params[j].ParamType <> daptUnknown) and (lCommand.Params[j].ParamType <> daptInput) then begin + with aOutputParameters.Add do begin + Name := AnsiToUtf8(lCommand.Params[j].Name); + Value := lCommand.Params[j].Value; + end; + end; + end; + if lConnection.InTransaction and TriggerTransactionEvent(fOnUpdateDataCommitTransaction) then lConnection.CommitTransaction; + except + if lConnection.InTransaction and TriggerTransactionEvent(fOnUpdateDataRollBackTransaction) then lConnection.RollbackTransaction; + raise; + end; +end; + +function TDataAbstractService.GetDatasetScripts(const DatasetNames: Utf8String): Utf8String; +var names : TStringList; + i : integer; + ds : TDADataset; + lResult: WideString; +begin + lresult := ''; + names := TStringList.Create; + try + names.CommaText :=Utf8ToAnsi(DatasetNames); + CheckUTF8Decode(DatasetNames,names.CommaText); + for i := 0 to (names.Count-1) do begin + // scripts for externaltables is not allowed + if fExportedDataTables.FindByName(names[i]) <> nil then continue; + ds := ServiceSchema.Datasets.DatasetByName(names[i]); + + lresult := lresult+Format('<%s Language="%s">', [ + names[i], + GetEnumName(TypeInfo(TROSEScriptLanguage), Ord(ds.BusinessRulesClient.ScriptLanguage)), + ds.BusinessRulesClient.Script, + names[i]]); + end; + + result := UTF8Encode(''+lresult+''); + finally + FreeAndNIL(names); + end; +end; + +procedure TDataAbstractService.ExportedDataTables_MergeDelta(ADelta: IDADelta); +var + i, k, x: integer; + oldval, newval, val : Variant; + fld : TDAField; + pkfields : string; + pkfields1: array of string; + insertfields: array of string; + keyvals, insertvals : array of variant; + LDAEditableDataset:IDAEditableDataset; + ADataset: IDADataset; + pk_array: array of boolean; +begin + // validated in UnpackDeltas + ADataset:=ExportedDataTables.FindByName(ADelta.LogicalName).Dataset; + SetLength(pk_array, ADelta.LoggedFieldCount); + for i := 0 to ADelta.LoggedFieldCount - 1 do + pk_array[i]:=False; + + for i := 0 to ADelta.KeyFieldCount - 1 do begin + x := ADelta.IndexOfLoggedField(ADelta.KeyFieldNames[i]); + if x <> -1 then pk_array[x]:=True; + end; + + SetLength(pkfields1, ADelta.KeyFieldCount); + for i := 0 to (ADelta.KeyFieldCount-1) do + pkfields1[i]:=ADelta.KeyFieldNames[i]; + if ADelta.KeyFieldCount = 0 then + begin + SetLength(pkfields1, ADelta.LoggedFieldCount); + k:=-1; + for i := 0 to (ADelta.LoggedFieldCount-1) do begin + if ADelta.LoggedFieldTypes[i] in [datUnknown, datMemo, datBlob,datWideMemo] then Continue; + inc(k); + pkfields1[k]:=ADelta.LoggedFieldNames[i]; + end; + SetLength(pkfields1,k+1); + end; + SetLength(keyvals, Length(pkfields1)); + pkfields := ''; + For i:=0 to Length(pkfields1) - 1 do + pkfields:=pkfields+pkfields1[i]+';'; + pkfields := Copy(pkfields, 1, Length(pkfields)-1); + + if (ADelta.Count>0) then begin + for i := (ADelta.Count-1) downto 0 do begin + for k := 0 to Length(pkfields1)-1 do begin + val := ADelta[i].OldValueByName[pkfields1[k]]; + keyvals[k] := val; + end; + if fHasReducedDelta and (ADelta.KeyFieldCount = 0) then begin + SetLength(pkfields1, ADelta.LoggedFieldCount); + k:=-1; + for x := 0 to (ADelta.LoggedFieldCount-1) do begin + if ADelta.LoggedFieldTypes[x] in [datUnknown, datMemo, datBlob,datWideMemo] then Continue; + pkfields:=ADelta.LoggedFieldNames[x]; + oldval:=ADelta[i].OldValueByName[pkfields]; + if ROVariantsEqual(oldval,ADelta[i].NewValueByName[pkfields]) and (VarIsNull(oldval) or (VarIsEmpty(oldval))) then Continue; + inc(k); + pkfields1[k]:=ADelta.LoggedFieldNames[x]; + end; + SetLength(pkfields1,k+1); + SetLength(keyvals,k+1); + for k := 0 to Length(pkfields1)-1 do begin + val := ADelta[i].OldValueByName[pkfields1[k]]; + keyvals[k] := val; + end; + pkfields := ''; + For x:=0 to Length(pkfields1) - 1 do + pkfields:=pkfields+pkfields1[x]+';'; + pkfields := Copy(pkfields, 1, Length(pkfields)-1); + end; + if ADataset.QueryInterface(StringToGUID('{D3E2147F-65B3-4D9D-8614-7270011FA7D5}'),LDAEditableDataset) <> 0 then exit; + LDAEditableDataset.Open; + LDAEditableDataset.First; + case ADelta[i].ChangeType of + ctDelete: begin + // Locates the original record + if Length(keyvals)=1 then begin + if not Adataset.Locate(pkfields, keyvals[0], []) then Continue; + end + else begin + if not Adataset.Locate(pkfields, keyvals, []) then Continue; + end; + LDAEditableDataset.Delete; + end; + ctInsert: begin + // fHasReducedDelta don't work in this case + // old values = Unassigned + // new Values = Null + SetLength(insertFields, ADelta.LoggedFieldCount); + SetLength(insertvals, ADelta.LoggedFieldCount); + for x := 0 to (ADelta.LoggedFieldCount-1) do begin + insertfields[x] := ADelta.LoggedFieldNames[x]; + insertvals[x] := ADelta[i].NewValueByName[ADelta.LoggedFieldNames[x]]; + end; + LDAEditableDataset.AddRecord(insertfields,insertvals); + end; + ctUpdate: begin + // Locates the original record + if Length(keyvals)=1 then begin + if not Adataset.Locate(pkfields, keyvals[0], []) then Continue; + end + else begin + if not Adataset.Locate(pkfields, keyvals, []) then Continue; + end; + LDAEditableDataset.Edit; + for x := 0 to (ADelta.LoggedFieldCount-1) do begin + fld := Adataset.FieldByName(ADelta.LoggedFieldNames[x]); + newval := ADelta[i].NewValueByName[fld.Name]; + oldval := ADelta[i].OldValueByName[fld.Name]; + if fHasReducedDelta and (ROVariantsEqual(newval, oldval)) then Continue; + fld.Value:=newval; +{ if fld.ServerAutoRefresh or (not VarIsArray(newVal) and (newval<>oldval)) then begin + VariantToFieldValue(newval, fld); + end; +} + end; + LDAEditableDataset.Post; + end; + end; + // Removes this merged change + ADelta.Delete(i); + end; + end +end; + +procedure TDataAbstractService.RegisterForDataChangeNotification( + const aTableName: Utf8String); +begin +{ TODO : todo } +end; + +procedure TDataAbstractService.UnregisterForDataChangeNotification( + const aTableName: Utf8String); +begin +{ TODO : todo } +end; + +function TDataAbstractService.SQLExecuteCommand(const aSQLText: Utf8String): Integer; +begin + Result:= SQLExecuteCommandEx(aSQLText,''); +end; + +function TDataAbstractService.SQLGetData(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer): Binary; +begin + Result:= SQLGetDataEx(aSQLText, aIncludeSchema, aMaxRecords, ''); +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D10.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D10.bdsproj new file mode 100644 index 0000000..4c974b2 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D10.bdsproj @@ -0,0 +1,179 @@ + + + + + + + + + + + + DataAbstract_Core_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + False + False + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - Core Library + False + + + + ..\Dcu\D10 + ..\Dcu\D10 + ..\Dcu\D10 + + + DESIGNTIME + + False + + + + + + False + + + + + + False + + True + False + + + + $00000000 + + + + True + False + 0 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 0.0.0.0 + + + + + RemObjects SDK + 1.0.0.0 + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D10.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D10.cfg new file mode 100644 index 0000000..11c667c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D10.cfg @@ -0,0 +1,48 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\Dcu\D10" +-LE"..\Dcu\D10" +-LN"..\Dcu\D10" +-DDESIGNTIME +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-SYMBOL_EXPERIMENTAL +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNIT_EXPERIMENTAL +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D10.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D10.dpk new file mode 100644 index 0000000..a3aaa6c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D10.dpk @@ -0,0 +1,109 @@ +package DataAbstract_Core_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Core Library'} +{$IMPLICITBUILD OFF} +{$DEFINE DESIGNTIME} + +requires + RemObjects_Core_D10, + rtl, + vcl, + adortl, + dbrtl, + dsnap, + vcldb; + +contains + uDAInterfaces in 'uDAInterfaces.pas', + uDAInterfacesEx in 'uDAInterfacesEx.pas', + uDAClasses in 'uDAClasses.pas', + uDAHelpers in 'uDAHelpers.pas', + uDAEngine in 'uDAEngine.pas', + uDAUtils in 'uDAUtils.pas', + uDARes in 'uDARes.pas', + DataAbstract_Core_Reg in 'DataAbstract_Core_Reg.pas', + uDABinAdapter in 'uDABinAdapter.pas', + uDAXMLAdapter in 'uDAXMLAdapter.pas', + uDADriverManager in 'uDADriverManager.pas', + uDASupportClasses in 'uDASupportClasses.pas', + uDADataTable in 'uDADataTable.pas', + uDACDSDataTable in 'uDACDSDataTable.pas', + uDAADODataTable in 'uDAADODataTable.pas', + uDABusinessProcessor in 'uDABusinessProcessor.pas', + uDAIBInterfaces in 'uDAIBInterfaces.pas', + uDAOracleInterfaces in 'uDAOracleInterfaces.pas', + uDAADOInterfaces in 'uDAADOInterfaces.pas', + uDAMacroProcessors in 'uDAMacroProcessors.pas', + uDADBSessionManager in 'uDADBSessionManager.pas', + uDAMacros in 'uDAMacros.pas', + DALoginService_Impl in 'DALoginService_Impl.pas', + DARemoteService_Impl in 'DARemoteService_Impl.pas', + uDAXMLUtils in 'uDAXMLUtils.pas', + uDARegExpr in 'uDARegExpr.pas', + uDADriverInfo in 'uDADriverInfo.pas', + uDAPleaseWaitForm in 'uDAPleaseWaitForm.pas', + uDAClientDataModule in 'uDAClientDataModule.pas', + uDAScriptingProvider in 'uDAScriptingProvider.pas', + uDAServerLog in 'uDAServerLog.pas', + uDADatasetProvider in 'uDADatasetProvider.pas', + uDAPoweredByDataAbstractButton in 'uDAPoweredByDataAbstractButton.pas', + SimpleLoginService_Impl in 'SimpleLoginService_Impl.pas', + DataAbstract3_Intf in 'DataAbstract3_Intf.pas', + DataAbstract3_Invk in 'DataAbstract3_Invk.pas', + DataAbstract3_Async in 'DataAbstract3_Async.pas', + DataAbstractService_Impl in 'DataAbstractService_Impl.pas' {DataAbstractService: TRORemoteDataModule}, + MultiDbLoginService_Impl in 'MultiDbLoginService_Impl.pas', + BaseLoginService_Impl in 'BaseLoginService_Impl.pas' {BaseLoginService: TRORemoteDataModule}, + DataAbstract4_Invk in 'DataAbstract4_Invk.pas', + DataAbstract4_Intf in 'DataAbstract4_Intf.pas', + DataAbstract4_Async in 'DataAbstract4_Async.pas', + uDARemoteDataAdapter in 'uDARemoteDataAdapter.pas', + uDACache in 'uDACache.pas', + uDARemoteDataAdapterRequests in 'uDARemoteDataAdapterRequests.pas', + uDADataStreamer in 'uDADataStreamer.pas', + uDADelta in 'uDADelta.pas', + uDADesigntimeCall in 'uDADesigntimeCall.pas', + uDAExceptions in 'uDAExceptions.pas', + uDASQL92Interfaces in 'uDASQL92Interfaces.pas', + uDABin2DataStreamer in 'uDABin2DataStreamer.pas', + uDAMemDataset in 'uDAMemDataset.pas', + uDAMemDataTable in 'uDAMemDataTable.pas', + uDAReconcileDialog in 'uDAReconcileDialog.pas' {ReconcileDialogForm}, + uDAReconcileDialogDetails in 'uDAReconcileDialogDetails.pas', + uDADatasetWrapper in 'uDADatasetWrapper.pas', + uDADataTableReferenceCollection in 'uDADataTableReferenceCollection.pas', + uDAMySQLInterfaces in 'uDAMySQLInterfaces.pas', + uDASQLiteInterfaces in 'uDASQLiteInterfaces.pas', + uDAExpressionEvaluator in 'uDAExpressionEvaluator.pas', + uDASQL92QueryBuilder in 'uDASQL92QueryBuilder.pas', + uDAWhere in 'uDAWhere.pas', + uDARemoteCommand in 'uDARemoteCommand.pas', + uDAPostgresInterfaces in 'uDAPostgresInterfaces.pas', + uDAElevateDBInterfaces in 'uDAElevateDBInterfaces.pas', + uDADB2Interfaces in 'uDADB2Interfaces.pas', + uDASybaseInterfaces in 'uDASybaseInterfaces.pas', + MultiDbLoginServiceV5_Impl in 'MultiDbLoginServiceV5_Impl.pas' + ; +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D10.res b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D10.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D10.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D11.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D11.dpk new file mode 100644 index 0000000..f2493dc --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D11.dpk @@ -0,0 +1,111 @@ +package DataAbstract_Core_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Core Library'} +{$IMPLICITBUILD OFF} +{$DEFINE DESIGNTIME} + +requires + RemObjects_Core_D11, + rtl, + vcl, + adortl, + dbrtl, + dsnap, + vcldb; + +contains + uDAInterfaces in 'uDAInterfaces.pas', + uDAInterfacesEx in 'uDAInterfacesEx.pas', + uDAClasses in 'uDAClasses.pas', + uDAHelpers in 'uDAHelpers.pas', + uDAEngine in 'uDAEngine.pas', + uDAUtils in 'uDAUtils.pas', + uDARes in 'uDARes.pas', + DataAbstract_Core_Reg in 'DataAbstract_Core_Reg.pas', + uDABinAdapter in 'uDABinAdapter.pas', + uDAXMLAdapter in 'uDAXMLAdapter.pas', + uDADriverManager in 'uDADriverManager.pas', + uDASupportClasses in 'uDASupportClasses.pas', + uDADataTable in 'uDADataTable.pas', + uDACDSDataTable in 'uDACDSDataTable.pas', + uDAADODataTable in 'uDAADODataTable.pas', + uDABusinessProcessor in 'uDABusinessProcessor.pas', + uDAIBInterfaces in 'uDAIBInterfaces.pas', + uDAOracleInterfaces in 'uDAOracleInterfaces.pas', + uDAADOInterfaces in 'uDAADOInterfaces.pas', + uDAMacroProcessors in 'uDAMacroProcessors.pas', + uDADBSessionManager in 'uDADBSessionManager.pas', + uDAMacros in 'uDAMacros.pas', + DALoginService_Impl in 'DALoginService_Impl.pas', + DARemoteService_Impl in 'DARemoteService_Impl.pas', + uDAXMLUtils in 'uDAXMLUtils.pas', + uDARegExpr in 'uDARegExpr.pas', + uDADriverInfo in 'uDADriverInfo.pas', + uDAPleaseWaitForm in 'uDAPleaseWaitForm.pas', + uDAClientDataModule in 'uDAClientDataModule.pas', + uDAScriptingProvider in 'uDAScriptingProvider.pas', + uDAServerLog in 'uDAServerLog.pas', + uDADatasetProvider in 'uDADatasetProvider.pas', + uDAPoweredByDataAbstractButton in 'uDAPoweredByDataAbstractButton.pas', + SimpleLoginService_Impl in 'SimpleLoginService_Impl.pas', + DataAbstract3_Intf in 'DataAbstract3_Intf.pas', + DataAbstract3_Invk in 'DataAbstract3_Invk.pas', + DataAbstract3_Async in 'DataAbstract3_Async.pas', + DataAbstractService_Impl in 'DataAbstractService_Impl.pas' {DataAbstractService: TRORemoteDataModule}, + MultiDbLoginService_Impl in 'MultiDbLoginService_Impl.pas', + BaseLoginService_Impl in 'BaseLoginService_Impl.pas' {BaseLoginService: TRORemoteDataModule}, + DataAbstract4_Invk in 'DataAbstract4_Invk.pas', + DataAbstract4_Intf in 'DataAbstract4_Intf.pas', + DataAbstract4_Async in 'DataAbstract4_Async.pas', + uDARemoteDataAdapter in 'uDARemoteDataAdapter.pas', + uDACache in 'uDACache.pas', + uDARemoteDataAdapterRequests in 'uDARemoteDataAdapterRequests.pas', + uDADataStreamer in 'uDADataStreamer.pas', + uDADelta in 'uDADelta.pas', + uDADesigntimeCall in 'uDADesigntimeCall.pas', + uDAExceptions in 'uDAExceptions.pas', + uDASQL92Interfaces in 'uDASQL92Interfaces.pas', + uDABin2DataStreamer in 'uDABin2DataStreamer.pas', + uDAMemDataset in 'uDAMemDataset.pas', + uDAMemDataTable in 'uDAMemDataTable.pas', + uDAReconcileDialog in 'uDAReconcileDialog.pas' {ReconcileDialogForm}, + uDAReconcileDialogDetails in 'uDAReconcileDialogDetails.pas', + uDADatasetWrapper in 'uDADatasetWrapper.pas', + uDADataTableReferenceCollection in 'uDADataTableReferenceCollection.pas', + uDAMySQLInterfaces in 'uDAMySQLInterfaces.pas', + uDASQLiteInterfaces in 'uDASQLiteInterfaces.pas', + uDAExpressionEvaluator in 'uDAExpressionEvaluator.pas', + uDASQL92QueryBuilder in 'uDASQL92QueryBuilder.pas', + uDAWhere in 'uDAWhere.pas', + uDARemoteCommand in 'uDARemoteCommand.pas', + uDAPostgresInterfaces in 'uDAPostgresInterfaces.pas', + uDAElevateDBInterfaces in 'uDAElevateDBInterfaces.pas', + uDADB2Interfaces in 'uDADB2Interfaces.pas', + uDASybaseInterfaces in 'uDASybaseInterfaces.pas', + MultiDbLoginServiceV5_Impl in 'MultiDbLoginServiceV5_Impl.pas' + ; + + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D11.dproj b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D11.dproj new file mode 100644 index 0000000..999a5a6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D11.dproj @@ -0,0 +1,153 @@ + + + {f3a56007-69a7-443a-8fdf-56da71a8440c} + DataAbstract_Core_D11.dpk + Debug + AnyCPU + DCC32 + ..\Dcu\D11\DataAbstract_Core_D11.bpl + + + 7.0 + False + False + 0 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + DESIGNTIME;RELEASE + False + False + False + False + False + False + False + False + + + 7.0 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + DESIGNTIME + False + False + False + False + False + False + False + False + ..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\RemObjects SDK for Delphi\Dcu\D11 + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - Core LibraryFalseFalseFalseTrueFalse402434FalseFalseFalseFalseFalse10331252RemObjects Software4.0.2.434RemObjects SDK1.0.0.0DataAbstract_Core_D11.dpk + + + + + + + + + + + CodeGear BDE DB Components + CodeGear C++Builder Office 2000 Servers Package + CodeGear C++Builder Office XP Servers Package + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + + + + + + MainSource + + + +
BaseLoginService
+ TRORemoteDataModule +
+ + + + + + + + + +
DataAbstractService
+ TRORemoteDataModule +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ReconcileDialogForm
+
+ + + + + + + + + + + + + + + + +
+
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D11.res b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D11.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D11.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D6.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D6.cfg new file mode 100644 index 0000000..3d4736d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D6.cfg @@ -0,0 +1,42 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\Dcu\D6" +-LE"..\Dcu\D6" +-LN"..\Dcu\D6" +-U"..\Dcu\D6;..\..\RemObjects SDK for Delphi\Dcu\D6" +-O"..\Dcu\D6;..\..\RemObjects SDK for Delphi\Dcu\D6" +-I"..\Dcu\D6;..\..\RemObjects SDK for Delphi\Dcu\D6" +-R"..\Dcu\D6;..\..\RemObjects SDK for Delphi\Dcu\D6" +-DDESIGNTIME +-Z diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D6.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D6.dof new file mode 100644 index 0000000..ff6f0ce --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - Core Library + +[Directories] +OutputDir= +UnitOutputDir=..\Dcu\D6 +PackageDLLOutputDir=..\Dcu\D6 +PackageDCPOutputDir=..\Dcu\D6 +SearchPath=..\Dcu\D6;..\..\RemObjects SDK for Delphi\Dcu\D6 +Packages= +Conditionals=DESIGNTIME +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=3.0.0.280 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D6.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D6.dpk new file mode 100644 index 0000000..02f36b3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D6.dpk @@ -0,0 +1,110 @@ +package DataAbstract_Core_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Core Library'} +{$IMPLICITBUILD OFF} +{$DEFINE DESIGNTIME} + +requires + RemObjects_Core_D6, + rtl, + vcl, + adortl, + dbrtl, + dsnap, + vcldb; + +contains + uDAInterfaces in 'uDAInterfaces.pas', + uDAInterfacesEx in 'uDAInterfacesEx.pas', + uDAClasses in 'uDAClasses.pas', + uDAHelpers in 'uDAHelpers.pas', + uDAEngine in 'uDAEngine.pas', + uDAUtils in 'uDAUtils.pas', + uDARes in 'uDARes.pas', + DataAbstract_Core_Reg in 'DataAbstract_Core_Reg.pas', + uDABinAdapter in 'uDABinAdapter.pas', + uDAXMLAdapter in 'uDAXMLAdapter.pas', + uDADriverManager in 'uDADriverManager.pas', + uDASupportClasses in 'uDASupportClasses.pas', + uDADataTable in 'uDADataTable.pas', + uDACDSDataTable in 'uDACDSDataTable.pas', + uDAADODataTable in 'uDAADODataTable.pas', + uDABusinessProcessor in 'uDABusinessProcessor.pas', + uDAIBInterfaces in 'uDAIBInterfaces.pas', + uDAOracleInterfaces in 'uDAOracleInterfaces.pas', + uDAADOInterfaces in 'uDAADOInterfaces.pas', + uDAMacroProcessors in 'uDAMacroProcessors.pas', + uDADBSessionManager in 'uDADBSessionManager.pas', + uDAMacros in 'uDAMacros.pas', + DALoginService_Impl in 'DALoginService_Impl.pas', + DARemoteService_Impl in 'DARemoteService_Impl.pas', + uDAXMLUtils in 'uDAXMLUtils.pas', + uDARegExpr in 'uDARegExpr.pas', + uDADriverInfo in 'uDADriverInfo.pas', + uDAPleaseWaitForm in 'uDAPleaseWaitForm.pas', + uDAClientDataModule in 'uDAClientDataModule.pas', + uDAScriptingProvider in 'uDAScriptingProvider.pas', + uDAServerLog in 'uDAServerLog.pas', + uDADatasetProvider in 'uDADatasetProvider.pas', + uDAPoweredByDataAbstractButton in 'uDAPoweredByDataAbstractButton.pas', + SimpleLoginService_Impl in 'SimpleLoginService_Impl.pas', + DataAbstract3_Intf in 'DataAbstract3_Intf.pas', + DataAbstract3_Invk in 'DataAbstract3_Invk.pas', + DataAbstract3_Async in 'DataAbstract3_Async.pas', + DataAbstractService_Impl in 'DataAbstractService_Impl.pas' {DataAbstractService: TRORemoteDataModule}, + MultiDbLoginService_Impl in 'MultiDbLoginService_Impl.pas', + BaseLoginService_Impl in 'BaseLoginService_Impl.pas' {BaseLoginService: TRORemoteDataModule}, + DataAbstract4_Invk in 'DataAbstract4_Invk.pas', + DataAbstract4_Intf in 'DataAbstract4_Intf.pas', + DataAbstract4_Async in 'DataAbstract4_Async.pas', + uDARemoteDataAdapter in 'uDARemoteDataAdapter.pas', + uDACache in 'uDACache.pas', + uDARemoteDataAdapterRequests in 'uDARemoteDataAdapterRequests.pas', + uDADataStreamer in 'uDADataStreamer.pas', + uDADelta in 'uDADelta.pas', + uDADesigntimeCall in 'uDADesigntimeCall.pas', + uDAExceptions in 'uDAExceptions.pas', + uDASQL92Interfaces in 'uDASQL92Interfaces.pas', + uDABin2DataStreamer in 'uDABin2DataStreamer.pas', + uDAMemDataset in 'uDAMemDataset.pas', + uDAMemDataTable in 'uDAMemDataTable.pas', + uDAReconcileDialog in 'uDAReconcileDialog.pas' {ReconcileDialogForm}, + uDAReconcileDialogDetails in 'uDAReconcileDialogDetails.pas', + uDADatasetWrapper in 'uDADatasetWrapper.pas', + uDADataTableReferenceCollection in 'uDADataTableReferenceCollection.pas', + uDAMySQLInterfaces in 'uDAMySQLInterfaces.pas', + uDASQLiteInterfaces in 'uDASQLiteInterfaces.pas', + uDAExpressionEvaluator in 'uDAExpressionEvaluator.pas', + uDASQL92QueryBuilder in 'uDASQL92QueryBuilder.pas', + uDAWhere in 'uDAWhere.pas', + uDARemoteCommand in 'uDARemoteCommand.pas', + uDAPostgresInterfaces in 'uDAPostgresInterfaces.pas', + uDAElevateDBInterfaces in 'uDAElevateDBInterfaces.pas', + uDADB2Interfaces in 'uDADB2Interfaces.pas', + uDASybaseInterfaces in 'uDASybaseInterfaces.pas', + MultiDbLoginServiceV5_Impl in 'MultiDbLoginServiceV5_Impl.pas' + ; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D6.res b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D6.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D6.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D7.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D7.cfg new file mode 100644 index 0000000..d9c7e92 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D7.cfg @@ -0,0 +1,51 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\Dcu\D7" +-LE"..\Dcu\D7" +-LN"..\Dcu\D7" +-U"..\Dcu\D7;..\Dcu\DevEx;..\..\RemObjects SDK for Delphi\Dcu\D7;..\..\Pascal Script\Dcu\D7" +-O"..\Dcu\D7;..\Dcu\DevEx;..\..\RemObjects SDK for Delphi\Dcu\D7;..\..\Pascal Script\Dcu\D7" +-I"..\Dcu\D7;..\Dcu\DevEx;..\..\RemObjects SDK for Delphi\Dcu\D7;..\..\Pascal Script\Dcu\D7" +-R"..\Dcu\D7;..\Dcu\DevEx;..\..\RemObjects SDK for Delphi\Dcu\D7;..\..\Pascal Script\Dcu\D7" +-DDESIGNTIME +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D7.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D7.dof new file mode 100644 index 0000000..19785e8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - Core Library + +[Directories] +OutputDir= +UnitOutputDir=..\Dcu\D7 +PackageDLLOutputDir=..\Dcu\D7 +PackageDCPOutputDir=..\Dcu\D7 +SearchPath=..\Dcu\D7;..\Dcu\DevEx;..\..\RemObjects SDK for Delphi\Dcu\D7;..\..\Pascal Script\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals=DESIGNTIME +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=3.0.0.286 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D7.dpk new file mode 100644 index 0000000..7835d6b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D7.dpk @@ -0,0 +1,110 @@ +package DataAbstract_Core_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Core Library'} +{$IMPLICITBUILD OFF} +{$DEFINE DESIGNTIME} + +requires + RemObjects_Core_D7, + rtl, + vcl, + adortl, + dbrtl, + dsnap, + vcldb; + +contains + uDAInterfaces in 'uDAInterfaces.pas', + uDAInterfacesEx in 'uDAInterfacesEx.pas', + uDAClasses in 'uDAClasses.pas', + uDAHelpers in 'uDAHelpers.pas', + uDAEngine in 'uDAEngine.pas', + uDAUtils in 'uDAUtils.pas', + uDARes in 'uDARes.pas', + DataAbstract_Core_Reg in 'DataAbstract_Core_Reg.pas', + uDABinAdapter in 'uDABinAdapter.pas', + uDAXMLAdapter in 'uDAXMLAdapter.pas', + uDADriverManager in 'uDADriverManager.pas', + uDASupportClasses in 'uDASupportClasses.pas', + uDADataTable in 'uDADataTable.pas', + uDACDSDataTable in 'uDACDSDataTable.pas', + uDAADODataTable in 'uDAADODataTable.pas', + uDABusinessProcessor in 'uDABusinessProcessor.pas', + uDAIBInterfaces in 'uDAIBInterfaces.pas', + uDAOracleInterfaces in 'uDAOracleInterfaces.pas', + uDAADOInterfaces in 'uDAADOInterfaces.pas', + uDAMacroProcessors in 'uDAMacroProcessors.pas', + uDADBSessionManager in 'uDADBSessionManager.pas', + uDAMacros in 'uDAMacros.pas', + DALoginService_Impl in 'DALoginService_Impl.pas', + DARemoteService_Impl in 'DARemoteService_Impl.pas', + uDAXMLUtils in 'uDAXMLUtils.pas', + uDARegExpr in 'uDARegExpr.pas', + uDADriverInfo in 'uDADriverInfo.pas', + uDAPleaseWaitForm in 'uDAPleaseWaitForm.pas', + uDAClientDataModule in 'uDAClientDataModule.pas', + uDAScriptingProvider in 'uDAScriptingProvider.pas', + uDAServerLog in 'uDAServerLog.pas', + uDADatasetProvider in 'uDADatasetProvider.pas', + uDAPoweredByDataAbstractButton in 'uDAPoweredByDataAbstractButton.pas', + SimpleLoginService_Impl in 'SimpleLoginService_Impl.pas', + DataAbstract3_Intf in 'DataAbstract3_Intf.pas', + DataAbstract3_Invk in 'DataAbstract3_Invk.pas', + DataAbstract3_Async in 'DataAbstract3_Async.pas', + DataAbstractService_Impl in 'DataAbstractService_Impl.pas' {DataAbstractService: TRORemoteDataModule}, + MultiDbLoginService_Impl in 'MultiDbLoginService_Impl.pas', + BaseLoginService_Impl in 'BaseLoginService_Impl.pas' {BaseLoginService: TRORemoteDataModule}, + DataAbstract4_Invk in 'DataAbstract4_Invk.pas', + DataAbstract4_Intf in 'DataAbstract4_Intf.pas', + DataAbstract4_Async in 'DataAbstract4_Async.pas', + uDARemoteDataAdapter in 'uDARemoteDataAdapter.pas', + uDACache in 'uDACache.pas', + uDARemoteDataAdapterRequests in 'uDARemoteDataAdapterRequests.pas', + uDADataStreamer in 'uDADataStreamer.pas', + uDADelta in 'uDADelta.pas', + uDADesigntimeCall in 'uDADesigntimeCall.pas', + uDAExceptions in 'uDAExceptions.pas', + uDASQL92Interfaces in 'uDASQL92Interfaces.pas', + uDABin2DataStreamer in 'uDABin2DataStreamer.pas', + uDAMemDataset in 'uDAMemDataset.pas', + uDAMemDataTable in 'uDAMemDataTable.pas', + uDAReconcileDialog in 'uDAReconcileDialog.pas' {ReconcileDialogForm}, + uDAReconcileDialogDetails in 'uDAReconcileDialogDetails.pas', + uDADatasetWrapper in 'uDADatasetWrapper.pas', + uDADataTableReferenceCollection in 'uDADataTableReferenceCollection.pas', + uDAMySQLInterfaces in 'uDAMySQLInterfaces.pas', + uDASQLiteInterfaces in 'uDASQLiteInterfaces.pas', + uDAExpressionEvaluator in 'uDAExpressionEvaluator.pas', + uDASQL92QueryBuilder in 'uDASQL92QueryBuilder.pas', + uDAWhere in 'uDAWhere.pas', + uDARemoteCommand in 'uDARemoteCommand.pas', + uDAPostgresInterfaces in 'uDAPostgresInterfaces.pas', + uDAElevateDBInterfaces in 'uDAElevateDBInterfaces.pas', + uDADB2Interfaces in 'uDADB2Interfaces.pas', + uDASybaseInterfaces in 'uDASybaseInterfaces.pas', + MultiDbLoginServiceV5_Impl in 'MultiDbLoginServiceV5_Impl.pas' + ; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D7.res b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D7.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_D7.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_Glyphs.res b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_Glyphs.res new file mode 100644 index 0000000..ab2c23f Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_Glyphs.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_Reg.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_Reg.pas new file mode 100644 index 0000000..62fb96a --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Core_Reg.pas @@ -0,0 +1,81 @@ +unit DataAbstract_Core_Reg; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Core Library } +{ } +{ compiler: Delphi 6 and up, Kylix 3 and up } +{ platform: Win32, Linux } +{ } +{ (c)opyright RemObjects Software. all rights reserved. } +{ } +{ Using this code requires a valid license of the Data Abstract } +{ which can be obtained at http://www.remobjects.com. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +procedure Register; + +implementation + +uses + {$IFDEF FPC}LResources,{$ENDIF} + Classes, + uDARes, uDAInterfaces, uDAClasses, uDADriverManager, + uDABinAdapter, uDAXMLAdapter, uDADataTable, uDADesigntimeCall,uDABin2DataStreamer, + {$IFNDEF FPC}uDACDSDataTable,uDADatasetProvider,uDACache,{$ENDIF FPC} + uDARemoteDataAdapter, + {$IFDEF MSWINDOWS} + {$IFNDEF FPC} + uDAADODataTable, + {$ENDIF} + {$ENDIF MSWINDOWS} + uDABusinessProcessor, + uDADBSessionManager, + uDAServerLog, + uDAMemDataTable, + uDARemoteCommand, + uDAPoweredByDataAbstractButton; + +{$IFNDEF FPC} + {$R DataAbstract_Core_Glyphs.res} +{$ENDIF} + +procedure Register; +begin + RegisterComponents(DAPalettePageName, + [TDAPoweredByDataAbstractButton, + TDADriverManager, + TDAConnectionManager, + TDASchema, + TDADiagrams, + TDADataDictionary, + TDABin2DataStreamer, + TDAXMLDataStreamer, + TDARemoteDataAdapter, + {$IFNDEF FPC} + TDADatasetProvider, + {$ENDIF FPC} + TDAMemDataTable, + TDABusinessProcessor, + TDADesigntimeCall, + TDADataSource, + TDARemoteCommand, + TDAServerLog]); +{$IFNDEF FPC} +{$WARN SYMBOL_DEPRECATED OFF} + RegisterComponents('RemObjects Data Abstract (Legacy)', [TDABinAdapter, + TDACDSDataTable, TDAADODataTable, + TDABinDataStreamer, TDAXMLAdapter,TDACache]); +{$WARN SYMBOL_DEPRECATED ON} +{$ENDIF} + RegisterComponents('RemObjects SDK', [TDADBSessionManager]); +end; + +{$IFDEF FPC} +initialization + {$I DataAbstract_Core_Glyphs.lrs} +{$ENDIF} +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.bdsproj new file mode 100644 index 0000000..81d84c2 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_Scripting_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + False + False + False + False + False + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - Scripting Integration Library False + + + + ..\Dcu\D10 + ..\Dcu\D10 + ..\Dcu\D10 + ..\Dcu\D10;..\..\Pascal Script\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + + $00000000 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.cfg new file mode 100644 index 0000000..6d65c2e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.cfg @@ -0,0 +1,52 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\Dcu\D10" +-LE"..\Dcu\D10" +-LN"..\Dcu\D10" +-U"..\Dcu\D10;..\..\Pascal Script\Dcu\D10" +-O"..\Dcu\D10;..\..\Pascal Script\Dcu\D10" +-I"..\Dcu\D10;..\..\Pascal Script\Dcu\D10" +-R"..\Dcu\D10;..\..\Pascal Script\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-SYMBOL_EXPERIMENTAL +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNIT_EXPERIMENTAL +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.dpk new file mode 100644 index 0000000..14457eb --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.dpk @@ -0,0 +1,41 @@ +package DataAbstract_Scripting_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Scripting Integration Library'} +{$IMPLICITBUILD OFF} + +requires + rtl, + dbrtl, + vcl, + RemObjects_Core_D10, + DataAbstract_Core_D10, + PascalScript_Core_D10; + +contains + uDAPascalScript in 'uDAPascalScript.pas', + uDAPSScriptingProvider in 'uDAPSScriptingProvider.pas', + DataAbstract_Scripting_Reg in 'DataAbstract_Scripting_Reg.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.res b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.dpk new file mode 100644 index 0000000..93e1fa3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.dpk @@ -0,0 +1,41 @@ +package DataAbstract_Scripting_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Scripting Integration Library'} +{$IMPLICITBUILD OFF} + +requires + rtl, + dbrtl, + vcl, + RemObjects_Core_D11, + DataAbstract_Core_D11, + PascalScript_Core_D11; + +contains + uDAPascalScript in 'uDAPascalScript.pas', + uDAPSScriptingProvider in 'uDAPSScriptingProvider.pas', + DataAbstract_Scripting_Reg in 'DataAbstract_Scripting_Reg.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.dproj b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.dproj new file mode 100644 index 0000000..d240db5 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.dproj @@ -0,0 +1,78 @@ + + + {3fb27763-9440-44c3-bb51-17969172e8fe} + DataAbstract_Scripting_D11.dpk + Debug + AnyCPU + DCC32 + ..\Dcu\D11\DataAbstract_Scripting_D11.bpl + + + 7.0 + False + False + True + 0 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11;..\..\Pascal Script\Dcu\D11 + ..\Dcu\D11;..\..\Pascal Script\Dcu\D11 + ..\Dcu\D11;..\..\Pascal Script\Dcu\D11 + ..\Dcu\D11;..\..\Pascal Script\Dcu\D11 + RELEASE + False + False + False + False + False + False + False + False + + + 7.0 + True + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11;..\..\Pascal Script for Delphi\Dcu\D11 + ..\Dcu\D11;..\..\Pascal Script for Delphi\Dcu\D11 + ..\Dcu\D11;..\..\Pascal Script for Delphi\Dcu\D11 + ..\Dcu\D11;..\..\Pascal Script for Delphi\Dcu\D11 + False + False + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - Scripting Integration LibraryFalseFalseFalseTrueFalse301361FalseFalseFalseFalseFalse10331252RemObjects Software3.0.1.361RemObjects SDK1.0.0.0DataAbstract_Scripting_D11.dpk + + + + + MainSource + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.res b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.cfg new file mode 100644 index 0000000..d94514b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\Dcu\D6" +-LE"..\Dcu\D6" +-LN"..\Dcu\D6" +-U"..\Dcu\D6;..\..\RemObjects SDK for Delphi\Dcu\D6" +-O"..\Dcu\D6;..\..\RemObjects SDK for Delphi\Dcu\D6" +-I"..\Dcu\D6;..\..\RemObjects SDK for Delphi\Dcu\D6" +-R"..\Dcu\D6;..\..\RemObjects SDK for Delphi\Dcu\D6" +-Z diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.dof new file mode 100644 index 0000000..75f52a1 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - Scripting Integration Library + +[Directories] +OutputDir= +UnitOutputDir=..\Dcu\D6 +PackageDLLOutputDir=..\Dcu\D6 +PackageDCPOutputDir=..\Dcu\D6 +SearchPath=..\Dcu\D6;..\..\RemObjects SDK for Delphi\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=3.0.0.280 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.dpk new file mode 100644 index 0000000..4c39879 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.dpk @@ -0,0 +1,41 @@ +package DataAbstract_Scripting_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Scripting Integration Library'} +{$IMPLICITBUILD OFF} + +requires + rtl, + dbrtl, + vcl, + RemObjects_Core_D6, + DataAbstract_Core_D6, + PascalScript_Core_D6; + +contains + uDAPascalScript in 'uDAPascalScript.pas', + uDAPSScriptingProvider in 'uDAPSScriptingProvider.pas', + DataAbstract_Scripting_Reg in 'DataAbstract_Scripting_Reg.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.res b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.cfg new file mode 100644 index 0000000..b26eab1 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.cfg @@ -0,0 +1,46 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\Dcu\D7" +-LE"..\Dcu\D7" +-LN"..\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.dof new file mode 100644 index 0000000..97dc0fb --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.dof @@ -0,0 +1,117 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - Scripting Integration Library + +[Directories] +OutputDir= +UnitOutputDir=..\Dcu\D7 +PackageDLLOutputDir=..\Dcu\D7 +PackageDCPOutputDir=..\Dcu\D7 +SearchPath= +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription=ROServiceTester +FileVersion=3.0.0.257 +InternalName=ROServiceTester +LegalCopyright=Copyright RemObjects Software 2002 +LegalTrademarks=RemObjects Software 2002 +OriginalFilename=ROServiceTester.exe +ProductName=RemObjects SDK +ProductVersion=3.0.0.0 +Compile Date=Sunday, March 21, 2004 5:55 PM + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.dpk new file mode 100644 index 0000000..34f8513 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.dpk @@ -0,0 +1,43 @@ +package DataAbstract_Scripting_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Scripting Integration Library'} +{$IMPLICITBUILD OFF} + +requires + rtl, + dbrtl, + vcl, + RemObjects_Core_D7, + DataAbstract_Core_D7, + PascalScript_Core_D7, + dsnap, + adortl; + +contains + uDAPascalScript in 'uDAPascalScript.pas', + uDAPSScriptingProvider in 'uDAPSScriptingProvider.pas', + DataAbstract_Scripting_Reg in 'DataAbstract_Scripting_Reg.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.res b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_Glyphs.res b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_Glyphs.res new file mode 100644 index 0000000..fa5cad1 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_Glyphs.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_Reg.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_Reg.pas new file mode 100644 index 0000000..f71baf2 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_Scripting_Reg.pas @@ -0,0 +1,40 @@ +unit DataAbstract_Scripting_Reg; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Core Library } +{ } +{ compiler: Delphi 6 and up, Kylix 3 and up } +{ platform: Win32, Linux } +{ } +{ (c)opyright RemObjects Software. all rights reserved. } +{ } +{ Using this code requires a valid license of the Data Abstract } +{ which can be obtained at http://www.remobjects.com. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +procedure Register; + +implementation + +uses + {$IFDEF FPC}LResources,{$ENDIF} + Classes, uDAPSScriptingProvider, uDARes; + +{$IFNDEF FPC} + {$R DataAbstract_Scripting_Glyphs.res} +{$ENDIF FPC} + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAPSScriptingProvider]); +end; + +{$IFDEF FPC} +initialization + {$I DataAbstract_Scripting_Glyphs.lrs} +{$ENDIF} +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.bdsproj new file mode 100644 index 0000000..ddab013 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.bdsproj @@ -0,0 +1,177 @@ + + + + + + + + + + + + DataAbstract_SimpleQuery_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - Korzh SimpleQuery Integration Library False + + + + ..\Dcu\D10 + ..\Dcu\D10 + ..\Dcu\D10 + ..\Dcu\D10;..\..\RemObjects SDK for Dephi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.cfg new file mode 100644 index 0000000..c44bc25 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.cfg @@ -0,0 +1,44 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\Dcu\D10" +-LE"..\Dcu\D10" +-LN"..\Dcu\D10" +-U"..\Dcu\D10;..\..\RemObjects SDK for Dephi\Dcu\D10" +-O"..\Dcu\D10;..\..\RemObjects SDK for Dephi\Dcu\D10" +-I"..\Dcu\D10;..\..\RemObjects SDK for Dephi\Dcu\D10" +-R"..\Dcu\D10;..\..\RemObjects SDK for Dephi\Dcu\D10" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.dpk new file mode 100644 index 0000000..9f33f70 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.dpk @@ -0,0 +1,42 @@ +package DataAbstract_SimpleQuery_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Korzh SimpleQuery Integration Library'} +{$IMPLICITBUILD OFF} + +requires + rtl, + RemObjects_Core_D10, + dbrtl, + vcl, + DataAbstract_Core_D10, + PascalScript_Core_D10, + sq7, + kprocs7; + +contains + uDAKDBInfo in 'uDAKDBInfo.pas', + DataAbstract_SimpleQuery_Reg in 'DataAbstract_SimpleQuery_Reg.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.res b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.res new file mode 100644 index 0000000..c73b102 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.dpk new file mode 100644 index 0000000..795f67f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.dpk @@ -0,0 +1,42 @@ +package DataAbstract_SimpleQuery_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Korzh SimpleQuery Integration Library'} +{$IMPLICITBUILD OFF} + +requires + rtl, + RemObjects_Core_D11, + dbrtl, + vcl, + DataAbstract_Core_D11, + PascalScript_Core_D11, + sq11, + kprocs11; + +contains + uDAKDBInfo in 'uDAKDBInfo.pas', + DataAbstract_SimpleQuery_Reg in 'DataAbstract_SimpleQuery_Reg.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.dproj b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.dproj new file mode 100644 index 0000000..58bef6e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.dproj @@ -0,0 +1,71 @@ + + + {12feb998-13fa-45f9-8ee6-f5ab6077ef8e} + DataAbstract_SimpleQuery_D11.dpk + Debug + AnyCPU + DCC32 + ..\Dcu\D11\DataAbstract_SimpleQuery_D11.bpl + + + 7.0 + False + False + True + 0 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11;..\..\RemObjects SDK for Dephi\Dcu\D10 + ..\Dcu\D11;..\..\RemObjects SDK for Dephi\Dcu\D10 + ..\Dcu\D11;..\..\RemObjects SDK for Dephi\Dcu\D10 + ..\Dcu\D11;..\..\RemObjects SDK for Dephi\Dcu\D10 + RELEASE + + + 7.0 + True + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11;..\..\RemObjects SDK for Dephi\Dcu\D11 + ..\Dcu\D11;..\..\RemObjects SDK for Dephi\Dcu\D11 + ..\Dcu\D11;..\..\RemObjects SDK for Dephi\Dcu\D11 + ..\Dcu\D11;..\..\RemObjects SDK for Dephi\Dcu\D11 + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - Korzh SimpleQuery Integration LibraryFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse103312521.0.0.01.0.0.0DataAbstract_SimpleQuery_D11.dpk + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.res b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.res new file mode 100644 index 0000000..c73b102 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.cfg new file mode 100644 index 0000000..e2a8294 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.cfg @@ -0,0 +1,47 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"s:\exe" +-N"..\Dcu\D6" +-LE"..\Dcu\D6" +-LN"..\Dcu\D6" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.dof new file mode 100644 index 0000000..29abd6f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.dof @@ -0,0 +1,114 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - Korzh SimpleQuery Integration Library + +[Directories] +UnitOutputDir=..\Dcu\D6 +PackageDLLOutputDir=..\Dcu\D6 +PackageDCPOutputDir=..\Dcu\D6 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription=ROServiceTester +FileVersion=3.0.0.257 +InternalName=ROServiceTester +LegalCopyright=Copyright RemObjects Software 2002 +LegalTrademarks=RemObjects Software 2002 +OriginalFilename=ROServiceTester.exe +ProductName=RemObjects SDK +ProductVersion=3.0.0.0 +Compile Date=Sunday, March 21, 2004 5:55 PM + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.dpk new file mode 100644 index 0000000..b8c2834 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.dpk @@ -0,0 +1,42 @@ +package DataAbstract_SimpleQuery_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Korzh SimpleQuery Integration Library'} +{$IMPLICITBUILD OFF} + +requires + rtl, + RemObjects_Core_D6, + dbrtl, + vcl, + DataAbstract_Core_D6, + PascalScript_Core_D6, + sq6, + kprocs6; + +contains + uDAKDBInfo in 'uDAKDBInfo.pas', + DataAbstract_SimpleQuery_Reg in 'DataAbstract_SimpleQuery_Reg.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.res b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.res new file mode 100644 index 0000000..fff68a1 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.cfg new file mode 100644 index 0000000..b26eab1 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.cfg @@ -0,0 +1,46 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\Dcu\D7" +-LE"..\Dcu\D7" +-LN"..\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.dof new file mode 100644 index 0000000..7e2dfdc --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.dof @@ -0,0 +1,117 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - Korzh SimpleQuery Integration Library + +[Directories] +OutputDir= +UnitOutputDir=..\Dcu\D7 +PackageDLLOutputDir=..\Dcu\D7 +PackageDCPOutputDir=..\Dcu\D7 +SearchPath= +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription=ROServiceTester +FileVersion=3.0.0.257 +InternalName=ROServiceTester +LegalCopyright=Copyright RemObjects Software 2002 +LegalTrademarks=RemObjects Software 2002 +OriginalFilename=ROServiceTester.exe +ProductName=RemObjects SDK +ProductVersion=3.0.0.0 +Compile Date=Sunday, March 21, 2004 5:55 PM + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.dpk new file mode 100644 index 0000000..63ff17e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.dpk @@ -0,0 +1,42 @@ +package DataAbstract_SimpleQuery_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Korzh SimpleQuery Integration Library'} +{$IMPLICITBUILD ON} + +requires + rtl, + RemObjects_Core_D7, + dbrtl, + vcl, + DataAbstract_Core_D7, + PascalScript_Core_D7, + sq7, + kprocs7; + +contains + uDAKDBInfo in 'uDAKDBInfo.pas', + DataAbstract_SimpleQuery_Reg in 'DataAbstract_SimpleQuery_Reg.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.res b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.res new file mode 100644 index 0000000..fff68a1 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_Glyphs.res b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_Glyphs.res new file mode 100644 index 0000000..4a5d497 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_Glyphs.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_Reg.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_Reg.pas new file mode 100644 index 0000000..5a9be83 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_Reg.pas @@ -0,0 +1,33 @@ +unit DataAbstract_SimpleQuery_Reg; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Core Library +{ +{ compiler: Delphi 6 and up, Kylix 3 and up +{ platform: Win32, Linux +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +{$R DataAbstract_SimpleQuery_Glyphs.res} + +interface + +procedure Register; + +implementation + +uses + Classes, uDAKDBInfo; + +procedure Register; +begin + RegisterComponents('Data Abstract', [TDAKDBConnectionInfo, TDAKDBSchemaInfo]); +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/ASGRout3.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/ASGRout3.pas new file mode 100644 index 0000000..6382a1b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/ASGRout3.pas @@ -0,0 +1,424 @@ +{*_* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + +Author: Albert Drent +Description: ASGRout parser routines +Creation: Januari 1998 +Version: 1.2.B +EMail: a.drent@aducom.com (www.aducom.com) +Support: support@aducom.com (www.aducom.com) +Legal issues: Copyright (C) 2003 by Aducom Software + + Aducom Software + Eckhartstr 61 + 9746 BN Groningen + Netherlands + + This software is provided 'as-is', without any express or + implied warranty. In no event will the author be held liable + for any damages arising from the use of this software. + + Permission is granted to anyone to use this software for any + purpose, including commercial applications, and to alter it + and redistribute it freely, subject to the following + restrictions: + + 1. The origin of this software must not be misrepresented, + you must not claim that you wrote the original software. + If you use this software in a product, an acknowledgment + in the product documentation would be appreciated but is + not required. + + 2. Altered source versions must be plainly marked as such, and + must not be misrepresented as being the original software. + + 3. If you make changes which improves the component you must + mail these to aducom as the moderator of the components + complete with documentation for the benefits of the community. + + 4. You are not allowed to create commercial available components + using this software. If you use this source in any way to create + your own components, your source should be free of charge, + available to anyone. It's a far better idea to distribute your + changes through Aducom Software. + + 5. This notice may not be removed or altered from any source + distribution. + + 6. You must register this software by entering the support forum. + I like to keep track about where the components are used, so + sending a picture postcard to the author would be appreciated. + Use a nice stamp and mention your name, street + address, EMail address and any comment you like to say. + +Modifications + 26/5/2004 Function YYYYMMDDParser by JPierce, necessary for + locale independent datehandling in SQLite components. + 1/9/2005 Changes to the StrToFloatX routine, now depending on + decimalseparator. + +*_* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * } + +unit ASGRout3; + +interface + +uses SysUtils; + +const + vtcIdentifier = 1; + vtcNumber = 2; + vtcAssignment = 3; + vtcQString = 4; + vtcDString = 5; + vtcRelOp = 6; + vtcFloat = 7; + vtcDelimiter = 8; + vtcEof = 9; + +procedure FindErrorPos(InString: string; ErrPos: integer; + var TheLine, TheCol: integer); +function GetWord(var InString: string; var StartPos: integer; + var VarType: integer): string; +function GetWordByDelim(var InString: string; var StartPos: integer; + var Delim: string): string; +function PeekWord(var InString: string; StartPos: integer; + var VarType: integer): string; +function Recover(var InString: string; var StartPos: integer): boolean; +function StrToIntX(StrIn: string): integer; +function StrToFloatX(StrIn : string) : extended; +function StrToDateX(TheDate: string): TDateTime; +function StrToDateTimeX(const S: string): TDateTime; +function YYYYMMDDParser(Str: PChar): TDateTime; +function FloatParser(Str: string): string;// jordi march + +implementation + +function FloatParser(Str: string): string;// jordi march +var + Point: Byte; +begin + if DecimalSeparator <> '.' then begin + Point := Pos ('.', Str); + if Point <> 0 + then Str[Point] := DecimalSeparator; + end; + Result := Str; +end; + + //============================================================================== + // Convert dates to a correct datetime notation. Try several notations, + // starting with the system defaults + //============================================================================== + +function StrToDateTimeX(const S: string): TDateTime; +begin + if S = '' then + StrToDateTimeX := 0 + else begin + try + StrToDateTimeX := StrToDateTime(S); + except + StrToDateTimeX := StrToDateX(s); + end; + end; +end; + +function StrToDateX(TheDate: string): TDateTime; +var + DateFormat: string; + DateSep: char; +begin + DateFormat := ShortDateFormat; // save current settings + DateSep := DateSeparator; + try + try + StrToDateX := StrToDate(TheDate) + except + DateSeparator := '-'; + ShortDateFormat := 'dd-mm-yyyy'; + try + StrToDateX := StrToDate(TheDate) + except + ShortDateFormat := 'yyyy-mm-dd'; + try + StrToDateX := StrToDate(TheDate) + except + StrToDateX := StrToDateX('01-01-1900'); + raise; + end; + end; + end; + finally + ShortDateFormat := DateFormat; + DateSeparator := DateSep; + end; +end; + +// Routine submitted by jpierce, modified to accept more types +// It requires that the date be in strict yyyy-mm-dd [hh:nn:[ss[:mmm]]] + +function YYYYMMDDParser(Str: PChar): TDateTime; +var + Year, Month, Day, Hour, Min, Sec, MSec: Word; +begin + Result := 0; + + try + if Length(Str) >= 10 then // 10 = Length of YYYY-MM-DD + begin + Year := StrToInt(Copy(Str, 1, 4)); + Month := StrToInt(Copy(Str, 6, 2)); + Day := StrToInt(Copy(Str, 9, 2)); + + Result := EncodeDate(Year, Month, Day); + end; + + if Length(Str) > 10 then // it has a time + begin + Hour := StrToInt(Copy(Str, 12, 2)); + Min := StrToInt(Copy(Str, 15, 2)); + Sec := 0; + MSec := 0; + if Length(Str) > 16 then Sec := StrToInt(Copy(Str, 18, 2)); + if Length(Str) > 19 then Msec := StrToInt(Copy(Str, 21, 3)); + Result := Result + EncodeTime(Hour, Min, Sec, MSec); + end; + except + Result := 0; + end; +end; + +function StrToIntX(StrIn: string): integer; +var +E: Integer; +begin + Val(StrIn, Result, E); + if E <> 0 then Result := 0; +end; + +function StrToFloatX(StrIn : string) : extended; +begin + if not TextToFloat(PChar(StrIn), Result, fvExtended) then + Result := 0; +end; + +procedure FindErrorPos(InString: string; ErrPos: integer; + var TheLine, TheCol: integer); +var + i: integer; +begin + TheLine := 1; + TheCol := 1; + i := 1; + while i < ErrPos do + begin + if InString[i] in [ #10, #13] then + begin + Inc(TheLine); + TheCol := 1; + Inc(i); + Inc(i); + end + else + begin + Inc(TheCol); + Inc(i); + end; + end; +end; + +function Recover(var InString: string; + var StartPos: integer): boolean; +begin + if (StartPos > Length(InString)) then + begin + Recover := false; + exit; + end; + + while (Startpos < Length(InString)) and + ( not (InString[StartPos] in [ #10, #13])) do + Inc(StartPos); + Recover := true; +end; + +function PeekWord(var InString: string; StartPos: integer; + var VarType: integer): string; +begin + PeekWord := GetWord(InString, StartPos, VarType); +end; + +function GetWordByDelim(var InString: string; + var StartPos: integer; + var Delim: string): string; +var + Ret: string; +begin + Ret := ''; + while (StartPos <= Length(InString)) and (InString[StartPos] = ' ') do + Inc(StartPos); + while (StartPos <= Length(InString)) and (Pos(InString[StartPos], Delim) = 0) do + begin + Ret := Ret + InString[StartPos]; + Inc(StartPos); + end; + GetWordByDelim := Trim(Ret); +end; + +function GetWord(var InString: string; var StartPos: integer; + var VarType: integer): string; +var + TheChar: char; + Rv: string; +begin + if (StartPos > Length(InString)) then + begin + GetWord := ''; + VarType := vtcEof; + exit; + end; + + while (StartPos <= Length(InString)) and (InString[StartPos] <= #32) do + Inc(StartPos); + + TheChar := InString[StartPos]; + Rv := ''; + + if TheChar in ['a'..'z', 'A'..'Z'] then + VarType := vtcIdentifier + else if TheChar in ['0'..'9', '-'] then + VarType := vtcNumber + else if TheChar = ':' then + VarType := vtcAssignment + else if TheChar = '"' then + VarType := vtcDString + else if TheChar = '''' then + VarType := vtcQString + else if TheChar in ['>', '=', '<'] then + VarType := vtcRelOp + else + begin + Inc(StartPos); + if TheChar = '!' then + begin + Recover(InString, StartPos); + Rv := GetWord(InString, StartPos, VarType); + GetWord := Rv; + end + else + begin + GetWord := TheChar; + end; + exit; + end; + + case VarType of + vtcIdentifier: + begin + while InString[StartPos] in ['a'..'z', 'A'..'Z', '_','0'..'9'] do + begin + Rv := Rv + InString[StartPos]; + Inc(StartPos); + end; + end; + vtcNumber: + begin + while InString[StartPos] in ['-', '0'..'9', '.'] do + begin + if InString[StartPos] = '.' then + VarType := vtcFloat; + Rv := Rv + InString[StartPos]; + Inc(StartPos); + end; + if VarType = vtcFloat then + Rv := FloatToStr(StrToFloat(Rv)) + else + Rv := IntToStr(StrToInt(Rv)); + end; + vtcAssignment: + begin + Rv := InString[StartPos]; + Inc(StartPos); + if InString[StartPos] = '=' then + begin + Inc(StartPos); + Rv := ':='; + end + else + begin + VarType := vtcDelimiter; + Rv := ':'; + end; + end; + vtcQString: + begin + Inc(StartPos); + while InString[StartPos] <> '''' do + begin + Rv := Rv + InString[StartPos]; + Inc(StartPos); + end; + Inc(StartPos); + end; + vtcDString: + begin + Inc(StartPos); + while InString[StartPos] <> '"' do + begin + Rv := Rv + InString[StartPos]; + Inc(StartPos); + end; + Inc(StartPos); + end; + vtcRelOp: + begin + Rv := InString[StartPos]; + if Rv = '<' then + begin + if InString[StartPos + 1] in ['=', '>'] then + begin + Rv := Rv + InString[StartPos + 1]; + StartPos := StartPos + 2; + end + else + begin + Inc(StartPos); + end; + end + else if Rv = '>' then + begin + if InString[StartPos + 1] in ['=', '<'] then + begin + Rv := Rv + InString[StartPos + 1]; + StartPos := StartPos + 2; + end + else + begin + Inc(StartPos); + end; + end + else + begin + Inc(StartPos); + end; + end; + end; + GetWord := Rv; +end; + +{$IFDEF SQLite_Static} +Var + TZInfo :_TIME_ZONE_INFORMATION; + TZRes :Integer; + +initialization + PInteger(@__timezone)^:=0; + PInteger(@__daylight)^:=0; + TZRes:=GetTimezoneInformation(TZInfo); + if TZRes>=0 Then + PInteger(@__timezone)^:=TZInfo.Bias*60; + if TZRes=TIME_ZONE_ID_DAYLIGHT Then + PInteger(@__daylight)^:=1; +{$ENDIF} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAADODriverHtml.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAADODriverHtml.res new file mode 100644 index 0000000..98b7c6e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAADODriverHtml.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAADODrv.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAADODrv.cfg new file mode 100644 index 0000000..fbc8cdc --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAADODrv.cfg @@ -0,0 +1,46 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files\borland\delphi7\Projects\Bpl" +-LN"c:\program files\borland\delphi7\Projects\Bpl" +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAADODrv.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAADODrv.dof new file mode 100644 index 0000000..1a2d3d6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAADODrv.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsD7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=3.0.0.287 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=Data Abstract +ProductVersion=2.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAADODrv.dpr b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAADODrv.dpr new file mode 100644 index 0000000..7d130a8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAADODrv.dpr @@ -0,0 +1,13 @@ +library DAADODrv; + +uses + ShareMem, + uDAADODriver in 'uDAADODriver.pas', + uDAADOInterfaces in '..\uDAADOInterfaces.pas'; + +{$E dad} + +{$R *.res} +{$R DAADODriverHtml.res} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAADODrv.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAADODrv.res new file mode 100644 index 0000000..723a007 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAADODrv.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAAnyDACDriverHtml.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAAnyDACDriverHtml.res new file mode 100644 index 0000000..93f013e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAAnyDACDriverHtml.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.cfg new file mode 100644 index 0000000..9f8c69f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.cfg @@ -0,0 +1,37 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.dof new file mode 100644 index 0000000..b542147 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.dof @@ -0,0 +1,117 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsD7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=5.0.5.25 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.dpr b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.dpr new file mode 100644 index 0000000..ab5ec53 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.dpr @@ -0,0 +1,12 @@ +library DAAnyDACDrv; + +uses + ShareMem, + uDAAnyDACDriver in 'uDAAnyDACDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DAAnyDACDriverHtml.res} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.res new file mode 100644 index 0000000..84f461e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DABDEDriverHtml.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DABDEDriverHtml.res new file mode 100644 index 0000000..57e2373 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DABDEDriverHtml.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DABDEDrv.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DABDEDrv.bdsproj new file mode 100644 index 0000000..720c571 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DABDEDrv.bdsproj @@ -0,0 +1,173 @@ + + + + + + + + + + + + DABDEDrv.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + True + False + False + 16384 + 1048576 + 4194304 + + + + ..\..\bin + + + + $(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 + + + False + + + + D:\Program Files\RemObjects Software\Data Abstract\DASchemaModeler.exe + + False + + + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 0 + 290 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.0.290 + + + + + Data Abstract + 2.0.0.0 + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DABDEDrv.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DABDEDrv.cfg new file mode 100644 index 0000000..695c614 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DABDEDrv.cfg @@ -0,0 +1,39 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-vn +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\bin" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DABDEDrv.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DABDEDrv.dof new file mode 100644 index 0000000..593b787 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DABDEDrv.dof @@ -0,0 +1,94 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DABDEDrv.dpr b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DABDEDrv.dpr new file mode 100644 index 0000000..f00c885 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DABDEDrv.dpr @@ -0,0 +1,12 @@ +library DABDEDrv; + +uses + ShareMem, + uDABDEDriver in 'uDABDEDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DABDEDriverHtml.res} +begin +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DABDEDrv.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DABDEDrv.res new file mode 100644 index 0000000..723a007 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DABDEDrv.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.cfg new file mode 100644 index 0000000..4a853d2 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J+ +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files\borland\delphi7\Projects\Bpl" +-LN"c:\program files\borland\delphi7\Projects\Bpl" +-w-SYMBOL_DEPRECATED +-w-SYMBOL_PLATFORM +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.dof new file mode 100644 index 0000000..af7d0f6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=1 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Purposesoft HtmlEdit 2.0 + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;CDKSmp;EaglWk;ESGraphUtils;ESBase;CDKDesignTimeSupport;ESVsCp;ESSampleCompositeEditors7;ESSampleComposites70;SynEdit_D7;dxsbD7;dxComnD7;dxExELD7;dxGrEdD7;ECQDBCD7;EQTLD7;dxEdtrD7;EQDBTLD7;EQGridD7;dxMasterViewD7;dxmdsd7;dxObjInsD7;dxPSCoreD7;Rz252N70;Rz252D70;madBasic_;madHelp_;madDisAsm_;madExcept_;EzSpecials_D7;sq7;kprocs7;dxDockingD7;dxLayoutControlD7;dxPageControlD7;cxEditorsVCLD7;cxLibraryVCLD7;dxThemeD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;Phoenix_Core_D7;cxPageControlVCLD7;dxELibD7;dxExRwD7;dxDBEdD7;dxInsD7;dxNavBarD7;Phoenix_IDE_D7;DataAbstract_Core_D7;DataAbstract_DBXDriver_D7;cxWebD7;cxWebPascalScriptD7;cxWebTeeChartD7;cxWebSnapD7;SchemaModelerUtils_d7;Ani95_D7;DataAbstract_IDE_D7;DataAbstract_DiskDriver_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=3.0.0.50 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.dpr b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.dpr new file mode 100644 index 0000000..8efca9c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.dpr @@ -0,0 +1,18 @@ +library DADBISAM3Drv; + +uses + ShareMem, + uDADBISAMDriver in 'uDADBISAMDriver.pas'; + +{$E dad} + +{$I dbisamvr.inc} +{$IFDEF DBISAM_V4} +Please only build this driver dpr with DBISAM3 +{$ENDIF DBISAM_V4} + +{$R *.res} +{$R DADBISAMDriverHtml.res} + +begin +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.res new file mode 100644 index 0000000..723a007 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.cfg new file mode 100644 index 0000000..4a853d2 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J+ +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files\borland\delphi7\Projects\Bpl" +-LN"c:\program files\borland\delphi7\Projects\Bpl" +-w-SYMBOL_DEPRECATED +-w-SYMBOL_PLATFORM +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.dof new file mode 100644 index 0000000..af7d0f6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=1 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Purposesoft HtmlEdit 2.0 + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;CDKSmp;EaglWk;ESGraphUtils;ESBase;CDKDesignTimeSupport;ESVsCp;ESSampleCompositeEditors7;ESSampleComposites70;SynEdit_D7;dxsbD7;dxComnD7;dxExELD7;dxGrEdD7;ECQDBCD7;EQTLD7;dxEdtrD7;EQDBTLD7;EQGridD7;dxMasterViewD7;dxmdsd7;dxObjInsD7;dxPSCoreD7;Rz252N70;Rz252D70;madBasic_;madHelp_;madDisAsm_;madExcept_;EzSpecials_D7;sq7;kprocs7;dxDockingD7;dxLayoutControlD7;dxPageControlD7;cxEditorsVCLD7;cxLibraryVCLD7;dxThemeD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;Phoenix_Core_D7;cxPageControlVCLD7;dxELibD7;dxExRwD7;dxDBEdD7;dxInsD7;dxNavBarD7;Phoenix_IDE_D7;DataAbstract_Core_D7;DataAbstract_DBXDriver_D7;cxWebD7;cxWebPascalScriptD7;cxWebTeeChartD7;cxWebSnapD7;SchemaModelerUtils_d7;Ani95_D7;DataAbstract_IDE_D7;DataAbstract_DiskDriver_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=3.0.0.50 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.dpr b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.dpr new file mode 100644 index 0000000..c81ef35 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.dpr @@ -0,0 +1,18 @@ +library DADBISAM4Drv; + +uses + ShareMem, + uDADBISAMDriver in 'uDADBISAMDriver.pas'; + +{$E dad} + +{$I dbisamvr.inc} +{$IFNDEF DBISAM_V4} +Please only build this driver dpr with DBISAM4 +{$ENDIF DBISAM_V4} + +{$R *.res} +{$R DADBISAMDriverHtml.res} + +begin +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.res new file mode 100644 index 0000000..723a007 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAMDriverHtml.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAMDriverHtml.res new file mode 100644 index 0000000..449e052 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBISAMDriverHtml.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBXDriverHtml.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBXDriverHtml.res new file mode 100644 index 0000000..d7774e2 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBXDriverHtml.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBXDrv.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBXDrv.cfg new file mode 100644 index 0000000..b0ec5d7 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBXDrv.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files\borland\delphi7\Projects\Bpl" +-LN"c:\program files\borland\delphi7\Projects\Bpl" +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBXDrv.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBXDrv.dof new file mode 100644 index 0000000..daabfcd --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBXDrv.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=Data Abstract +ProductVersion=2.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBXDrv.dpr b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBXDrv.dpr new file mode 100644 index 0000000..4c68283 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBXDrv.dpr @@ -0,0 +1,13 @@ +library DADBXDrv; + +uses + ShareMem, + uDADBXDriver in 'uDADBXDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DADBXDriverHtml.res} + +begin +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBXDrv.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBXDrv.res new file mode 100644 index 0000000..723a007 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DADBXDrv.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAElevateDBDriverHtml.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAElevateDBDriverHtml.res new file mode 100644 index 0000000..e0b8925 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAElevateDBDriverHtml.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.cfg new file mode 100644 index 0000000..a0ce1dc --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\bin" +-U"d:\program files.all\borland\delphi7\Lib\Debug;" +-O"d:\program files.all\borland\delphi7\Lib\Debug;" +-I"d:\program files.all\borland\delphi7\Lib\Debug;" +-R"d:\program files.all\borland\delphi7\Lib\Debug;" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.dpr b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.dpr new file mode 100644 index 0000000..7f7050b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.dpr @@ -0,0 +1,12 @@ +library DAElevateDBDrv; + +uses + ShareMem, + uDAElevateDBDriver in 'uDAElevateDBDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DAElevateDBDriverHtml.res} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.res new file mode 100644 index 0000000..08ba56e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAFIBDriverHtml.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAFIBDriverHtml.res new file mode 100644 index 0000000..d12ca9d Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAFIBDriverHtml.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.cfg new file mode 100644 index 0000000..a17abb2 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.cfg @@ -0,0 +1,46 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files (x86)\borland\delphi7\Projects\Bpl" +-LN"c:\program files (x86)\borland\delphi7\Projects\Bpl" +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.dof new file mode 100644 index 0000000..1a2d3d6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsD7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=3.0.0.287 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=Data Abstract +ProductVersion=2.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.dpr b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.dpr new file mode 100644 index 0000000..1373b9a --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.dpr @@ -0,0 +1,12 @@ +library DAFIBDrv; + +uses + ShareMem, + uDAFIBDriver in 'uDAFIBDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DAFIBDriverHtml.res} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.res new file mode 100644 index 0000000..723a007 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBDACDriverHtml.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBDACDriverHtml.res new file mode 100644 index 0000000..4732a47 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBDACDriverHtml.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBDACDrv.dpr b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBDACDrv.dpr new file mode 100644 index 0000000..5c46278 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBDACDrv.dpr @@ -0,0 +1,12 @@ +library DAIBDACDrv; + +uses + ShareMem, + uDAIBDACDriver in 'uDAIBDACDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DAIBDACDriverHtml.res} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBDACDrv.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBDACDrv.res new file mode 100644 index 0000000..578c494 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBDACDrv.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBODriverHtml.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBODriverHtml.res new file mode 100644 index 0000000..32c06f3 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBODriverHtml.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBODrv.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBODrv.cfg new file mode 100644 index 0000000..301d58f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBODrv.cfg @@ -0,0 +1,39 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files\borland\delphi7\Projects\Bpl" +-LN"c:\program files\borland\delphi7\Projects\Bpl" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBODrv.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBODrv.dof new file mode 100644 index 0000000..daabfcd --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBODrv.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=Data Abstract +ProductVersion=2.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBODrv.dpr b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBODrv.dpr new file mode 100644 index 0000000..152fbe5 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBODrv.dpr @@ -0,0 +1,13 @@ +library DAIBODrv; + +uses + ShareMem, + uDAIBODriver in 'uDAIBODriver.pas'; + +{$E dad} + +{$R *.res} +{$R DAIBODriverHtml.res} + +begin +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBODrv.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBODrv.res new file mode 100644 index 0000000..723a007 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBODrv.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBXDriverHtml.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBXDriverHtml.res new file mode 100644 index 0000000..790cda2 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBXDriverHtml.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.cfg new file mode 100644 index 0000000..b0ec5d7 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files\borland\delphi7\Projects\Bpl" +-LN"c:\program files\borland\delphi7\Projects\Bpl" +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.dof new file mode 100644 index 0000000..daabfcd --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=Data Abstract +ProductVersion=2.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.dpr b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.dpr new file mode 100644 index 0000000..39dde39 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.dpr @@ -0,0 +1,13 @@ +library DAIBXDrv; + +uses + ShareMem, + uDAIBXDriver in 'uDAIBXDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DAIBXDriverHtml.res} + +begin +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.res new file mode 100644 index 0000000..723a007 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMyDACDriverHtml.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMyDACDriverHtml.res new file mode 100644 index 0000000..e1fa180 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMyDACDriverHtml.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.cfg new file mode 100644 index 0000000..301d58f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.cfg @@ -0,0 +1,39 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files\borland\delphi7\Projects\Bpl" +-LN"c:\program files\borland\delphi7\Projects\Bpl" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.dof new file mode 100644 index 0000000..dd86d8f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.dof @@ -0,0 +1,115 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.178 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=Data Abstract +ProductVersion=2.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.dpr b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.dpr new file mode 100644 index 0000000..971e17b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.dpr @@ -0,0 +1,12 @@ +library DAMyDACDrv; + +uses + ShareMem, + uDAMyDACDriver in 'uDAMyDACDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DAMyDACDriverHtml.res} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.res new file mode 100644 index 0000000..723a007 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDriverHtml.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDriverHtml.res new file mode 100644 index 0000000..c7f7a82 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDriverHtml.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.cfg new file mode 100644 index 0000000..40c80d0 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files (x86)\borland\delphi7\Projects\Bpl" +-LN"c:\program files (x86)\borland\delphi7\Projects\Bpl" +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.dof new file mode 100644 index 0000000..dd86d8f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.dof @@ -0,0 +1,115 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.178 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=Data Abstract +ProductVersion=2.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.dpr b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.dpr new file mode 100644 index 0000000..3a48d91 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.dpr @@ -0,0 +1,12 @@ +library DAMySQLDACDrv; + +uses + ShareMem, + uDAMySQLDACDriver in 'uDAMySQLDACDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DAMySQLDACDriverHtml.res} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.res new file mode 100644 index 0000000..723a007 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DANexusDBDriverHtml.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DANexusDBDriverHtml.res new file mode 100644 index 0000000..46b9c33 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DANexusDBDriverHtml.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.cfg new file mode 100644 index 0000000..7caebcd --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Data Abstract\Bin" +-LE"c:\program files\borland\delphi7\Projects\Bpl" +-LN"c:\program files\borland\delphi7\Projects\Bpl" +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.dpr b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.dpr new file mode 100644 index 0000000..5d47e04 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.dpr @@ -0,0 +1,12 @@ +library DANexusDBDrv; + +uses + ShareMem, + uDANexusDBDriver in 'uDANexusDBDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DANexusDBDriverHtml.res} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.res new file mode 100644 index 0000000..723a007 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAODACDriverHtml.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAODACDriverHtml.res new file mode 100644 index 0000000..a096da3 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAODACDriverHtml.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAODACDrv.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAODACDrv.cfg new file mode 100644 index 0000000..301d58f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAODACDrv.cfg @@ -0,0 +1,39 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files\borland\delphi7\Projects\Bpl" +-LN"c:\program files\borland\delphi7\Projects\Bpl" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAODACDrv.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAODACDrv.dof new file mode 100644 index 0000000..daabfcd --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAODACDrv.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=Data Abstract +ProductVersion=2.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAODACDrv.dpr b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAODACDrv.dpr new file mode 100644 index 0000000..b2aa1e2 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAODACDrv.dpr @@ -0,0 +1,13 @@ +library DAODACDrv; + +uses + ShareMem, + uDAODACDriver in 'uDAODACDriver.pas', + uDAOracleInterfaces in '..\uDAOracleInterfaces.pas'; + +{$E dad} + +{$R *.res} +{$R DAODACDriverHtml.res} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAODACDrv.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAODACDrv.res new file mode 100644 index 0000000..723a007 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAODACDrv.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDriverHtml.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDriverHtml.res new file mode 100644 index 0000000..c7f7a82 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDriverHtml.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.cfg new file mode 100644 index 0000000..40c80d0 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files (x86)\borland\delphi7\Projects\Bpl" +-LN"c:\program files (x86)\borland\delphi7\Projects\Bpl" +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.dof new file mode 100644 index 0000000..dd86d8f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.dof @@ -0,0 +1,115 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.178 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=Data Abstract +ProductVersion=2.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.dpr b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.dpr new file mode 100644 index 0000000..700c0aa --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.dpr @@ -0,0 +1,12 @@ +library DAPostgresDACDrv; + +uses + ShareMem, + uDAPostgresDACDriver in 'uDAPostgresDACDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DAPostgresDACDriverHtml.res} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.res new file mode 100644 index 0000000..723a007 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASDACDriverHtml.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASDACDriverHtml.res new file mode 100644 index 0000000..2ca3ed1 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASDACDriverHtml.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASDACDrv.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASDACDrv.cfg new file mode 100644 index 0000000..301d58f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASDACDrv.cfg @@ -0,0 +1,39 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files\borland\delphi7\Projects\Bpl" +-LN"c:\program files\borland\delphi7\Projects\Bpl" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASDACDrv.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASDACDrv.dof new file mode 100644 index 0000000..8c8eb5f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASDACDrv.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.1.196 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=Data Abstract +ProductVersion=2.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASDACDrv.dpr b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASDACDrv.dpr new file mode 100644 index 0000000..615439d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASDACDrv.dpr @@ -0,0 +1,12 @@ +library DASDACDrv; + +uses + ShareMem, + uDASDACDriver in 'uDASDACDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DASDACDriverHtml.res} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASDACDrv.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASDACDrv.res new file mode 100644 index 0000000..723a007 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASDACDrv.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASQLiteDriverHtml.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASQLiteDriverHtml.res new file mode 100644 index 0000000..316f711 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASQLiteDriverHtml.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.bdsproj new file mode 100644 index 0000000..584582a --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.bdsproj @@ -0,0 +1,182 @@ + + + + + + + + + + + + DASQLiteDrv.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + D:\Program Files\RemObjects Software\Data Abstract + + + + $(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10;$(DELPHI)\Lib\Debug + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 + + + False + + + + D:\Program Files\RemObjects Software\Data Abstract\DASchemaModeler.exe + + False + + + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 0 + 290 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.0.290 + + + + + Data Abstract + 2.0.0.0 + + RemObjects Data Abstract - FIBPlus Driver + RemObjects Hydra - Core Library + RemObjects Hydra - IDE Integration + RemObjects Hydra - RemObjects SDK Integration Library + RemObjects Hydra - RemObjects SDK IDE Integration + RemObjects NexusDB Pack - Library + RemObjects NexusDB Pack - IDE Integration + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.cfg new file mode 100644 index 0000000..8549342 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.cfg @@ -0,0 +1,34 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.dpr b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.dpr new file mode 100644 index 0000000..dafaf13 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.dpr @@ -0,0 +1,13 @@ +library DASQLiteDrv; + +uses + ShareMem, + uDASQLiteDriver in 'uDASQLiteDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DASQLiteDriverHtml.res} + +begin +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.res new file mode 100644 index 0000000..723a007 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAZeosDriverHtml.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAZeosDriverHtml.res new file mode 100644 index 0000000..f3000f5 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAZeosDriverHtml.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.cfg new file mode 100644 index 0000000..96a1b9a --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"D:\Program Files\RemObjects Software\Data Abstract" +-U"d:\program files.all\borland\delphi7\Lib\Debug;J:\Products\ACAT\Source" +-O"d:\program files.all\borland\delphi7\Lib\Debug;J:\Products\ACAT\Source" +-I"d:\program files.all\borland\delphi7\Lib\Debug;J:\Products\ACAT\Source" +-R"d:\program files.all\borland\delphi7\Lib\Debug;J:\Products\ACAT\Source" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.dpr b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.dpr new file mode 100644 index 0000000..a566487 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.dpr @@ -0,0 +1,12 @@ +library DAZeosDrv; + +uses + ShareMem, + uDAZeosDriver in 'uDAZeosDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DAZeosDriverHtml.res} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.res new file mode 100644 index 0000000..723a007 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.bdsproj new file mode 100644 index 0000000..1e97716 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_ADODriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - ADOExpress/dbGo Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.dpk new file mode 100644 index 0000000..501b019 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ADODriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - ADOExpress/dbGo Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D10, + adortl; + +contains + uDAADODriver in 'uDAADODriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.dpk new file mode 100644 index 0000000..503d123 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ADODriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - ADOExpress/dbGo Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D11, + adortl; + +contains + uDAADODriver in 'uDAADODriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.dproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.dproj new file mode 100644 index 0000000..b399aa9 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.dproj @@ -0,0 +1,68 @@ + + + {6843d8de-6ab6-4222-a3c5-282e7cc611df} + DataAbstract_ADODriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_ADODriver_D11.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - ADOExpress/dbGo DriverFalseTrueFalseTrueFalse301361FalseFalseFalseFalseFalse10331252RemObjects Software3.0.1.361RemObjects SDK1.0.0.0DataAbstract_ADODriver_D11.dpk + + + + + MainSource + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.dof new file mode 100644 index 0000000..e0035fa --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - ADOExpress/dbGo Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.138 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.dpk new file mode 100644 index 0000000..9a608cd --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ADODriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - ADOExpress/dbGo Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D6, + adortl; + +contains + uDAADODriver in 'uDAADODriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.dof new file mode 100644 index 0000000..f2d0c96 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - ADOExpress/dbGo Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.dpk new file mode 100644 index 0000000..a1427e8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ADODriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - ADOExpress/dbGo Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D7, + adortl; + +contains + uDAADODriver in 'uDAADODriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_Glyphs.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_Glyphs.res new file mode 100644 index 0000000..067c6a6 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_Glyphs.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.bdsproj new file mode 100644 index 0000000..a34aa65 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_AnyDACDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - AnyDAC Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.dpk new file mode 100644 index 0000000..d6baf13 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.dpk @@ -0,0 +1,53 @@ +package DataAbstract_AnyDACDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - AnyDAC Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D10, + dbexpress, + xmlrtl, + AnyDAC_PhysIB_D10, + AnyDAC_Phys_D10, + AnyDAC_ComI_D10, + AnyDAC_PhysADS_D10, + AnyDAC_PhysODBC_D10, + AnyDAC_PhysDBExp_D10, + AnyDAC_PhysASA_D10, + AnyDAC_PhysOracl_D10, + AnyDAC_PhysMySQL_D10, + AnyDAC_PhysDb2_D10, + AnyDAC_PhysMSSQL_D10, + AnyDAC_PhysMSAcc_D10, + AnyDAC_Comp_D10; + +contains + uDAAnyDACDriver in 'uDAAnyDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.dpk new file mode 100644 index 0000000..a9fc6ff --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.dpk @@ -0,0 +1,53 @@ +package DataAbstract_AnyDACDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - AnyDAC Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D11, + dbexpress, + xmlrtl, + AnyDAC_PhysIB_D11, + AnyDAC_Phys_D11, + AnyDAC_ComI_D11, + AnyDAC_PhysADS_D11, + AnyDAC_PhysODBC_D11, + AnyDAC_PhysDBExp_D11, + AnyDAC_PhysASA_D11, + AnyDAC_PhysOracl_D11, + AnyDAC_PhysMySQL_D11, + AnyDAC_PhysDb2_D11, + AnyDAC_PhysMSSQL_D11, + AnyDAC_PhysMSAcc_D11, + AnyDAC_Comp_D11; + +contains + uDAAnyDACDriver in 'uDAAnyDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.dproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.dproj new file mode 100644 index 0000000..37cf6a8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.dproj @@ -0,0 +1,67 @@ + + + {6843d8de-6ab6-4222-a3c5-282e7cc611df} + DataAbstract_AnyDACDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_AnyDACDriver_D11.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - AnyDAC DriverFalseTrueFalseTrueFalse301361FalseFalseFalseFalseFalse10331252RemObjects Software3.0.1.361RemObjects SDK1.0.0.0DataAbstract_AnyDACDriver_D11.dpk + + + + + MainSource + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.dof new file mode 100644 index 0000000..70f2fea --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - AnyDAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.138 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.dpk new file mode 100644 index 0000000..f744ae2 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.dpk @@ -0,0 +1,53 @@ +package DataAbstract_AnyDACDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - AnyDAC Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D6, + dbexpress, + xmlrtl, + AnyDAC_PhysIB_D6, + AnyDAC_Phys_D6, + AnyDAC_ComI_D6, + AnyDAC_PhysADS_D6, + AnyDAC_PhysODBC_D6, + AnyDAC_PhysDBExp_D6, + AnyDAC_PhysASA_D6, + AnyDAC_PhysOracl_D6, + AnyDAC_PhysMySQL_D6, + AnyDAC_PhysDb2_D6, + AnyDAC_PhysMSSQL_D6, + AnyDAC_PhysMSAcc_D6, + AnyDAC_Comp_D6; + +contains + uDAAnyDACDriver in 'uDAAnyDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.res new file mode 100644 index 0000000..892aed8 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.cfg new file mode 100644 index 0000000..f33a910 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\..\RemObjects SDK for Delphi\Dcu\D7" +-O"..\..\Dcu\D7;..\..\..\RemObjects SDK for Delphi\Dcu\D7" +-I"..\..\Dcu\D7;..\..\..\RemObjects SDK for Delphi\Dcu\D7" +-R"..\..\Dcu\D7;..\..\..\RemObjects SDK for Delphi\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.dof new file mode 100644 index 0000000..f8327e9 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - AnyDAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\..\RemObjects SDK for Delphi\Dcu\D7 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=3.0.0.289 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.dpk new file mode 100644 index 0000000..47a39c3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.dpk @@ -0,0 +1,53 @@ +package DataAbstract_AnyDACDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - AnyDAC Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D7, + dbexpress, + xmlrtl, + AnyDAC_PhysIB_D7, + AnyDAC_Phys_D7, + AnyDAC_ComI_D7, + AnyDAC_PhysADS_D7, + AnyDAC_PhysODBC_D7, + AnyDAC_PhysDBExp_D7, + AnyDAC_PhysASA_D7, + AnyDAC_PhysOracl_D7, + AnyDAC_PhysMySQL_D7, + AnyDAC_PhysDb2_D7, + AnyDAC_PhysMSSQL_D7, + AnyDAC_PhysMSAcc_D7, + AnyDAC_Comp_D7; + +contains + uDAAnyDACDriver in 'uDAAnyDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.res new file mode 100644 index 0000000..b40eccd Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_Glyphs.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_Glyphs.res new file mode 100644 index 0000000..3926468 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_Glyphs.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.bdsproj new file mode 100644 index 0000000..f5afeb9 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.bdsproj @@ -0,0 +1,179 @@ + + + + + + + + + + + + DataAbstract_BDEDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - BDE Driver + False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.dpk new file mode 100644 index 0000000..de3b837 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.dpk @@ -0,0 +1,39 @@ +package DataAbstract_BDEDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - BDE Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + DataAbstract_Core_D10; + +contains + uDABDEDriver in 'uDABDEDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.dpk new file mode 100644 index 0000000..073cecc --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.dpk @@ -0,0 +1,39 @@ +package DataAbstract_BDEDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - BDE Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + DataAbstract_Core_D11; + +contains + uDABDEDriver in 'uDABDEDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.dproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.dproj new file mode 100644 index 0000000..2d9757f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.dproj @@ -0,0 +1,68 @@ + + + {3cd4ddcd-76f8-4583-8117-c00562cb6a62} + DataAbstract_BDEDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_BDEDriver_D11.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - BDE DriverFalseTrueFalseTrueFalse301361FalseFalseFalseFalseFalse10331252RemObjects Software3.0.1.361RemObjects SDK1.0.0.0DataAbstract_BDEDriver_D11.dpk + + + + + MainSource + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.cfg new file mode 100644 index 0000000..c2c069b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.dpk new file mode 100644 index 0000000..aceb56d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.dpk @@ -0,0 +1,39 @@ +package DataAbstract_BDEDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - BDE Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D6, + bdertl; + +contains + uDABDEDriver in 'uDABDEDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.cfg new file mode 100644 index 0000000..8e0bad7 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.dpk new file mode 100644 index 0000000..a5b4538 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.dpk @@ -0,0 +1,39 @@ +package DataAbstract_BDEDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - BDE Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + DataAbstract_Core_D7; + +contains + uDABDEDriver in 'uDABDEDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_Glyphs.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_Glyphs.res new file mode 100644 index 0000000..a2a5a20 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_Glyphs.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.bdsproj new file mode 100644 index 0000000..096f1d8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_DBISAMDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - DBISAM Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.dpk new file mode 100644 index 0000000..b21161d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.dpk @@ -0,0 +1,40 @@ +package DataAbstract_DBISAMDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - DBISAM Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + vcldb, + RemObjects_Core_D10, + DataAbstract_Core_D10, + db324d9r; + +contains + uDADBISAMDriver in 'uDADBISAMDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.dpk new file mode 100644 index 0000000..2ba6953 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.dpk @@ -0,0 +1,40 @@ +package DataAbstract_DBISAMDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - DBISAM Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + vcldb, + RemObjects_Core_D11, + DataAbstract_Core_D11, + db324d2007r; + +contains + uDADBISAMDriver in 'uDADBISAMDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.dproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.dproj new file mode 100644 index 0000000..d09c0e0 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.dproj @@ -0,0 +1,77 @@ + + + {18f879f9-5865-46a9-8515-d3b4503d16ff} + DataAbstract_DBISAMDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_DBISAMDriver_D11.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - DBISAM DriverFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse10331252RemObjects Software1.0.0.0RemObjects SoftwareRemObjects SoftwareRemObjects Data Abstract1.0.0.0DataAbstract_DBISAMDriver_D11.dpk + + + + + MainSource + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.dof new file mode 100644 index 0000000..1e36acf --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.dof @@ -0,0 +1,77 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - DBISAM Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6 +Packages=vcl;rtl;dbrtl;adortl;vcldb;vclx;bdertl;vcldbx;ibxpress;dsnap;cds;bdecds;visualclx;visualdbclx;dsnapcrba;dsnapcon;VclSmp;vclshlctrls;vclie;xmlrtl;inet;inetdbbde;inetdbxpress;inetdb;webdsnap;websnap;soaprtl;dbexpress;dbxcds;indy;tb2kComplete;CRControls60;dac60;dacvcl60;sdacvcl60;sdac60;oraprov60;odac60;odacvcl60;DataAbstract_Core_D6;DataAbstract_DBXDriver_D6;DataAbstract_DiskDriver_D6 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.dpk new file mode 100644 index 0000000..f1b37bf --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.dpk @@ -0,0 +1,40 @@ +package DataAbstract_DBISAMDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - DBISAM Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + vcldb, + RemObjects_Core_D6, + DataAbstract_Core_D6, + db324d6r; + +contains + uDADBISAMDriver in 'uDADBISAMDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.res new file mode 100644 index 0000000..84eaa11 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.cfg new file mode 100644 index 0000000..02179cd --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7" +-O"..\..\Dcu\D7" +-I"..\..\Dcu\D7" +-R"..\..\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.dof new file mode 100644 index 0000000..2d15714 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - DBISAM Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.dpk new file mode 100644 index 0000000..6a2ee23 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.dpk @@ -0,0 +1,40 @@ +package DataAbstract_DBISAMDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - DBISAM Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + vcldb, + RemObjects_Core_D7, + DataAbstract_Core_D7, + db324d7r; + +contains + uDADBISAMDriver in 'uDADBISAMDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.res new file mode 100644 index 0000000..84eaa11 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_Glyphs.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_Glyphs.res new file mode 100644 index 0000000..3163762 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_Glyphs.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.bdsproj new file mode 100644 index 0000000..214c011 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_DBXDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - dbExpress Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.cfg new file mode 100644 index 0000000..207b254 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.dpk new file mode 100644 index 0000000..ce917fe --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.dpk @@ -0,0 +1,38 @@ +package DataAbstract_DBXDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - dbExpress Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + dbexpress, + DataAbstract_Core_D10; + +contains + uDADBXDriver in 'uDADBXDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.dpk new file mode 100644 index 0000000..d3298fa --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.dpk @@ -0,0 +1,38 @@ +package DataAbstract_DBXDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - dbExpress Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + dbexpress, + DataAbstract_Core_D11; + +contains + uDADBXDriver in 'uDADBXDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.dproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.dproj new file mode 100644 index 0000000..071e5f3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.dproj @@ -0,0 +1,72 @@ + + + {f8cd0c64-f9cd-46d4-8a1b-03d6a3efbdb3} + DataAbstract_DBXDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_DBXDriver_D11.bpl + + + 7.0 + False + False + True + True + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + True + True + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - dbExpress DriverFalseFalseFalseTrueFalse301361FalseFalseFalseFalseFalse10331252RemObjects Software3.0.1.361RemObjects SDK1.0.0.0DataAbstract_DBXDriver_D11.dpk + + + + + MainSource + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.cfg new file mode 100644 index 0000000..0aa2cb6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.dof new file mode 100644 index 0000000..d2de85f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - dbExpress Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.138 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.dpk new file mode 100644 index 0000000..d9265ff --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.dpk @@ -0,0 +1,39 @@ +package DataAbstract_DBXDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - dbExpress Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + dbexpress, + RemObjects_Core_D6, + DataAbstract_Core_D6; + +contains + uDADBXDriver in 'uDADBXDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.cfg new file mode 100644 index 0000000..a290ad9 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.dof new file mode 100644 index 0000000..7f90f99 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - dbExpress Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.dpk new file mode 100644 index 0000000..a20bd62 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.dpk @@ -0,0 +1,39 @@ +package DataAbstract_DBXDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - dbExpress Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + dbexpress, + RemObjects_Core_D7, + DataAbstract_Core_D7; + +contains + uDADBXDriver in 'uDADBXDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_Glyphs.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_Glyphs.res new file mode 100644 index 0000000..3ac39af Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_Glyphs.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_Drivers_D6.bpg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_Drivers_D6.bpg new file mode 100644 index 0000000..4e931fa --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_Drivers_D6.bpg @@ -0,0 +1,61 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = DataAbstract_ADODriver_D7.bpl DataAbstract_DBXDriver_D7.bpl \ + DataAbstract_IBXDriver_D7.bpl DataAbstract_DiskDriver_D7.bpl DAADODrv.dad \ + DADBXDrv.dad DADiskDrv.dad DAIBXDrv.dad DataAbstract_IBODriver_D7.bpl \ + DataAbstract_SDACDriver_D7.bpl DataAbstract_ODACDriver_D7.bpl DAIBODrv.dad \ + DASDACDrv.dad +DataAbstract_SDACDriver_D6.bpl DataAbstract_ODACDriver_D6.bpl +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +DataAbstract_DiskDriver_D7.bpl: DataAbstract_DiskDriver_D7.dpk + $(DCC) + +DataAbstract_DBXDriver_D7.bpl: DataAbstract_DBXDriver_D7.dpk + $(DCC) + +DAADODrv.dad: DAADODrv.dpr + $(DCC) + +DADBXDrv.dad: DADBXDrv.dpr + $(DCC) + +DADiskDrv.dad: DADiskDrv.dpr + $(DCC) + +DAIBXDrv.dad: DAIBXDrv.dpr + $(DCC) + +DAIBODrv.dad: DAIBODrv.dpr + $(DCC) + +DASDACDrv.dad: DASDACDrv.dpr + $(DCC) + +DataAbstract_SDACDriver_D7.bpl: DataAbstract_SDACDriver_D7.dpk + $(DCC) + +DataAbstract_ODACDriver_D7.bpl: DataAbstract_ODACDriver_D7.dpk + $(DCC) + +DataAbstract_ADODriver_D7.bpl: DataAbstract_ADODriver_D7.dpk + $(DCC) + +DataAbstract_IBXDriver_D7.bpl: DataAbstract_IBXDriver_D7.dpk + $(DCC) + +DataAbstract_IBODriver_D7.bpl: DataAbstract_IBODriver_D7.dpk + $(DCC) + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.bdsproj new file mode 100644 index 0000000..47a24e4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_ElevateDBDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - Elevate DB Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.dpk new file mode 100644 index 0000000..b6773b6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ElevateDBDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - ElevateDB Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D10, + edb105d10run; + +contains + uDAElevateDBDriver in 'uDAElevateDBDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.dpk new file mode 100644 index 0000000..bd44fbd --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ElevateDBDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - ElevateDB Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D11, + edb105D2007run; + +contains + uDAElevateDBDriver in 'uDAElevateDBDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.dproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.dproj new file mode 100644 index 0000000..d04db30 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.dproj @@ -0,0 +1,73 @@ + + + {c31471d9-f8e2-4e45-94a7-1264d8011587} + DataAbstract_ElevateDBDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_ElevateDBDriver_D11.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - ElevateDB DriverFalseTrueFalseTrueFalse301361FalseFalseFalseFalseFalse10331252RemObjects Software3.0.1.361RemObjects SDK1.0.0.0DataAbstract_ElevateDBDriver_D11.dpk + + + + + MainSource + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.cfg new file mode 100644 index 0000000..c2c069b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.dof new file mode 100644 index 0000000..0c3ea83 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - ElevateDB Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.138 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.dpk new file mode 100644 index 0000000..5e5f141 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ElevateDBDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - ElevateDB Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D6, + edb105d6run; + +contains + uDAElevateDBDriver in 'uDAElevateDBDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.res new file mode 100644 index 0000000..f5602d3 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.dof new file mode 100644 index 0000000..9e696f5 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - ElevateDB Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;EDBpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.dpk new file mode 100644 index 0000000..c2f5f25 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ElevateDBDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - ElevateDB Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D7, + edb105d7run; + +contains + uDAElevateDBDriver in 'uDAElevateDBDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.res new file mode 100644 index 0000000..77a3fad Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_Glyphs.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_Glyphs.res new file mode 100644 index 0000000..9e2c761 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_Glyphs.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.bdsproj new file mode 100644 index 0000000..239dc3d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_FIBDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - FIBPlus Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.dpk new file mode 100644 index 0000000..6b4fd10 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.dpk @@ -0,0 +1,39 @@ +package DataAbstract_FIBDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - FIBPlus Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D10, + FIBPlus2006; + +contains + uDAFIBDriver in 'uDAFIBDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.dpk new file mode 100644 index 0000000..d35cd4a --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.dpk @@ -0,0 +1,39 @@ +package DataAbstract_FIBDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - FIBPlus Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D11, + FIBPlus2007; + +contains + uDAFIBDriver in 'uDAFIBDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.dproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.dproj new file mode 100644 index 0000000..f73572b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.dproj @@ -0,0 +1,68 @@ + + + {4aa60252-6f77-44b7-a171-e158f29374ca} + DataAbstract_FIBDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_FIBDriver_D11.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - FIBPlus DriverFalseTrueFalseTrueFalse301361FalseFalseFalseFalseFalse10331252RemObjects Software3.0.1.361RemObjects SDK1.0.0.0DataAbstract_FIBDriver_D11.dpk + + + + + MainSource + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.dof new file mode 100644 index 0000000..c96c6c8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - FIBPlus Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=3.0.0.289 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.dpk new file mode 100644 index 0000000..0447c56 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.dpk @@ -0,0 +1,39 @@ +package DataAbstract_FIBDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - FIBPlus Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D6, + FIBPlus6; + +contains + uDAFIBDriver in 'uDAFIBDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.res new file mode 100644 index 0000000..f5602d3 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.dof new file mode 100644 index 0000000..ccdfd7b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - FIBPlus Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.dpk new file mode 100644 index 0000000..8ecc150 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.dpk @@ -0,0 +1,39 @@ +package DataAbstract_FIBDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - FIBPlus Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D7, + FIBPlus7; + +contains + uDAFIBDriver in 'uDAFIBDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.res new file mode 100644 index 0000000..892aed8 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_Glyphs.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_Glyphs.res new file mode 100644 index 0000000..d0e3d08 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_Glyphs.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.bdsproj new file mode 100644 index 0000000..8d350cb --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.bdsproj @@ -0,0 +1,179 @@ + + + + + + + + + + + + DataAbstract_IBDACDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - CoreLabs IBDAC Driver + False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.cfg new file mode 100644 index 0000000..207b254 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.dpk new file mode 100644 index 0000000..032d677 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.dpk @@ -0,0 +1,38 @@ +package DataAbstract_MyDACDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs IBDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + IBdac100, + RemObjects_Core_D10, + DataAbstract_Core_D10; + +contains + uDAIBDACDriver in 'uDAIBDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.dpk new file mode 100644 index 0000000..6cd7bb8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.dpk @@ -0,0 +1,38 @@ +package DataAbstract_IBDACDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs IBDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + IBdac105, + RemObjects_Core_D11, + DataAbstract_Core_D11; + +contains + uDAIBDACDriver in 'uDAIBDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.dproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.dproj new file mode 100644 index 0000000..bfcbf1a --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.dproj @@ -0,0 +1,73 @@ + + + {0d0e2131-7a05-4241-9ca1-f98aea2eb9d9} + DataAbstract_IBDACDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_IBDACDriver_D11.bpl + + + 7.0 + False + False + True + True + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + True + True + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - CoreLabs IBDAC DriverFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse10331252RemObjects Software1.0.0.0RemObjects SoftwareRemObjects SoftwareRemObjects Data Abstract1.0.0.0DataAbstract_IBDACDriver_D11.dpk + + + + + MainSource + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.cfg new file mode 100644 index 0000000..51b688e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6" +-O"..\..\Dcu\D6" +-I"..\..\Dcu\D6" +-R"..\..\Dcu\D6" +-Z diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.dof new file mode 100644 index 0000000..0cbf2a3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - CoreLabs IBDAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.dpk new file mode 100644 index 0000000..6975ec3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.dpk @@ -0,0 +1,38 @@ +package DataAbstract_IBDACDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs IBDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + ibdac60, + RemObjects_Core_D6, + DataAbstract_Core_D6; + +contains + uDAIBDACDriver in 'uDAIBDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.res new file mode 100644 index 0000000..371f8db Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.cfg new file mode 100644 index 0000000..4c8862b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7" +-O"..\..\Dcu\D7" +-I"..\..\Dcu\D7" +-R"..\..\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.dof new file mode 100644 index 0000000..f69663d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - CoreLabs IBDAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.dpk new file mode 100644 index 0000000..3fd2f36 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.dpk @@ -0,0 +1,38 @@ +package DataAbstract_MyDACDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs IBDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + ibdac70, + RemObjects_Core_D7, + DataAbstract_Core_D7; + +contains + uDAIBDACDriver in 'uDAIBDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.res new file mode 100644 index 0000000..371f8db Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_Glyphs.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_Glyphs.res new file mode 100644 index 0000000..3497984 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_Glyphs.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.bdsproj new file mode 100644 index 0000000..00d9b79 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_IBODriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - InterBase Objects Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.dpk new file mode 100644 index 0000000..ef0bb3f --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.dpk @@ -0,0 +1,40 @@ +package DataAbstract_IBODriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - InterBase Objects Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D10, + IBO40TRT_D10, + IBO40XRT_D10; + +contains + uDAIBODriver in 'uDAIBODriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.dpk new file mode 100644 index 0000000..d20f478 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.dpk @@ -0,0 +1,40 @@ +package DataAbstract_IBODriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - InterBase Objects Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D11, + IBO40TRT_D2007, + IBO40XRT_D2007; + +contains + uDAIBODriver in 'uDAIBODriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.dproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.dproj new file mode 100644 index 0000000..15f3a0b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.dproj @@ -0,0 +1,70 @@ + + + + {8dcafd0d-ab98-4b7e-8b86-36dbc593e504} + DataAbstract_IBODriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_IBODriver_D11.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - InterBase Objects DriverFalseTrueFalseTrueFalse1000FalseFalseFalseFalseFalse10331252RemObjects Software1.0.0.0RemObjects SoftwareRemObjects SoftwareRemObjects Data Abstract1.0.0.0DataAbstract_IBODriver_D11.dpk + + + + + MainSource + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.dof new file mode 100644 index 0000000..533614b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.dof @@ -0,0 +1,77 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - InterBase Objects Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software, Inc. +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright=RemObjects Software, Inc. +LegalTrademarks=RemObjects Software, Inc. +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments=http://www.remobjects.com + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.dpk new file mode 100644 index 0000000..1238d53 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.dpk @@ -0,0 +1,40 @@ +package DataAbstract_IBODriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - InterBase Objects Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D6, + IBO40TRT_D6, + IBO40XRT_D6; + +contains + uDAIBODriver in 'uDAIBODriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.res new file mode 100644 index 0000000..b26b84e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.dof new file mode 100644 index 0000000..b8f8fb1 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.dof @@ -0,0 +1,117 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - InterBase Objects Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software, Inc. +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright=RemObjects Software, Inc. +LegalTrademarks=RemObjects Software, Inc. +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments=http://www.remobjects.com + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.dpk new file mode 100644 index 0000000..d4562dc --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.dpk @@ -0,0 +1,40 @@ +package DataAbstract_IBODriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - InterBase Objects Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D7, + IBO40TRT_D7, + IBO40XRT_D7; + +contains + uDAIBODriver in 'uDAIBODriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.res new file mode 100644 index 0000000..b26b84e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_Glyphs.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_Glyphs.res new file mode 100644 index 0000000..e4c8f7b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_Glyphs.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.bdsproj new file mode 100644 index 0000000..ba3a5e6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_IBXDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - InterBase Express Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.dpk new file mode 100644 index 0000000..33c10ef --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.dpk @@ -0,0 +1,39 @@ +package DataAbstract_IBXDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - InterBase Express Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D10, + ibxpress; + +contains + uDAIBXDriver in 'uDAIBXDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.dpk new file mode 100644 index 0000000..f4f4afd --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.dpk @@ -0,0 +1,39 @@ +package DataAbstract_IBXDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - InterBase Express Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D11, + ibxpress; + +contains + uDAIBXDriver in 'uDAIBXDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.dproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.dproj new file mode 100644 index 0000000..812d141 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.dproj @@ -0,0 +1,68 @@ + + + {c31471d9-f8e2-4e45-94a7-1264d8011587} + DataAbstract_IBXDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_IBXDriver_D11.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - InterBase Express DriverFalseTrueFalseTrueFalse301361FalseFalseFalseFalseFalse10331252RemObjects Software3.0.1.361RemObjects SDK1.0.0.0DataAbstract_IBXDriver_D11.dpk + + + + + MainSource + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.dof new file mode 100644 index 0000000..220d444 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - InterBase Express Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.138 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.dpk new file mode 100644 index 0000000..98c5ffa --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.dpk @@ -0,0 +1,39 @@ +package DataAbstract_IBXDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - InterBase Express Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D6, + ibxpress; + +contains + uDAIBXDriver in 'uDAIBXDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.dof new file mode 100644 index 0000000..933b8c1 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - InterBase Express Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.dpk new file mode 100644 index 0000000..7c15b6b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.dpk @@ -0,0 +1,39 @@ +package DataAbstract_IBXDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - InterBase Express Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D7, + ibxpress; + +contains + uDAIBXDriver in 'uDAIBXDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_Glyphs.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_Glyphs.res new file mode 100644 index 0000000..5d3bf7b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_Glyphs.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.bdsproj new file mode 100644 index 0000000..f023fd3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_MyDACDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - CoreLabs MyDAC Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.cfg new file mode 100644 index 0000000..207b254 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.dpk new file mode 100644 index 0000000..7d302e2 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.dpk @@ -0,0 +1,41 @@ +package DataAbstract_MyDACDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs MyDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac100, + mydac100, + RemObjects_Core_D10, + DataAbstract_Core_D10; + +contains + uDAMyDACDriver in 'uDAMyDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.dpk new file mode 100644 index 0000000..9a0e35d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.dpk @@ -0,0 +1,41 @@ +package DataAbstract_MyDACDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs MyDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac105, + mydac105, + RemObjects_Core_D11, + DataAbstract_Core_D11; + +contains + uDAMyDACDriver in 'uDAMyDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.dproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.dproj new file mode 100644 index 0000000..dec5987 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.dproj @@ -0,0 +1,77 @@ + + + {c13e3848-8048-4b6e-a5c5-b14de1a683a5} + DataAbstract_MyDACDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_MyDACDriver_D11.bpl + + + 7.0 + False + False + True + True + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + True + True + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - CoreLabs MyDAC DriverFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse10331252RemObjects Software1.0.0.0RemObjects SoftwareRemObjects SoftwareRemObjects Data Abstract1.0.0.0DataAbstract_MyDACDriver_D11.dpk + + + + + MainSource + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.cfg new file mode 100644 index 0000000..481e4c1 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.cfg @@ -0,0 +1,42 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\dcu\d6" +-LE"..\..\dcu\d6" +-LN"..\..\dcu\d6" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_PLATFORM +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.dof new file mode 100644 index 0000000..468bfc4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - CoreLabs MyDAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.dpk new file mode 100644 index 0000000..3886fc7 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.dpk @@ -0,0 +1,41 @@ +package DataAbstract_MYDACDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs MyDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac60, + mydac60, + RemObjects_Core_D6, + DataAbstract_Core_D6; + +contains + uDAMyDACDriver in 'uDAMyDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.res new file mode 100644 index 0000000..371f8db Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.dof new file mode 100644 index 0000000..d99f972 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - CoreLabs MyDAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.dpk new file mode 100644 index 0000000..a90f1f3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.dpk @@ -0,0 +1,41 @@ +package DataAbstract_MyDACDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs MyDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac70, + mydac70, + RemObjects_Core_D7, + DataAbstract_Core_D7; + +contains + uDAMyDACDriver in 'uDAMyDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.res new file mode 100644 index 0000000..371f8db Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_Glyphs.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_Glyphs.res new file mode 100644 index 0000000..7e28db9 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_Glyphs.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.bdsproj new file mode 100644 index 0000000..98d0a00 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_MySQLDACDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - MicroOlap mySQL Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.dpk new file mode 100644 index 0000000..835b724 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.dpk @@ -0,0 +1,39 @@ +package DataAbstract_MySQLDACDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - MicroOlap mySQLDac Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D10, + mySQLDAC10; + +contains + uDAMySQLDACDriver in 'uDAMySQLDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.dpk new file mode 100644 index 0000000..55e6cc5 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.dpk @@ -0,0 +1,39 @@ +package DataAbstract_MySQLDACDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - MicroOlap mySQLDac Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D11, + mySQLDAC11; + +contains + uDAMySQLDACDriver in 'uDAMySQLDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.dproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.dproj new file mode 100644 index 0000000..ebd8da3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.dproj @@ -0,0 +1,69 @@ + + + {8ba781c7-bf1c-49bf-a87d-d21f3a68fd91} + DataAbstract_MySQLDACDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_MySQLDACDriver_D11.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - MicroOlap mySQLDac DriverFalseTrueFalseTrueFalse301361FalseFalseFalseFalseFalse10331252RemObjects Software3.0.1.361RemObjects SDK1.0.0.0DataAbstract_MySQLDACDriver_D11.dpk + + + + + MainSource + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.dof new file mode 100644 index 0000000..e0035fa --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - ADOExpress/dbGo Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.138 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.dpk new file mode 100644 index 0000000..66a1e6c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.dpk @@ -0,0 +1,39 @@ +package DataAbstract_MySQLDACDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - MicroOlap mySQLDac Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D6, + mySQLDAC6; + +contains + uDAMySQLDACDriver in 'uDAMySQLDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.res new file mode 100644 index 0000000..892aed8 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.dof new file mode 100644 index 0000000..f2d0c96 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - ADOExpress/dbGo Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.dpk new file mode 100644 index 0000000..994ed6b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.dpk @@ -0,0 +1,39 @@ +package DataAbstract_MySQLDACDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - MicroOlap mySQLDac Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D7, + mySQLDAC7; + +contains + uDAMySQLDACDriver in 'uDAMySQLDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.res new file mode 100644 index 0000000..892aed8 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_Glyphs.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_Glyphs.res new file mode 100644 index 0000000..cd846aa Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_Glyphs.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.bdsproj new file mode 100644 index 0000000..05fd89b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.bdsproj @@ -0,0 +1,182 @@ + + + + + + + + + + + + DataAbstract_NexusDBDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + Data Abstract - NexusDB Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\ + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + RemObjects Data Abstract - Core Library + RemObjects Data Abstract - IDE Package + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.cfg new file mode 100644 index 0000000..ab68ed8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\" +-O"..\" +-I"..\" +-R"..\" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.dpk new file mode 100644 index 0000000..b3ebee5 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.dpk @@ -0,0 +1,47 @@ +package DataAbstract_NexusDBDriver_D10; + +{$R *.res} +{$R 'uDANexusDBDriver.dcr'} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Data Abstract - NexusDB Driver'} +{$IMPLICITBUILD OFF} + +requires + RemObjects_Core_D10, + DataAbstract_Core_D10, + NexusDB107ll90, + NexusDB107sr90, + NexusDB107sd90, + NexusDB107sq90, + NexusDB107re90, + NexusDB107st90, + NexusDB107tn90, + NexusDB107pt90, + NexusDB107tw90, + NexusDB107db90, + NexusDB1071x90; + +contains + uDANexusDBDriver in 'uDANexusDBDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.res new file mode 100644 index 0000000..941b7a7 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.dpk new file mode 100644 index 0000000..4ffe8e1 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.dpk @@ -0,0 +1,46 @@ +package DataAbstract_NexusDBDriver_D11; + +{$R *.res} +{$R 'uDANexusDBDriver.dcr'} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Data Abstract - NexusDB Driver'} +{$IMPLICITBUILD OFF} + +requires + RemObjects_Core_D11, + DataAbstract_Core_D11, + NexusDB207ll110, + NexusDB207se110, + NexusDB207sr110, + NexusDB207sd110, + NexusDB207sq110, + NexusDB207re110, + NexusDB207pt110, + NexusDB207tn110, + NexusDB207tw110, + NexusDB207db110; + +contains + uDANexusDBDriver in 'uDANexusDBDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.dproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.dproj new file mode 100644 index 0000000..52343f9 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.dproj @@ -0,0 +1,102 @@ + + + + {f5368522-8742-4b69-a8b3-668ec242cc52} + DataAbstract_NexusDBDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_NexusDBDriver_D11.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\ + ..\ + ..\ + ..\ + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\ + ..\ + ..\ + ..\ + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseData Abstract - NexusDB DriverFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse103312521.0.0.01.0.0.0 + + + + + + + + + + + + + + + + + RemObjects Data Abstract - MicroOlap mySQLDac Driver + CodeGear BDE DB Components + CodeGear C++Builder Office 2000 Servers Package + CodeGear C++Builder Office XP Servers Package + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + DataAbstract_NexusDBDriver_D11.dpk + + + + + MainSource + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.res new file mode 100644 index 0000000..941b7a7 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.cfg new file mode 100644 index 0000000..c7cbecf --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.cfg @@ -0,0 +1,42 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\Dcu\D6" +-LE"..\Dcu\D6" +-LN"..\Dcu\D6" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_PLATFORM +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.dof new file mode 100644 index 0000000..dcd6c63 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - NexusDB Driver + +[Directories] +OutputDir= +UnitOutputDir=..\Dcu\D6 +PackageDLLOutputDir=..\Dcu\D6 +PackageDCPOutputDir=..\Dcu\D6 +SearchPath= +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.dpk new file mode 100644 index 0000000..f2b9bec --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.dpk @@ -0,0 +1,44 @@ +package DataAbstract_NexusDBDriver_D6; + +{$R *.res} +{$R 'uDANexusDBDriver.dcr'} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Data Abstract - NexusDB Driver'} +{$IMPLICITBUILD OFF} + +requires + RemObjects_Core_D6, + DataAbstract_Core_D6, + NexusDB107st60, + NexusDB107pt60, + NexusDB107tw60, + NexusDB107tn60, + NexusDB107re60, + NexusDB1071x60, + NexusDB107sq60, + NexusDB107db60; + +contains + uDANexusDBDriver in 'uDANexusDBDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.res new file mode 100644 index 0000000..22eb4e7 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.cfg new file mode 100644 index 0000000..d772b58 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.cfg @@ -0,0 +1,46 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\Dcu\D7" +-LE"..\Dcu\D7" +-LN"..\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.dof new file mode 100644 index 0000000..3a86bcb --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - NexusDB Driver + +[Directories] +OutputDir= +UnitOutputDir=..\Dcu\D7 +PackageDLLOutputDir=..\Dcu\D7 +PackageDCPOutputDir=..\Dcu\D7 +SearchPath= +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.dpk new file mode 100644 index 0000000..66eb10a --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.dpk @@ -0,0 +1,47 @@ +package DataAbstract_NexusDBDriver_D7; + +{$R *.res} +{$R 'uDANexusDBDriver.dcr'} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Data Abstract - NexusDB Driver'} +{$IMPLICITBUILD OFF} + +requires + RemObjects_Core_D7, + DataAbstract_Core_D7, + NexusDB107ll70, + NexusDB107sr70, + NexusDB107sd70, + NexusDB107sq70, + NexusDB107re70, + NexusDB107st70, + NexusDB107tn70, + NexusDB107pt70, + NexusDB107tw70, + NexusDB107db70, + NexusDB1071x70; + +contains + uDANexusDBDriver in 'uDANexusDBDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.res new file mode 100644 index 0000000..20e9bca Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.bdsproj new file mode 100644 index 0000000..01bb3ad --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_ODACDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - CoreLabs ODAC Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.cfg new file mode 100644 index 0000000..207b254 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.dpk new file mode 100644 index 0000000..78921ea --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.dpk @@ -0,0 +1,41 @@ +package DataAbstract_ODACDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs ODAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac100, + RemObjects_Core_D10, + DataAbstract_Core_D10, + odac100; + +contains + uDAODACDriver in 'uDAODACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.dpk new file mode 100644 index 0000000..92f4d48 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.dpk @@ -0,0 +1,41 @@ +package DataAbstract_ODACDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs ODAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac105, + RemObjects_Core_D11, + DataAbstract_Core_D11, + odac105; + +contains + uDAODACDriver in 'uDAODACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.dproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.dproj new file mode 100644 index 0000000..7d8ed75 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.dproj @@ -0,0 +1,87 @@ + + + {4ed86b4c-3296-4ab5-b711-e264774d76b0} + DataAbstract_ODACDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_ODACDriver_D11.bpl + + + 7.0 + False + False + True + True + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + True + True + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - CoreLabs ODAC DriverFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse10331252RemObjects Software1.0.0.0RemObjects SoftwareRemObjects SoftwareRemObjects Data Abstract1.0.0.0DataAbstract_ODACDriver_D11.dpk + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.cfg new file mode 100644 index 0000000..0aa2cb6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.dof new file mode 100644 index 0000000..e6a8cb6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.dof @@ -0,0 +1,77 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - CoreLabs ODAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software, Inc. +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright=RemObjects Software, Inc. +LegalTrademarks=RemObjects Software, Inc. +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments=http://www.remobjects.com + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.dpk new file mode 100644 index 0000000..debd426 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.dpk @@ -0,0 +1,41 @@ +package DataAbstract_ODACDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs ODAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac60, + RemObjects_Core_D6, + DataAbstract_Core_D6, + odac60; + +contains + uDAODACDriver in 'uDAODACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.res new file mode 100644 index 0000000..b26b84e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.cfg new file mode 100644 index 0000000..a290ad9 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.dof new file mode 100644 index 0000000..b6566eb --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.dof @@ -0,0 +1,117 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - CoreLabs ODAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software, Inc. +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright=RemObjects Software, Inc. +LegalTrademarks=RemObjects Software, Inc. +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments=http://www.remobjects.com + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.dpk new file mode 100644 index 0000000..06e9940 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.dpk @@ -0,0 +1,41 @@ +package DataAbstract_ODACDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs ODAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac70, + RemObjects_Core_D7, + DataAbstract_Core_D7, + odac70; + +contains + uDAODACDriver in 'uDAODACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.res new file mode 100644 index 0000000..b26b84e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_Glyphs.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_Glyphs.res new file mode 100644 index 0000000..5948a0e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_Glyphs.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.bdsproj new file mode 100644 index 0000000..d3a6db6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_PostgresDACDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - MicroOlap PostgresDAC Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.dpk new file mode 100644 index 0000000..424def4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.dpk @@ -0,0 +1,39 @@ +package DataAbstract_PostgresDACDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - MicroOlap PostgresDAC Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D10, + PostgresDAC10; + +contains + uDAPostgresDACDriver in 'uDAPostgresDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.dpk new file mode 100644 index 0000000..14e92ab --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.dpk @@ -0,0 +1,39 @@ +package DataAbstract_PostgresDACDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - MicroOlap PostgresDAC Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D11, + PostgresDAC11; + +contains + uDAPostgresDACDriver in 'uDAPostgresDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.dproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.dproj new file mode 100644 index 0000000..1233566 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.dproj @@ -0,0 +1,69 @@ + + + + {777e54de-8166-497d-912a-60af105eb626} + DataAbstract_PostgresDACDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_PostgresDACDriver_D11.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - MicroOlap PostgresDAC DriverFalseTrueFalseTrueFalse301361FalseFalseFalseFalseFalse10331252RemObjects Software3.0.1.361RemObjects SDK1.0.0.0DataAbstract_PostgresDACDriver_D11.dpk + + + + + MainSource + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.dof new file mode 100644 index 0000000..e0035fa --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - ADOExpress/dbGo Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.138 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.dpk new file mode 100644 index 0000000..b7803fe --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.dpk @@ -0,0 +1,39 @@ +package DataAbstract_PostgresDACDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - MicroOlap PostgresDAC Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D6, + PostgresDAC6; + +contains + uDAPostgresDACDriver in 'uDAPostgresDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.res new file mode 100644 index 0000000..892aed8 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.dof new file mode 100644 index 0000000..f2d0c96 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - ADOExpress/dbGo Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.dpk new file mode 100644 index 0000000..37c6d74 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.dpk @@ -0,0 +1,39 @@ +package DataAbstract_PostgresDACDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - MicroOlap PostgresDAC Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D7, + PostgresDAC7; + +contains + uDAPostgresDACDriver in 'uDAPostgresDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.res new file mode 100644 index 0000000..892aed8 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_Glyphs.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_Glyphs.res new file mode 100644 index 0000000..fb43550 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_Glyphs.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.bdsproj new file mode 100644 index 0000000..d05f343 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_SDACDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - CoreLabs SDAC Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.cfg new file mode 100644 index 0000000..207b254 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.dpk new file mode 100644 index 0000000..a7067e9 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.dpk @@ -0,0 +1,41 @@ +package DataAbstract_SDACDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs SDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac100, + RemObjects_Core_D10, + sdac100, + DataAbstract_Core_D10; + +contains + uDASDACDriver in 'uDASDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.dpk new file mode 100644 index 0000000..40d1424 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.dpk @@ -0,0 +1,41 @@ +package DataAbstract_SDACDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs SDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac105, + RemObjects_Core_D11, + sdac105, + DataAbstract_Core_D11; + +contains + uDASDACDriver in 'uDASDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.dproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.dproj new file mode 100644 index 0000000..4c5409b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.dproj @@ -0,0 +1,79 @@ + + + {bcb5ceeb-712c-4f85-83e3-6f57bb934c9f} + DataAbstract_SDACDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_SDACDriver_D11.bpl + + + 7.0 + False + False + True + True + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + True + True + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - CoreLabs SDAC DriverFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse10331252RemObjects Software1.0.0.0RemObjects SoftwareRemObjects SoftwareRemObjects Data Abstract1.0.0.0DataAbstract_SDACDriver_D11.dpk + + + + + MainSource + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.cfg new file mode 100644 index 0000000..0aa2cb6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.dof new file mode 100644 index 0000000..a6cb4e4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.dof @@ -0,0 +1,77 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - CoreLabs SDAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software, Inc. +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright=RemObjects Software, Inc. +LegalTrademarks=RemObjects Software, Inc. +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments=http://www.remobjects.com + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.dpk new file mode 100644 index 0000000..6f3c3e6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.dpk @@ -0,0 +1,41 @@ +package DataAbstract_SDACDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs SDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + RemObjects_Core_D6, + DataAbstract_Core_D6, + dac60, + sdac60; + +contains + uDASDACDriver in 'uDASDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.res new file mode 100644 index 0000000..b26b84e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.cfg new file mode 100644 index 0000000..a290ad9 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.dof new file mode 100644 index 0000000..42ca991 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.dof @@ -0,0 +1,117 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - CoreLabs SDAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software, Inc. +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright=RemObjects Software, Inc. +LegalTrademarks=RemObjects Software, Inc. +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments=http://www.remobjects.com + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.dpk new file mode 100644 index 0000000..ca1d337 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.dpk @@ -0,0 +1,41 @@ +package DataAbstract_SDACDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs SDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac70, + RemObjects_Core_D7, + sdac70, + DataAbstract_Core_D7; + +contains + uDASDACDriver in 'uDASDACDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.res new file mode 100644 index 0000000..ac3b612 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_Glyphs.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_Glyphs.res new file mode 100644 index 0000000..d14c81c Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_Glyphs.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.bdsproj new file mode 100644 index 0000000..4acf23e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_SQLiteDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - SQLite Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.cfg new file mode 100644 index 0000000..207b254 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.dpk new file mode 100644 index 0000000..e678ec2 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.dpk @@ -0,0 +1,37 @@ +package DataAbstract_SQLiteDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - SQLite Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D10; + +contains + uDASQLiteDriver in 'uDASQLiteDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.dpk new file mode 100644 index 0000000..ba6edaa --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.dpk @@ -0,0 +1,37 @@ +package DataAbstract_SQLiteDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - SQLite Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D11; + +contains + uDASQLiteDriver in 'uDASQLiteDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.dproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.dproj new file mode 100644 index 0000000..ed142b2 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.dproj @@ -0,0 +1,71 @@ + + + {17f81962-5ed1-4c36-bee9-ce79aab46e95} + DataAbstract_SQLiteDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_SQLiteDriver_D11.bpl + + + 7.0 + False + False + True + True + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + True + True + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - SQLite DriverFalseFalseFalseTrueFalse301361FalseFalseFalseFalseFalse10331252RemObjects Software3.0.1.361RemObjects SDK1.0.0.0DataAbstract_SQLiteDriver_D11.dpk + + + + + MainSource + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.cfg new file mode 100644 index 0000000..4730510 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.dof new file mode 100644 index 0000000..1fb3129 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - SQLite Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.138 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.dpk new file mode 100644 index 0000000..81be681 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.dpk @@ -0,0 +1,37 @@ +package DataAbstract_SQLiteDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - SQLite Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D6; + +contains + uDASQLiteDriver in 'uDASQLiteDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.cfg new file mode 100644 index 0000000..5cf57a8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.dof new file mode 100644 index 0000000..94c4d85 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - SQLite Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.dpk new file mode 100644 index 0000000..0265195 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.dpk @@ -0,0 +1,37 @@ +package DataAbstract_SQLiteDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - SQLite Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D7; + +contains + uDASQLiteDriver in 'uDASQLiteDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_Glyphs.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_Glyphs.res new file mode 100644 index 0000000..9f2e224 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_Glyphs.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.bdsproj new file mode 100644 index 0000000..267567e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_ZeosDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - Zeos Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.cfg new file mode 100644 index 0000000..207b254 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.dpk new file mode 100644 index 0000000..fa6c962 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ZeosDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Zeos Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + ZComponentDesign, + RemObjects_Core_D10, + DataAbstract_Core_D10; + +contains + uDAZeosDriver in 'uDAZeosDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.dpk new file mode 100644 index 0000000..8483957 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ZeosDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Zeos Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + ZComponentDesign, + RemObjects_Core_D11, + DataAbstract_Core_D11; + +contains + uDAZeosDriver in 'uDAZeosDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.dproj b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.dproj new file mode 100644 index 0000000..5711217 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.dproj @@ -0,0 +1,73 @@ + + + {a14f79c2-acbc-46d8-a339-5d13e7ddad81} + DataAbstract_ZeosDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_ZeosDriver_D11.bpl + + + 7.0 + False + False + True + True + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + True + True + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - Zeos DriverFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse10331252RemObjects Software1.0.0.0RemObjects SoftwareRemObjects SoftwareRemObjects Data Abstract1.0.0.0DataAbstract_ZeosDriver_D11.dpk + + + + + MainSource + + + + + + + + + + \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.cfg new file mode 100644 index 0000000..0aa2cb6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.dof new file mode 100644 index 0000000..1972ae0 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.dof @@ -0,0 +1,77 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - Zeos Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software, Inc. +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright=RemObjects Software, Inc. +LegalTrademarks=RemObjects Software, Inc. +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments=http://www.remobjects.com + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.dpk new file mode 100644 index 0000000..95dba7c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ZeosDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Zeos Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + ZComponentDesign, + RemObjects_Core_D6, + DataAbstract_Core_D6; + +contains + uDAZeosDriver in 'uDAZeosDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.res new file mode 100644 index 0000000..b26b84e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.cfg new file mode 100644 index 0000000..a290ad9 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.dof new file mode 100644 index 0000000..cb208b6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.dof @@ -0,0 +1,117 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - Zeos Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software, Inc. +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright=RemObjects Software, Inc. +LegalTrademarks=RemObjects Software, Inc. +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments=http://www.remobjects.com + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.dpk new file mode 100644 index 0000000..9cac616 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ZeosDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Zeos Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + RemObjects_Core_D7, + DataAbstract_Core_D7, + ZComponentDesign; + +contains + uDAZeosDriver in 'uDAZeosDriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.res new file mode 100644 index 0000000..b26b84e Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Glyphs.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Glyphs.res new file mode 100644 index 0000000..92bfe89 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Glyphs.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DADOADriverHtml.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DADOADriverHtml.res new file mode 100644 index 0000000..8497330 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DADOADriverHtml.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DADOADrv.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DADOADrv.cfg new file mode 100644 index 0000000..2d0f732 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DADOADrv.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J+ +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\..\Bin" +-LE"c:\program files\borland\delphi7\Projects\Bpl" +-LN"c:\program files\borland\delphi7\Projects\Bpl" +-w-SYMBOL_DEPRECATED +-w-SYMBOL_PLATFORM +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DADOADrv.dpr b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DADOADrv.dpr new file mode 100644 index 0000000..6282793 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DADOADrv.dpr @@ -0,0 +1,15 @@ +library DADOADrv; + +uses + ShareMem, + Forms, + SysUtils, + Classes, + uDADOADriver in 'uDADOADriver.pas'; + +{$E dad} + +{$R *.res} +{$R DADOADriverHtml.res} + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DADOADrv.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DADOADrv.res new file mode 100644 index 0000000..94795e8 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DADOADrv.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DOA.INC b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DOA.INC new file mode 100644 index 0000000..dbb6770 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DOA.INC @@ -0,0 +1,8 @@ +{ ****************************************************************************** + + Contains defines for different DOA versions + + **************************************************************************** } + +// if using DOA 4.0 or higher activate this define +{$DEFINE DOA4} \ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DataAbstract_DOADriver_D7.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DataAbstract_DOADriver_D7.cfg new file mode 100644 index 0000000..9e5fc23 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DataAbstract_DOADriver_D7.cfg @@ -0,0 +1,40 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\..\Dcu\D7" +-LE"..\..\..\Dcu\D7" +-LN"..\..\..\Dcu\D7" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DataAbstract_DOADriver_D7.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DataAbstract_DOADriver_D7.dof new file mode 100644 index 0000000..8d7f5df --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DataAbstract_DOADriver_D7.dof @@ -0,0 +1,117 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - Direct Oracle Access Driver + +[Directories] +OutputDir= +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DataAbstract_DOADriver_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DataAbstract_DOADriver_D7.dpk new file mode 100644 index 0000000..959b541 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DataAbstract_DOADriver_D7.dpk @@ -0,0 +1,40 @@ +package DataAbstract_DOADriver_D7; + +{$R *.res} +{$R 'uDADOADriver.dcr'} +{$ALIGN 8} +{$ASSERTIONS OFF} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS ON} +{$RANGECHECKS ON} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE ON} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Data Abstract - Direct Oracle Access Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D7, + doa40d7; + +contains + uDADOADriver in 'uDADOADriver.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DataAbstract_DOADriver_D7.res b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DataAbstract_DOADriver_D7.res new file mode 100644 index 0000000..c467631 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/DataAbstract_DOADriver_D7.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/uDADOADriver.dcr b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/uDADOADriver.dcr new file mode 100644 index 0000000..3e5d914 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/uDADOADriver.dcr differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/uDADOADriver.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/uDADOADriver.pas new file mode 100644 index 0000000..7bb3f3d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/Unsupported/uDADOADriver.pas @@ -0,0 +1,675 @@ +unit uDADOADriver; + +interface + +uses + DB, + Classes, + uROClasses, + uDAEngine, + uDAInterfaces, + uDAOracleInterfaces, + uDAUtils, + Oracle, + OracleData; + +type + + TDADOADriver = class(TDADriverReference) + end; + + TDAEDOADriver = class(TDAOracleDriver) + private + fTraceCallBack: TDALogTraceEvent; // UKO 26.09.2003 + protected + procedure DoSetTraceOptions(TraceActive: Boolean; TraceOptions: + TDATraceOptions; Callback: TDALogTraceEvent); override; + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; + function GetConnectionClass: TDAEConnectionClass; override; + function GetDefaultCustomParameters: string; override; + function GetDescription: string; override; + function GetDriverID: string; override; + + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + end; + + TDAEDOAConnection = class(TDAOracleConnection) + private + function GetOracleSession: TOracleSession; + protected + function CreateCompatibleQuery: IDADataset; override; + function CreateCustomConnection: TCustomConnection; override; + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); override; + + function DoGetInTransaction: boolean; override; + function DoBeginTransaction: Integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function GetDataSetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + property OracleSession: TOracleSession read GetOracleSession; + end; + + TDAEDOAQuery = class(TDAEDataSet, IOracleDataSet) + private + function LockModeDaToDoa(LockMode: TDAOracleLockMode): TLockingModeOptions; + function LockModeDoaToDa(LockMode: TLockingModeOptions): TDAOracleLockMode; + protected + procedure ClearParams; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + function DoExecute: Integer; override; + function DoGetSQL: string; override; + procedure DoPrepare(Value: Boolean); override; + procedure DoSetSQL(const Value: string); override; + function GetLockMode: TDAOracleLockMode; + function GetOptions: TDAOracleOptions; + procedure SetLockMode(Value: TDAOracleLockMode); + procedure SetOptions(Value: TDAOracleOptions); + procedure SetParamValues(Params: TDAParamCollection); override; safecall; + procedure GetParamValues(Params: TDAParamCollection); override; safecall; + end; + + TDAEDOAStoredProcedure = class(TDAEStoredProcedure) + private + fProcedureName: string; + FConnection: TDAEDOAConnection; + procedure DoGetParams; + function DoGetParamsResult: TDAParam; + procedure DoSetSource; + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + function Execute: Integer; override; + function GetStoredProcedureName: string; override; + procedure RefreshParams; override; + procedure SetParamValues(Params: TDAParamCollection); override; safecall; + procedure GetParamValues(Params: TDAParamCollection); override; safecall; + procedure SetStoredProcedureName(const Name: string); override; + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +{$INCLUDE DOA.INC} + +uses + SysUtils, + uDADriverManager, + {$IFDEF DOA4} + OracleMonitor, + {$ENDIF} uDARes; + +type + TDADOAInternalConnection = class(TCustomConnection) + private + fOracleSession: TOracleSession; + protected + procedure DoConnect; override; + procedure DoDisconnect; override; + function GetConnected: Boolean; override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property Session: TOracleSession read fOracleSession; + end; + + TOraPath = record + aScheme: string; + aPackage: string; + aObject: string; + end; + +var + _Driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDADOADriver]); +end; + +function GetDriverObject: IDADriver; +begin + if (_Driver = nil) then + _Driver := TDAEDOADriver.Create(nil); + Result := _Driver; +end; + + +function HandleSqlName(AParamName: string; AParamType: TDAParamType): string; +begin + Result := AParamName; + if AParamType = daptResult then Result := 'result'; +end; + +function DataTypeDaToOra(AType: TDADataType): Integer; +const + Error = 'INTERNAL: not supported by DOA'; +begin + Result := otString; + case AType of + datUnknown: raise Exception.Create(Error); + datGuid, datString: Result := otString; + datDateTime: Result := otDate; + datSingleFloat, datFloat, datCurrency: Result := otFloat; + datByte, + datShortInt, + datWord, + datCardinal, + datAutoInc, + datInteger, + datLargeInt: Result := otInteger; + datBoolean: Result := otInteger; // needs a special handling + datMemo: Result := otClob; + datBlob: Result := otBlob; + datXml, datWideString: Result := otVarchar2; + datWideMemo : Result := otNCLOB; + datLargeAutoInc, datLargeUInt,datDecimal : Result := otNumber; + end; +end; + +procedure SetDataSetParams(Params: TDAParamCollection; DataSet: TDataSet); +var + I: Integer; + Ds: TOracleDataSet; + ParamIndex, OraType: Integer; + Name: string; +begin + Ds := TOracleDataSet(DataSet); + if Ds.Variables.Count > Params.Count then + for I := Ds.VariableCount - 1 downto 0 do + if Params.ParamByName(Ds.VariableName(I)) = nil then + Ds.DeleteVariable(Ds.VariableName(I)); + + for I := 0 to Params.Count - 1 do + begin + ParamIndex := Ds.VariableIndex(Params[I].Name); + Name := HandleSqlName(Params[I].Name, Params[I].ParamType); + OraType := DataTypeDaToOra(Params[I].DataType); + // New Param + if ParamIndex = -1 then + Ds.DeclareVariable(Name, OraType); + // Changed Param + if (ParamIndex > -1) and (Ds.VariableType(ParamIndex) <> DataTypeDaToOra( + Params[I].DataType)) then + begin + Ds.DeleteVariable(Params[I].Name); + Ds.DeclareVariable(Name, OraType); + end; + // Set value + if Params[I].DataType = datBoolean then + Ds.SetVariable(Name, Integer(Params[I].Value)) + else + Ds.SetVariable(Name, Params[I].Value); + end; +end; + +{ INTERNAL CLASSES *********************************************************** } +{ +*************************** TDADOAInternalConnection *************************** +} + +constructor TDADOAInternalConnection.Create(AOwner: TComponent); +begin + inherited; + fOracleSession := TOracleSession.Create(nil); +end; + +destructor TDADOAInternalConnection.Destroy; +begin + fOracleSession.Free; + inherited; +end; + +procedure TDADOAInternalConnection.DoConnect; +begin + fOracleSession.LogOn; +end; + +procedure TDADOAInternalConnection.DoDisconnect; +begin + fOracleSession.LogOff; +end; + +function TDADOAInternalConnection.GetConnected: Boolean; +begin + Result := fOracleSession.Connected; +end; + +{ PUBLIC CLASSES ************************************************************* } +{ +******************************** TDAEDOADriver ********************************* +} + +// ----------------------------------------------------------------------------- +// TDAEDOADriver.DoSetTraceOptions +// +// Tracing can only be enabled when DOA Version 4.0 or higher is used. +// UKO 26.09.2003 21:14:47 +// + +procedure TDAEDOADriver.DoSetTraceOptions(TraceActive: Boolean; TraceOptions: + TDATraceOptions; Callback: TDALogTraceEvent); +begin + inherited; + + if TraceActive then + begin + fTraceCallBack := Callback; + + {$IFDEF DOA4} + EnableMonitor; + {$ENDIF} + end + else + begin + fTraceCallBack := nil; + + {$IFDEF DOA4} + DisableMonitor; + {$ENDIF} + end; + +end; + +procedure TDAEDOADriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +begin + inherited; +end; + +// ----------------------------------------------------------------------------- +// TDAEDOADriver.GetAvailableDriverOptions +// +// Only Database, Login and Custom needed. doServerName is not needed ! +// +// UKO 25.09.2003 17:51:31 +// + +function TDAEDOADriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + Result := [doDatabaseName, doLogin{, doCustom}]; +end; + +function TDAEDOADriver.GetConnectionClass: TDAEConnectionClass; +begin + Result := TDAEDOAConnection; +end; + +function TDAEDOADriver.GetDefaultCustomParameters: string; +begin + Result:=''; +end; + +function TDAEDOADriver.GetDescription: string; +begin + Result := 'Direct Oracle Access Driver'; +end; + +function TDAEDOADriver.GetDriverID: string; +begin + Result := 'DOA'; +end; + +{ +****************************** TDAEDOAConnection ******************************* +} + +function TDAEDOAConnection.CreateCompatibleQuery: IDADataset; +begin + Result := inherited CreateCompatibleQuery; + OracleSession.LogOn; +end; + +function TDAEDOAConnection.CreateCustomConnection: TCustomConnection; +begin + Result := TDADOAInternalConnection.Create(nil); +end; + +// ----------------------------------------------------------------------------- +// TDAEDOAConnection.CreateMacroProcessor +// +// UKO 25.09.2003 18:43:06 +// + + +// ----------------------------------------------------------------------------- +// TDAEDOAConnection.DoApplyConnectionString +// +// Use Database instead of Server. Server has no meaning in Oracle +// UKO 25.09.2003 17:54:25 +// + +procedure TDAEDOAConnection.DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +begin + inherited; + with aConnStrParser do begin + OracleSession.LogonDatabase := Database; + OracleSession.LogonUsername := UpperCase(UserID); + OracleSession.LogonPassword := Password; + end; +end; + +function TDAEDOAConnection.DoBeginTransaction: Integer; +begin + // DOA doesn't have any special transaction starting routines + Result := 0; +end; + +procedure TDAEDOAConnection.DoCommitTransaction; +begin + OracleSession.Commit; +end; + +function TDAEDOAConnection.DoGetInTransaction: boolean; +begin + Result := OracleSession.InTransaction; +end; + +procedure TDAEDOAConnection.DoRollbackTransaction; +begin + TOracleSession(inherited ConnectionObject).Rollback; +end; + +function TDAEDOAConnection.GetDataSetClass: TDAEDatasetClass; +begin + Result := TDAEDOAQuery; +end; + +function TDAEDOAConnection.GetOracleSession: TOracleSession; +begin + Result := TDADOAInternalConnection(inherited ConnectionObject).Session; +end; + + + +function TDAEDOAConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + Result := TDAEDOAStoredProcedure; +end; + +// ----------------------------------------------------------------------------- +// TDAEDOAConnection.IdentifierNeedsQuoting +// +// Default behavior not enough, as '$' and '.' are also a valid character which doesn´t need quoting +// +// UKO 25.09.2003 11:48:13 +// + +{ +********************************* TDAEDOAQuery ********************************* +} + +procedure TDAEDOAQuery.ClearParams; +begin + inherited; + TOracleDataSet(Dataset).ClearVariables; +end; + +function TDAEDOAQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + Result := TOracleDataSet.Create(nil); + TOracleDataSet(Result).ReadOnly := True; + TOracleDataSet(Result).Session := TDAEDOAConnection(aConnection).OracleSession; +end; + +function TDAEDOAQuery.DoExecute: Integer; +begin + TOracleDataSet(DataSet).ExecSQL; + Result := -1; +end; + +function TDAEDOAQuery.DoGetSQL: string; +begin + Result := TOracleDataSet(Dataset).SQL.Text; +end; + +procedure TDAEDOAQuery.DoPrepare(Value: Boolean); +begin + TOracleDataSet(DataSet).Optimize := Value; +end; + +procedure TDAEDOAQuery.DoSetSQL(const Value: string); +begin + TOracleDataSet(Dataset).SQL.Text := Value; +end; + +function TDAEDOAQuery.GetLockMode: TDAOracleLockMode; +begin + Result := LockModeDoaToDa(TOracleDataSet(Dataset).LockingMode) +end; + +function TDAEDOAQuery.GetOptions: TDAOracleOptions; +begin + // Can't be implemented +end; + +procedure TDAEDOAQuery.GetParamValues(Params: TDAParamCollection); +var + i: integer; + par: TDAParam; + ds: TOracleDataSet; +begin + ds := TOracleDataSet(Dataset); + if not Assigned(ds.Variables) then Exit; + + for i := 0 to (ds.VariableCount - 1) do begin + par := Params.ParamByName(ds.VariableName(i)); + if par.ParamType in [daptOutput, daptInputOutput, daptResult] then + par.Value := ds.GetVariable(i); + end; +end; + +function TDAEDOAQuery.LockModeDaToDoa(LockMode: TDAOracleLockMode): + TLockingModeOptions; +begin + Result := lmNone; + case LockMode of + olmLockImmediate: Result := lmLockImmediate; + olmLockDelayed: Result := lmLockDelayed; + end; +end; + +function TDAEDOAQuery.LockModeDoaToDa(LockMode: TLockingModeOptions): + TDAOracleLockMode; +begin + Result := olmNone; + case LockMode of + lmLockImmediate: Result := olmLockImmediate; + lmLockDelayed: Result := olmLockDelayed; + end; +end; + +procedure TDAEDOAQuery.SetLockMode(Value: TDAOracleLockMode); +begin + TOracleDataSet(Dataset).LockingMode := LockModeDaToDoa(Value); +end; + +procedure TDAEDOAQuery.SetOptions(Value: TDAOracleOptions); +begin + // Can't be implemented +end; + +procedure TDAEDOAQuery.SetParamValues(Params: TDAParamCollection); +begin + SetDataSetParams(Params, DataSet); +end; + +{ +**************************** TDAEDOAStoredProcedure **************************** +} + +function TDAEDOAStoredProcedure.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + Result := TOracleDataSet.Create(nil); + FConnection := TDAEDOAConnection(aConnection); + TOracleDataSet(Result).Session := TDAEDOAConnection(aConnection).OracleSession; +end; + +procedure TDAEDOAStoredProcedure.DoGetParams; +var + Ds: TOracleDataSet; + I: Integer; + Params: TDAParamCollection; +begin + Params := GetParams; + Ds := TOracleDataSet(DataSet); + for I := 0 to Params.Count - 1 do + if Params[I].ParamType in [daptOutput, daptInputOutput, daptResult] then + Params[I].Value := Ds.GetVariable(HandleSqlName(Params[I].Name, Params[I].ParamType)); +end; + +function TDAEDOAStoredProcedure.DoGetParamsResult: TDAParam; +var + I: Integer; + Params: TDAParamCollection; +begin + Result := nil; + Params := GetParams; + for I := 0 to Params.Count - 1 do + if Params[I].ParamType = daptResult then + begin + Result := Params[I]; + Exit; + end; +end; + +procedure TDAEDOAStoredProcedure.DoSetSource; +var + Ds: TOracleDataSet; + I: Integer; + Params: TDaParamCollection; + ParamResult: TDAParam; + ParamsExist: Boolean; + +const + SQLHeader = 'declare' + sLineBreak + + ' result boolean;' + sLineBreak + + 'begin' + sLineBreak; + SQLHandleBoolean = ':result := sys.diutil.bool_to_int(function_result);'; + SQLFooter = 'end;'; + + function CaseOfParam(const AParamResult: TDAParam): Integer; + begin + Result := 0; + if AParamResult <> nil then + if AParamResult.DataType = datBoolean then + Result := 1 + else + Result := 2; + end; + + function ConvertParam(const AName: string; const ADataType: TDADataType): + string; + begin + if ADataType = datBoolean then + begin + Result := Format('%s => sys.diutil.int_to_bool(:%s), ', [AName, AName]); + Exit; + end; + Result := Format('%s => :%s, ', [AName, AName]); + end; + + function TrimSqlParams(const SQL: string): string; + var + S: string; + begin + S := SQL; + Delete(S, Length(S) - 3, 4); + Result := S; + end; + +begin + Ds := TOracleDataSet(DataSet); + Params := GetParams; + ParamResult := DoGetParamsResult; + // PL/SQL Block - header + stored proc name + Ds.SQL.Text := SQLHeader; + case CaseOfParam(ParamResult) of // 0 = no result, 1 = boolean, 2 = misc + 0: Ds.SQL.Add(Format(' %s(', [fProcedureName])); + 1: Ds.SQL.Add(Format(' result := %s(', [fProcedureName])); + 2: Ds.SQL.Add(Format(' :result := %s(', [fProcedureName])); + end; + // PL/SQL Block - params if any; + ParamsExist := False; + for I := 0 to Params.Count - 1 do + if (Params.Items[I] <> ParamResult) then + begin + ParamsExist := True; + Ds.SQL.Add(ConvertParam(Params[I].Name, Params[I].DataType)); + end; + // PL/SQL Block - params - remove the last half-stop + if ParamsExist then + Ds.SQL.Text := TrimSQLParams(Ds.SQL.Text); + Ds.SQL.Add(');'); + // PL/SQL Block - special treatment for functions with boolean results + if ParamResult.DataType = datBoolean then + Ds.SQL.Add(SQLHandleBoolean); + Ds.SQL.Add(SQLFooter); +end; + +function TDAEDOAStoredProcedure.Execute: Integer; +var + Params: TDAParamCollection; +begin + Params := GetParams; + SetDataSetParams(Params, DataSet); + DoSetSource; + TOracleDataSet(DataSet).ExecSQL; + DoGetParams; + Result := -1; +end; + +function TDAEDOAStoredProcedure.GetStoredProcedureName: string; +begin + Result := fProcedureName; +end; + +procedure TDAEDOAStoredProcedure.RefreshParams; +var + OraParams: TDAParamCollection; +begin + Oracle_DoGetStoredProcedureParams(fProcedureName, FConnection.CreateCompatibleQuery,OraParams); + GetParams.AssignParamCollection(OraParams); +end; + +procedure TDAEDOAStoredProcedure.GetParamValues(Params: TDAParamCollection); +var + i: integer; + par: TDAParam; + ds: TOracleDataSet; +begin + ds := TOracleDataSet(Dataset); + if not Assigned(ds.Variables) then Exit; + + for i := 0 to (ds.VariableCount - 1) do begin + par := Params.ParamByName(ds.VariableName(i)); + if par.ParamType in [daptOutput, daptInputOutput, daptResult] then + par.Value := ds.GetVariable(i); + end; +end; + +procedure TDAEDOAStoredProcedure.SetParamValues(Params: TDAParamCollection); +begin + SetDataSetParams(Params, DataSet); +end; + +procedure TDAEDOAStoredProcedure.SetStoredProcedureName(const Name: string); +begin + fProcedureName := Name; +end; + +exports + GetDriverObject name func_GetDriverObject; + +initialization + _Driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNil(_Driver); + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/asgsqlite3.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/asgsqlite3.pas new file mode 100644 index 0000000..6220b65 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/asgsqlite3.pas @@ -0,0 +1,5560 @@ +// To enable debugging remove the dot. Do NOT forget to re-insert before +// deploying to production since this feature will slow down this component +// significantly +{.$DEFINE DEBUG_ENABLED } // Enables Debug information + {.$DEFINE DEBUG_VERY_LOUD} + {.$DEFINE DEBUG_LOUD} + +// Disable this for ignoring IProvider interface (for D4) +{$DEFINE IPROVIDER} + +// enable this if you want to link the SQLite library statically. (No need for dll) +{.$DEFINE SQLite_Static} + +{$I asqlite_def.inc} + +unit ASGSQLite3; +{*_* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + +Author: Albert Drent +Description: SQLite 3 DataSet class (encapsulates the Delphi DataSet Class) + based upon the asqlite version for sqlite 2 +Target: Delphi 4, 5, 6 and 7; Delphi 2005; Borland C++ 5 and 6 +Creation: November 2003 +Version: 2006.03.D Stable +EMail: a.drent@aducom.com (www.aducom.com/sqlite, sqlite.aducom.com) +Support: support@aducom.com (supportforum on www.aducom.com) + Please post any questions, remarks etc. to the support forum. We + useually answer questions within days. + Unsollicited mail to support will be intercepted by our spamfilters + and probabely never be heard of. +Legal issues: Copyright (C) 2003..2006 by Aducom Software + + Aducom Software + Eckhartstr 61 + 9746 BN Groningen + Netherlands + + Open Source licence (BSD: http://www.opensource.org/licenses/bsd-license.php) + + Copyright (c) 2006, Aducom Software + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + Neither the name of Aducom Software nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + +Acknowledgement + These components were written for our own needs. Since SQLite is + a freeware component we like to donate this one to the community + too. Parts of the code is adapted from several sources, but mainly + from a sample and the vcl sources of Borland itself. And, of + course, we did a lot and still are... +To Do + A lot... + We are very busy, but will develop on our needs. If anyone can + contribute, please feel welcome. Alter the source with lots of comment + and mail it to me. If it works right I will add it to the official + source and add your credit here below. Before you start, please + put a request on the forum. It would be a shame and a waste of your + time if you develop something which already is... and I need to set + the spamfilter right to let you pass through. +History: + Nov 8, 2003 First alpha release 1.0.A Albert Drent (c) 2003 Aducom Software + Nov 11, Release alpha 1.0.B Albert Drent (c) 2003 Aducom Software + - added 'param' support + - fixed null pointer assignment + - added support for partial select (limit / offset) + Nov 12, Release alpha 1.0.C Albert Drent (c) 2003 Aducom Software + - fixed bug in update + - support for events + - added 'RowsAffected' + Nov 16, Release beta 1.0.D Albert Drent (c) 2003 Aducom Software + - fixed 0 resultlist after any ExecSQL usage + - added Transaction support + Nov 24, Release beta 1.0.E Albert Drent (c) 2003 Aducom Software + - StartTransaction will open database if it is'nt already open + - Changed resultset method + - Added property editor for table names + - Added GetTableNames function to TASQLite3Database + - Added GetIndexNames function to TASQLite3Database + - Added Open and Close function to TASQLite3Database + - Added AutoCommit property to TDataSet descendants + - Split of source in designtime and runtime package + Dec 15, Release beta 1.0.F Albert Drent (c) 2003 Aducom Software + - Optimized code for speed + - Added support for quering databases + - Added property for base directory (default dir) TDatabase + - Preparations for mastersets and TUpdateSQL (not functional yet) + - Solved GPF on stringfields + - Solved hangup of Delphi when developing + - Solved invalid pointer operation bug while developing + Jan 11 2004, Release beta 1.0.G Albert Drent (c) 2003, 2004 Aducom Software + - Fixed GetTableNames Bug as reported on forum + - Solved some minor bugs, several code optimizations + - Added 'getfieldnames' procedure to asqlitedb + - Added component asqlitepragma for adjustments to sqlite behaviour + - Added several property editors to smooth things up + - Added component asqliteupdatesql + - Added master-detail support for TASQLite3table (not fully tested yet) + - Added master-detail support for TASQLite3query (not fully tested yet) + - Added filter property to TASQLite3Query + Jan 18, 2004, Release beta 1.0.H Albert Drent (c) 2003, 2004 Aducom Software + - Added TASQLite3Log component + - Support for autoincrement (index primary key) + Jan 22, 2004, Release beta 1.0.I Albert Drent (c) 2003, 2004 Aducom Software + - Solved bug, causing the user to open database first (where + it should be opened automatically after open query or table. + - datatype text is now treated as a string of max 255 chars. + - added samples + - added preparations for import and export component + Jan 26, 2004, Release beta 1.1.A Albert Drent (c) 2003, 2004 Aducom Software + - Support for master-detail + - Support for TUpdateSQL + Feb 05, 2004, Release beta 1.1.B Albert Drent (c) 2003, 2004 Aducom Software + - Solved small bug: basequery is closed on querychanged event + - Solved small bug: basequery is closed on filter change event + - Solved bug in design package, by Marc Wetzel(forum) + - Notification of BaseQuery removed and added to SQLiteTable + Feb 24, 2004 Release alpha 1.2.A Albert Drent (c) 2003, 2004 Aducom Software + - Locate implemented, working on resultset! + - Some small bugfixes + Feb 25, 2004 Release alpha 1.2.B Albert Drent (c) 2003, 2004 Aducom Software + - Reformat of source (Marc Wetzel) + - All the debug directives (Marc Wetzel) + The debug stuff is added to be able to do more debugging on the + components. At this stage there are still some isues which are + hard to be find. + - Some small bugfixes (Marc Wetzel) + - Solved bug with dblookupcombobox, lookup is now shown (variant error) + - Derived more classes from TDataset to solve compatibility isues with + 3rd party software (DevExpress) + - Start of port to lower Delphi versions (designintf vs dsgnintf) + March 25, 2004 Release alpha 1.2.C Albert Drent (c) 2003, 2004 Aducom Software + - Added property editor for database directory + - Added property editor for sqlitedll directory + - Bugix needed for release 13 of SQLite.dll (is compatible to lower + dll versions) + - More changes to solve compatibility problem with DevExpress (Plato of DevExpress) + - Solved some compatibility isues with TDataSet + - Solved some compatibility isues with the newest SQLite version (2.8.12) + - Added/modified, GetFieldNames, GetPrimaryKeys + - Added GetTableInfo + - Added StartTransaction and Commit and RollBack to TTable and TQuery + This will create a more readable source: + db.starttranaction; + q.somesql + db.commit + becomes now + with q do begin + starttransaction; + somesql; + try + commit; + except + rollback; + end; + end; + - Changed cleanup of components in notification (TheSneak) + - Fixed potential AV (so far not reported) + - Changed escape of string characters (TheSneak) + (might cause incompatibility of older components if you use single + quote in data) + - Fixed question mark problem in data (TheSneak) + April 7, 2004 + - Fixed bug GetxxxxNames, moved pragma (reported by Martini) + - Improved some performance isues (TheSneak) + - Added GetTableIndexNames(by Martini) + - Added support for 'small text blobs', it isn't the real stuff but + limited to 20000 characters. + - Fixed another compatibility isue with DevExpress + April 8, 2004 + - Fixed EnableControls (TheSneak) + - Fixed memoryleak ASQLiteQuery.InternalPost (TheSneak) + - Downgraded some stuff for support Delphi 4/5 + - Updated Locate function (by Joel hottcha@juno.com) + April 14, 2004 Release beta 1.2.C Albert Drent (c) 2003, 2004 Aducom Software + - RawSQL property implemented (supresses parsing of sql data) + - published csv release as 1.2.C beta + April 15, 2004 Release alpha 2.0.A Albert Drent (c) 2003, 2004 Aducom Software + - support for real clobs + - added fieldtype numeric(x.y) + - Implement RawSQL property in TASQLite3Query + May 26, 2004 Release beta 2.0.B Albert Drent (c) 2003, 2004 Aducom Software + - new procedure: GetGetLastInsertRow + - new component: TASQLite3InlineSQL, to be used to contain all + kinds of pre-stored sql statements. I.e. for creation of tables in case + of an in-memory database, or a local storage for sql statements to + simplify sourcecode. In this release it is bound to the ASQLiteDB component. + - new component TASQLite3Output, to be used to generate csv files, + xml and html documents. It is NOT bound to ASQLite components but + to a datasource (containing any database connection) + - implemented bound as described by minhl on the forum + - implemented IsNull as described by Kazooie64 on the forum + - implemented a uniform datetime implementation by jpierce + May, 26, 2004 Release beta 2.0.B Albert Drent (c) 2003, 2004 Aducom Software + - A few bugfixes + June, 15, 2004 Release beta 2.0.C Albert Drent (c) 2003, 2004 Aducom Software + - A few bugfixes, thanks to Tzvetan + July 2004, Release 1.0 based upon source sqlite version 2 components + Okt 11, 2004 Release beta 1.0.B Albert Drent (c) 2003, 2004 Aducom Software + - Callback routine for retieving data replaced by new + by sqlite prefered way. + - Some bugfixes + - Support for calculated fields + - Support for real blobs + okt 14, 2004 Release beta 1.0.C Albert Drent (c) 2003, 2004 Aducom Software + - support for locate lo-partial key (thanks to Bob Mitchel) + - some bugfixes (thanks to Oleg Lembievskiy marked by OL) + - some other bugfixes and code cleanup + okt 18, 2004 + - re-introduced sqlite_version + - added transactiontype property(SQLite3 feature) + - added transaction procedures to db and basequery + StartDeferredTransaction; + StartImmediateTransaction; + StartExclusiveTransaction; + nov 1, 2004 + - bugfix (thanx to James) for null pointer assignment on null values + nov 8, 2004 + - fixed introduced bug in result preventing new records to appear + right in dbgrids. + nov 17, 2004 + - fixed small bug showing rubish on empty tables + Nov 17, 2004 by Mike Dijkema + - filter bug FPrepared := FPrepared + ' and ' + Filter adds ' and filterexpr' to the end of the sql statement + this created errors with 'order by' 'limit' 'union' 'having' etc.. + filtering changed to that it works like the ADO components and union and other statements + now 'select a from b union select c from d' and 'select a from b order by c' works with a filter + - filter bug 'select a_where from b' removed + jan 11, 2005 Release 2005.01.A Albert Drent (c) 2003 .. 2005 Aducom Software + - fixed bug causing fielddescription to be deleted incorrectly + - fixed bug causing errormessage on null values in integer fields + - added sqlcursor property + - modifications to support Delphi 2005 + - implemented all transactiontypes + - changed all showmessages to raise event types + - added readonly property + feb 21, 2005 Release 2005.02.A Albert Drent (c) 2003 .. 2005 Aducom Software + - some bugfixes, code optimization + - first implementation of IProvider support (thanks to + Rocco Barbaresco) + - changed default SDB extension to SQB + - support for multi sql statements in one string + - added master-detail functionality on insert of + new child record (key-data is copied) + - added compatibility with SQLite3.dll version 3.1.2 + feb 28, 2005 Release 2005.02.B Albert Drent (c) 2003 .. 2005 Aducom Software + - bugfix for filter on master-detail. Setting filtered will + not automatical open table any more. Causes error on closed + tables in master-detail otherwise. + mar 7, 2005 Release 2005.03.A Albert Drent (c) 2003 .. 2005 Aducom Software + - bugfix for memofields causing crlf to be handled wrongly + - added TableExists function ('// DI Ralf http://www.yunqa.de/delphi/) + - some code optimizations ('// DI Ralf http://www.yunqa.de/delphi/) + - solved decimalpoint bug ('// DI Ralf http://www.yunqa.de/delphi/) + mar 10, 2005 Release 2005.03.B Albert Drent (c) 2003 .. 2005 Aducom Software + - more code optimizations + - removed Forms from uses list to decrease codesize of console app's + - changed cursorstyle handling + - changed exception handling + mar 29, 2005 Release 2005.03.C Albert Drent (c) 2003 .. 2005 Aducom Software + - removed default pragma's for tables + - implemented another solution for tableheader duplicates (mirko) + - implemented user version + - solved minor bug in GetTableInfo + april 5, 2005 Release 2005.04.A Albert Drent (c) 2003 .. 2005 Aducom Software + - fixed bug conceirning in-memory database (Bert Verhees) + - fixed precompiler settings for Delhpi 7 (Dak) + mai 31, 2005 Release 2005.05.A Albert Drent (c) 2003 .. 2005 Aducom Software + - UTF8 support (thanks to Bilgehan KUYUCU) + - Statical linking (thanks to Gianpaolo Avallone (GPA) + - Some bugfixes and enhancements by Albert, Gianpaolo and others. + august 1, 2005 Release 2005.08.A + - UTF8 support to be set by property, solving a 'locale' problem. + - Bugfix for null strings + - Fix for static linking + - Solved bug in updatesql, fieldlist is now setup correctly + - solved bug in updatesql, inserting null values and constants. + august 2, 2005 Release 2005.08.B + - first steps towards support utf16 (by Kevin Zhang) + - implemented another locate routine (by jbannon) + - changed treatment of datatype text. It is considered 'longtext' now. + added 'shorttext' datatype which replaces the original 'text' datatype. + The datatype text is now compatible with sqlite3, mysql and perhaps + others. + sept 1, 2005 Release 2005.09.A + - code optimizations by Kevin Lu, Aducom + sept 1, 2005 Release 2005.09.B + - candidate fix for decimal point problem by Jordi March + sept 20, 2005 Release 2005.09.C + - implementation of unidirectional dataset. This improves + performance on large resultsets to the optimum. However + the dataset is readonly by default, using inserts/deletes and + updates will result in a 'database table is locked' error. + sept 21, 2005 Release 2005.09.D + - bugfix for decimal point routine by Kevin Lu + sept 29, 2005 Release 2005.09.E + - bugfix for unidirectional dataset. + - bugfix for split of prepare and execute. Data was not updated + correctly + nov 1, 2005 Release 2005.11.A + - Code improvements + - First (alpha) implementation of Lookup field (By John Lito) + dec 14, 2005 Release 2005.12.A + - Check for null values + jan 5, 2006 Release 2006.01.A + - fixed unidirectional bug (I) + jan 9, 2006 Release 2006.01.B + - fixed unidirectional bug (II) + - automatically will close table if tablename property is changed + while a table is still open. + - automatically close query if sql property is changed while a table + is still open. + - fixes for compilation under D4 + - changes for installation under Delphi 2005 and 2006 + - changes of copyright notice, the components are now under + open-source bsd licence. + feb 22, 2006 Release 2006.02.A + - Changed status to stable + mar 2, 2006 Release 2006.03.A + - Modifications for D4/D5 + - Added order by property. Enter fieldnames separated by ',' + - Added GetIndexFieldNames (thanks to zavu10n) + - Database will be reopened if necessary on filter change + - Fixes by Donnie + - New routine for dates and floates by Donnie + mar 8, 2006 Release 2006.03.B + - Fixed small bug causing text treated as char 255, is now memo. + mar 15, 2006 Release 2006.03.C + - Added switch for compilation under D4/D5 (Art Register) + - DBOpen change for utf8 by John Lito + - SQLCursor fix + - GetFieldValue fix by Velis + mar 23, 2006 Release 2006.03.D + - Compatibility fixes for D45 (Art Register) + - changed D45 directive to $IFDEF ASQLITE_D6PLUS so + compilation should work automatically now + - changed cr cr/lf pairs for compatibilty with D4/D5 + - added CompareBookmarks to support multiple selection + in DBGrid (Michael S) + - added support for char *nothing* datatype (was char(1) now char is allowed) + + + +*_* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * } + + +interface + +uses + DB, + DBCommon, + Dialogs, + Classes, + Windows, + SysUtils, +{$IFDEF ASQLITE_D6PLUS} + Variants, +{$ENDIF} + ASGRout3; +const + SQLiteVersion = 'ASGSQLite V2006.03.D stable'; + + MaxBuf = 30000; // max stringbuffer for record (length) (excluding blob's) + SQLITE_OK = 0; // Successful result */ + SQLITE_ERROR = 1; // SQL error or missing database */ + SQLITE_INTERNAL = 2; // An internal logic error in SQLite */ + SQLITE_PERM = 3; // Access permission denied */ + SQLITE_ABORT = 4; // Callback routine requested an abort */ + SQLITE_BUSY = 5; // The database file is locked */ + SQLITE_LOCKED = 6; // A table in the database is locked */ + SQLITE_NOMEM = 7; // A malloc() failed */ + SQLITE_READONLY = 8; // Attempt to write a readonly database */ + SQLITE_INTERRUPT = 9; // Operation terminated by sqlite_interrupt() */ + SQLITE_IOERR = 10; // Some kind of disk I/O error occurred */ + SQLITE_CORRUPT = 11; // The database disk image is malformed */ + SQLITE_NOTFOUND = 12; // (Internal Only) Table or record not found */ + SQLITE_FULL = 13; // Insertion failed because database is full */ + SQLITE_CANTOPEN = 14; // Unable to open the database file */ + SQLITE_PROTOCOL = 15; // Database lock protocol error */ + SQLITE_EMPTY = 16; // (Internal Only) Database table is empty */ + SQLITE_SCHEMA = 17; // The database schema changed */ + SQLITE_TOOBIG = 18; // Too much data for one row of a table */ + SQLITE_CONSTRAINT = 19; // Abort due to contraint violation */ + SQLITE_MISMATCH = 20; // Data type mismatch */ + SQLITE_MISUSE = 21; // Library used incorrectly */ + SQLITE_NOLFS = 22; // Uses OS features not supported on host */ + SQLITE_AUTH = 23; // Authorization denied */ + SQLITE_ROW = 100; // sqlite_step() has another row ready */ + SQLITE_DONE = 101; // sqlite_step() has finished executing */ + + SQLITE_CREATE_INDEX = 1; // Index Name Table Name */ + SQLITE_CREATE_TABLE = 2; // Table Name NULL */ + SQLITE_CREATE_TEMP_INDEX = 3; // Index Name Table Name */ + SQLITE_CREATE_TEMP_TABLE = 4; // Table Name NULL */ + SQLITE_CREATE_TEMP_TRIGGER = 5; // Trigger Name Table Name */ + SQLITE_CREATE_TEMP_VIEW = 6; // View Name NULL */ + SQLITE_CREATE_TRIGGER = 7; // Trigger Name Table Name */ + SQLITE_CREATE_VIEW = 8; // View Name NULL */ + SQLITE_DELETE = 9; // Table Name NULL */ + SQLITE_DROP_INDEX = 10; // Index Name Table Name */ + SQLITE_DROP_TABLE = 11; // Table Name NULL */ + SQLITE_DROP_TEMP_INDEX = 12; // Index Name Table Name */ + SQLITE_DROP_TEMP_TABLE = 13; // Table Name NULL */ + SQLITE_DROP_TEMP_TRIGGER = 14; // Trigger Name Table Name */ + SQLITE_DROP_TEMP_VIEW = 15; // View Name NULL */ + SQLITE_DROP_TRIGGER = 16; // Trigger Name Table Name */ + SQLITE_DROP_VIEW = 17; // View Name NULL */ + SQLITE_INSERT = 18; // Table Name NULL */ + SQLITE_PRAGMA = 19; // Pragma Name 1st arg or NULL */ + SQLITE_READ = 20; // Table Name Column Name */ + SQLITE_SELECT = 21; // NULL NULL */ + SQLITE_TRANSACTION = 22; // NULL NULL */ + SQLITE_UPDATE = 23; // Table Name Column Name */ + SQLITE_ATTACH = 24; // Filename NULL */ + SQLITE_DETACH = 25; // Database Name NULL */ + + SQLITE_DENY = 1; // Abort the SQL statement with an error */ + SQLITE_IGNORE = 2; // Don't allow access, but don't generate an error */ + + Crlf : string = #13#10; + Q = ''''; + +type + pInteger = ^integer; + pPointer = ^Pointer; + pSmallInt = ^smallint; + pFloat = ^extended; + pBoolean = ^boolean; + + + TConvertBuffer = array[1..255] of char; + + TSQLite3_Callback = function(UserData: Pointer; ColumnCount: Integer; ColumnValues, ColumnNames: PPointer): Integer; cdecl; +// TSQLiteExecCallback = function(Sender: TObject; Columns: integer; ColumnValues: Pointer; ColumnNames: Pointer): integer of object; cdecl; + TSQLiteBusyCallback = function(Sender: TObject; ObjectName: PAnsiChar; BusyCount: integer): integer of object; cdecl; + TOnData = procedure(Sender: TObject; Columns: integer; ColumnNames, ColumnValues: string) of object; + TOnBusy = procedure(Sender: TObject; ObjectName: string; BusyCount: integer; var Cancel: boolean) of object; + TOnQueryComplete = procedure(Sender: TObject) of object; + TASQLite3NotifyEvent = procedure(Sender: TObject) of object; + + // structure for holding field information. It is used by GetTableInfo + + TASQLite3Field = class + public + FieldNumber: integer; + FieldName: string; + FieldType: string; + FieldNN: integer; // 1 if notnull + FieldDefault: string; + FieldPK: integer; // 1 if primary key + end; + + // object to 'play' with SQLite's default settings + + TASQLite3Pragma = class(TComponent) + private + FTempCacheSize: integer; + FDefaultCacheSize: integer; + FDefaultSynchronous: string; + FDefaultTempStore: string; + FTempStore: string; + FSynchronous: string; + protected + function GetTempCacheSize: string; + function GetDefaultCacheSize: string; + function GetDefaultSynchronous: string; + function GetDefaultTempStore: string; + function GetTempStore: string; + function GetSynchronous: string; + published + { Published declarations } + property TempCacheSize: integer read FTempCacheSize write FTempCacheSize; + property DefaultCacheSize: integer read FDefaultCacheSize write FDefaultCacheSize; + property DefaultSynchronous: string read FDefaultSynchronous + write FDefaultSynchronous; + property DefaultTempStore: string read FDefaultTempStore write FDefaultTempStore; + property TempStore: string read FTempStore write FTempStore; + property Synchronous: string read FSynchronous write FSynchronous; + end; + + // component to log messages + // it's for debugging purpose and may be obsolete due + // to the event implementation. not sure yet... + + TASQLite3Log = class(TComponent) + private + FLogFile: string; + FLogDebugOut: boolean; + FAppend: boolean; + FLogSQL: boolean; + FLogInt: boolean; + protected + public + procedure Display(Msg: string); + published + { Published declarations } + property LogFile: string read FLogFile write FLogFile; + property LogDebugOut: boolean read FLogDebugOut write FLogDebugOut; // 20040225 + property Append: boolean read FAppend write FAppend; + property LogSQL: boolean read FLogSQL write FLogSQL; + property LogInternals: boolean read FLogInt write FLogInt; + end; + +// This component can be used to store sql outside the pascal source. +// It is useful for automatically creating tables on open of a temporary database +// (i.e. in-memory database) + + TASQLite3InlineSQL = class(TComponent) + private + FSQL: TStrings; + procedure SetSQL(const Value: TStrings); + function GetSQL: TStrings; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + published + property SQL: TStrings read GetSQL write SetSQL; + end; + + { Basic Database component } + + TASQLite3DB = class(TComponent) + private + { Private declarations } + FAfterConnect: TASQLite3NotifyEvent; + FBeforeConnect: TASQLite3NotifyEvent; + FAfterDisconnect: TASQLite3NotifyEvent; + FBeforeDisconnect: TASQLite3NotifyEvent; + function FGetDefaultExt: string; + function FGetDriverDLL: string; + protected + { Protected declarations } + FInlineSQL: TASQLite3InlineSQL; + FExecuteInlineSQL: boolean; + FDatabase: string; + FTransactionType: string; + FSQLiteVersion: string; + FDefaultExt: string; + FDefaultDir: string; + FDriverDll: string; + FConnected: boolean; + FMustExist: boolean; + FVersion: string; + FCharEnc: string; + FUtf8: boolean; + DBHandle: Pointer; + FASQLitePragma: TASQLite3Pragma; + FASQLiteLog: TASQLite3Log; + FLastError: string; + SQLite3_Open: function(dbname: PAnsiChar; var db: pointer): integer; cdecl; + SQLite3_Close: function(db: pointer): integer; cdecl; + SQLite3_Exec: function(DB: Pointer; SQLStatement: PAnsiChar; Callback: TSQLite3_Callback; + UserDate: Pointer; var ErrMsg: PAnsiChar): Integer; cdecl; + SQLite3_LibVersion: function(): PAnsiChar; cdecl; + SQLite3_ErrorString: function(db: pointer): PAnsiChar; cdecl; + SQLite3_GetTable: function(db: Pointer; SQLStatement: PAnsiChar; var ResultPtr: Pointer; + var RowCount: cardinal; var ColCount: cardinal; var ErrMsg: PAnsiChar): integer; cdecl; + SQLite3_FreeTable: procedure(Table: PAnsiChar); cdecl; + SQLite3_FreeMem: procedure(P: PAnsiChar); cdecl; + SQLite3_Complete: function(P: PAnsiChar): boolean; cdecl; + SQLite3_LastInsertRow: function(db: Pointer): integer; cdecl; + SQLite3_Cancel: procedure(db: Pointer); cdecl; + SQLite3_BusyHandler: procedure(db: Pointer; CallbackPtr: Pointer; Sender: TObject); cdecl; + SQLite3_BusyTimeout: procedure(db: Pointer; TimeOut: integer); cdecl; + SQLite3_Changes: function(db: Pointer): integer; cdecl; + SQLite3_Prepare: function(db: Pointer; SQLStatement: PAnsiChar; nBytes: integer; + var hstatement: pointer; var Tail: PAnsiChar): integer; cdecl; + SQLite3_Finalize: function(hstatement: pointer): integer; cdecl; + SQLite3_Reset: function(hstatement: pointer): integer; cdecl; + SQLite3_Step: function(hstatement: pointer): integer; cdecl; + SQLite3_Column_blob: function(hstatement: pointer; iCol: integer): pointer; cdecl; + SQLite3_Column_bytes: function(hstatement: pointer; iCol: integer): integer; cdecl; + SQLite3_Column_count: function(hstatement: pointer): integer; cdecl; + SQLite3_Column_decltype: function(hstatement: pointer; iCol: integer): PAnsiChar; cdecl; + SQLite3_Column_double: function(hstatement: pointer; iCol: integer): double; cdecl; + SQLite3_Column_int: function(hstatement: pointer; iCol: integer): integer; cdecl; + SQLite3_Column_int64: function(hstatement: pointer; iCol: integer): int64; cdecl; + SQLite3_Column_name: function(hstatement: pointer; iCol: integer): PAnsiChar; cdecl; + SQLite3_Column_text: function(hstatement: pointer; iCol: integer): PAnsiChar; cdecl; + SQLite3_Column_text16: function(hstatement: pointer; iCol: integer): PWideChar; cdecl; + SQLite3_Column_type: function(hstatement: pointer; iCol: integer): integer; cdecl; + SQLite3_Bind_Blob: function(hstatement: pointer; iCol: integer; buf: PAnsiChar; n: integer; DestroyPtr: Pointer): integer; cdecl; + SQLite3_Bind_Text16: function(hstatement: pointer; iCol: integer; buf: pointer; n: integer; DestroyPtr: Pointer): integer; cdecl;//\\\ + SQLite3_Bind_Parameter_Count: function(hstatement: pointer): integer; cdecl;//\\\ + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure DBConnect(Connected: boolean); + function SQLite3_PrepareResult(DB: Pointer; TheStatement: string; FParams: TParams; Sender: TObject) : pointer; + function SQLite3_GetNextResult(DB: Pointer; TheStatement: pointer; FParams: TParams; Sender: TObject) : pointer; + procedure SQLite3_CloseResult(TheStatement : pointer); + public + DLLHandle: THandle; + { Public declarations } + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function LoadLibs: boolean; + procedure FSetDatabase(Database: string); + function RowsAffected: integer; + function TableExists(const ATableName: AnsiString): Boolean; + procedure ExecStartTransaction(TransType: string); + procedure StartTransaction; + procedure StartDeferredTransaction; + procedure StartImmediateTransaction; + procedure StartExclusiveTransaction; + procedure Open; + procedure Close; + procedure Commit; + procedure RollBack; + procedure ShowDatabases(List: TStrings); + procedure GetTableNames(List: TStrings; SystemTables: boolean = false); + procedure GetTableInfo(TableName: string; List: TList); + procedure GetIndexNames(List: TStrings; SystemTables: boolean = false); + procedure GetIndexFieldNames(IndexName: string; List: TStrings); + procedure GetFieldNames(TableName: string; List: TStrings); + procedure GetPrimaryKeys(TableName: string; List: TStrings); + procedure GetTableIndexNames(TableName: string; List: TStrings); + procedure ExecPragma; +// function SQLite_XExec(db: Pointer; SQLStatement: PAnsiChar; +// CallbackPtr: Pointer; Sender: TObject; var ErrMsg: PAnsiChar): integer; cdecl; + function SQLite3_Execute(db: Pointer; TheStatement: string; FParams: TParams; Sender: TObject): integer; + function SQLite3_ExecSQL(TheStatement: string; Blobs: TList=nil): integer; + procedure ShowError; + function GetUserVersion(database : string=''): integer; + procedure SetUserVersion(Version : integer; Database : string=''); + published + { Published declarations } + property CharacterEncoding: string read FCharEnc write FCharEnc; + property TransactionType: string read FTransactionType write FTransactionType; + property Database: string read FDatabase write FSetDatabase; + property ASQLitePragma: TASQLite3Pragma read FASQLitePragma write FASQLitePragma; + property ASQLiteLog: TASQLite3Log read FASQLiteLog write FASQLiteLog; + property DefaultExt: string read FGetDefaultExt write FDefaultExt; + property DefaultDir: string read FDefaultDir write FDefaultDir; + property Version: string read FVersion write FVersion; +// property CharacterEncoding: string Read FCharEncoding Write FCharEncoding; + property DriverDLL: string read FGetDriverDLL write FDriverDLL; + property Connected: boolean read FConnected write DBConnect; + property MustExist: boolean read FMustExist write FMustExist; + property ASQLiteInlineSQL: TASQLite3InlineSQL read FInlineSQL write FInlineSQL; + property ExecuteInlineSQL: boolean read FExecuteInlineSQL write FExecuteInlineSQL; + property AfterConnect: TASQLite3NotifyEvent read FAfterConnect write FAfterConnect; + property BeforeConnect: TASQLite3NotifyEvent read FBeforeConnect write FBeforeConnect; + property AfterDisconnect: TASQLite3NotifyEvent + read FAfterDisconnect write FAfterDisconnect; + property BeforeDisconnect: TASQLite3NotifyEvent + read FBeforeDisconnect write FBeforeDisconnect; + end; + + AsgError = class(Exception); + +{ TRecInfo } + +{ This structure is used to access additional information stored in + each record buffer which follows the actual record data. + + Buffer: PAnsiChar; + || + \/ + -------------------------------------------- + | Record Data | Bookmark | Bookmark Flag | + -------------------------------------------- + ^-- PRecInfo = Buffer + FRecInfoOfs + + Keep in mind that this is just an example of how the record buffer + can be used to store additional information besides the actual record + data. There is no requirement that TDataSet implementations do it this + way. + + For the purposes of this demo, the bookmark format used is just an integer + value. For an actual implementation the bookmark would most likely be + a native bookmark type (as with BDE), or a fabricated bookmark for + data providers which do not natively support bookmarks (this might be + a variant array of key values for instance). + + The BookmarkFlag is used to determine if the record buffer contains a + valid bookmark and has special values for when the dataset is positioned + on the "cracks" at BOF and EOF. } + + PRecInfo = ^TRecInfo; + + TRecInfo = packed record + Bookmark : integer; + BookmarkFlag : TBookmarkFlag; +// Nulls : + end; + + //============================================================================== TFResult + // The TFResult class is used to maintain the resultlist in memory. This + // will only be the case for 'normal' data. Blobs and Clobs will be treated + // differently, but they are not supported yet. + //============================================================================== + TASQLite3BaseQuery = class; + + TFResult = class + protected + Data: TList; + BookMark: TList; + RowId: TList; + FLastBookmark: integer; + FBufSize: integer; + FDataSet: TASQLite3BaseQuery; + public + constructor Create(TheDataSet: TASQLite3BaseQuery); + destructor Destroy; override; + procedure FreeBlobs; + procedure SetBufSize(TheSize: integer); + procedure Add(TheBuffer: PAnsiChar; TheRowId: integer); + procedure Insert(Index: integer; TheBuffer: Pointer; TheRowId: integer); + procedure Delete(Index: integer); + function GetData(Index: integer): Pointer; + function Count: integer; + function IndexOf(TheBookMark: pointer): integer; + function GetBookmark(Index: integer): integer; + function GetRowId(Index: integer): integer; + end; + +//============================================================================== TASQLite3UpdateSQL + TASQLite3UpdateSQL = class(TComponent) + private + FInsertSQL: TStrings; + FUpdateSQL: TStrings; + FDeleteSQL: TStrings; + procedure SetInsertSQL(const Value: TStrings); + procedure SetUpdateSQL(const Value: TStrings); + procedure SetDeleteSQL(const Value: TStrings); + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + published + property InsertSQL: TStrings read FInsertSQL write SetInsertSQL; + property UpdateSQL: TStrings read FUpdateSQL write SetUpdateSQL; + property DeleteSQL: TStrings read FDeleteSQL write SetDeleteSQL; + end; + +//============================================================================== TASQLite3Output + + TASQLite3Output = class(TComponent) + private + FActive: boolean; + FOutputType: string; + FTableClass: string; + FHeaderClass: string; + FCellClass: string; + FOutput: TStrings; + FSeparator: string; + FDataSource: TDataSource; + procedure SetOutput(const Value: TStrings); + procedure SetFActive(Active: boolean); + function GetOutput: TStrings; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure Execute(MyDataSet: TDataSet); + protected + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + published + property Active: boolean read FActive write SetFActive; + property DataSource: TDataSource read FDataSource write FDataSource; + property OutputType: string read FOutputType write FOutputType; + property TableClass: string read FTableClass write FTableClass; + property HeaderClass: string read FHeaderClass write FHeaderClass; + property CellClass: string read FCellClass write FCellClass; + property Output: TStrings read GetOutput write SetOutput; + property FieldSeparator: string read FSeparator write FSeparator; + end; + +//============================================================================== TASQLite3BaseQuery + TASQLite3BaseQuery = class(TDataSet) + private + FParams: TParams; + FTypeLess: boolean; + FNoResults: boolean; // suppresses the creation of a result list + FAutoCommit: boolean; + FTransactionType: string; + FTableDateFormat: string; + FSQLiteDateFormat: boolean; + FResult: TFResult; + FSQL: TStrings; + FSQLCursor: boolean; + FPrepared: string; + FRecBufSize: integer; + FRecInfoOfs: integer; + FCurRec: integer; + FMasterFields: string; + FMasterSource: TDataSource; + FSaveChanges: boolean; + MaxStrLen: integer; + FConnection: TASQLite3DB; + FReadOnly: boolean; + FMaxResults: integer; + FStartResult: integer; + FUniDir : boolean; + FStatement : pointer; + CurrentRowId: integer; + SQLStr: string; + ResultStr: PAnsiChar; + RowId : integer; + RowIdCol : integer; + DetailList: TList; + procedure SetSQL(const Value: TStrings); + function UnpackBuffer(Buffer: PAnsiChar; FieldType: TFieldType): TConvertBuffer; + procedure SetDataSource(Value: TDataSource); + protected + function SetQueryParams(InStr: string): string; //*** + procedure SetParamsList(Value: TParams); + function GetParamsCount: word; + procedure RegisterDetailDataset(DetailDataSet: TASQLite3BaseQuery); + procedure LoadQueryData; + function GetActiveBuffer(var Buffer: PAnsiChar): boolean; + function GetDataSource: TDataSource; override; + procedure NotifySQLiteMasterChanged; + function GetFieldValue(const AField: TField; const Blobs: TList = nil): string; // added by Donnie + + { Overriden abstract methods (required) } + function AllocRecordBuffer: PAnsiChar; override; + procedure FreeRecordBuffer(var Buffer: PAnsiChar); override; + procedure GetBookmarkData(Buffer: PAnsiChar; Data: Pointer); override; + function GetBookmarkFlag(Buffer: PAnsiChar): TBookmarkFlag; override; + function GetRecord(Buffer: PAnsiChar; GetMode: TGetMode; + DoCheck: boolean): TGetResult; override; + function GetRecordSize: word; override; + procedure InternalAddRecord(Buffer: Pointer; Append: boolean); override; + procedure InternalClose; override; + procedure InternalDelete; override; + procedure InternalFirst; override; + procedure InternalGotoBookmark(Bookmark: Pointer); override; + procedure InternalHandleException; override; + procedure InternalInitFieldDefs; override; + procedure InternalInitRecord(Buffer: PAnsiChar); override; + procedure InternalLast; override; + procedure InternalOpen; override; + procedure InternalPost; override; + procedure InternalSetToRecord(Buffer: PAnsiChar); override; + procedure OpenCursor(InfoQuery: Boolean); override; // GPA + function IsCursorOpen: boolean; override; + procedure SetBookmarkFlag(Buffer: PAnsiChar; Value: TBookmarkFlag); override; + procedure SetBookmarkData(Buffer: PAnsiChar; Data: Pointer); override; + procedure SetFieldData(Field: TField; Buffer: Pointer); override; + function GetFieldSize(FieldNo: integer): integer; overload; + function GetFieldSize(Field: TField): integer; overload; + function GetNativeFieldSize(FieldNo: integer): integer; + function GetFieldOffset(FieldNo: integer): integer; + function GetCalcFieldOffset(Field: TField): integer; + function GetMasterFields: string; + procedure SetMasterFields(const Value: string); + { Additional overrides (optional) } + function GetRecordCount: integer; override; + function GetRecNo: integer; override; + procedure SetRecNo(Value: integer); override; + property BaseSQL: TStrings read FSQL write SetSQL; + procedure SetSQLiteDateFormat(const Value: boolean); + procedure SetFilterText(const Value: string); override; + procedure DataConvert(Field: TField; Source, Dest: Pointer; ToNative: Boolean); override;//\\\ + function CalcFieldInList(const List: string): Boolean; // John Lito + + {$IFDEF IPROVIDER} + {***** IProviderSupport - Begin *****} + //-----| These are not necessary until the moment! + // procedure PSGetAttributes(List: TList); virtual; + // function PSGetDefaultOrder: TIndexDef; virtual; + // function PSGetIndexDefs(IndexTypes: TIndexOptions): TIndexDefs; virtual; + //-----| These are necessary to support IProvider + procedure PSEndTransaction(Commit: Boolean); override; + procedure PSExecute; override; + function PSExecuteStatement(const ASQL: string; AParams: TParams; ResultSet: Pointer = nil): Integer; override; + function PSGetParams: TParams; override; + function PSGetTableName: string; override; + function PSGetUpdateException(E: Exception; Prev: EUpdateError): EUpdateError; override; + function PSInTransaction: Boolean; override; + function PSIsSQLBased: Boolean; override; + function PSIsSQLSupported: Boolean; override; + procedure PSReset; override; + procedure PSSetCommandText(const CommandText: string); override; + procedure PSSetParams(AParams: TParams); override; + procedure PSStartTransaction; override; + function PSUpdateRecord(UpdateKind: TUpdateKind; Delta: TDataSet): Boolean; override; + function PSGetQuoteChar: string; override; + function PSGetKeyFields: string; override; + {***** IProviderSupport - End *****} + {$ENDIF} + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure ExecSQL; + procedure StartTransaction; + procedure StartDeferredTransaction; + procedure StartImmediateTransaction; + procedure StartExclusiveTransaction; + procedure Commit; + procedure RollBack; + procedure SetFiltered(Value: Boolean); override; + procedure SQLiteMasterChanged; virtual; + function GetFieldData(Field: TField; Buffer: Pointer): boolean; override; + function GetFieldData(FieldNo: integer; Buffer: Pointer): boolean; override; // 20040225 + function GetLastInsertRow: integer; +{$IFDEF ASQLITE_D6PLUS} +// function GetFieldData(Field: TField; Buffer: Pointer; NativeFormat: boolean): boolean; override; +{$ENDIF} + + function CompareBookmarks(Bookmark1, Bookmark2: TBookmark): Integer; override; //MS + function CreateBlobStream(Field: TField; Mode: TBlobStreamMode): TStream; override; + function Locate(const KeyFields: string; const KeyValues: variant; Options: TLocateOptions): boolean; override; + function BookmarkValid(Bookmark: Pointer): boolean; override; +// function LocateNearest(const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions): Boolean; + property Params: TParams read FParams write SetParamsList stored false; + function Lookup(const KeyFields: string; const KeyValues: Variant; // John Lito + const ResultFields: string): Variant; override; // John Lito + published + property AutoCommit: boolean read FAutoCommit write FAutoCommit default true; + property TransactionType: string read FTransactionType write FTransactionType; + property SQLiteDateFormat: boolean read FSQLiteDateFormat write SetSQLiteDateFormat; + property TableDateFormat: string read FTableDateFormat write FTableDateFormat; + property Connection: TASQLite3DB read FConnection write FConnection; + property MaxResults: integer read FMaxResults write FMaxResults; + property StartResult: integer read FStartResult write FStartResult; + property TypeLess: boolean read FTypeLess write FTypeLess; + property MasterFields: string read GetMasterFields write SetMasterFields; + property MasterSource: TDataSource read GetDataSource write SetDataSource; + property SQLCursor: boolean read FSQLCursor write FSQLCursor; + property ReadOnly: boolean read FreadOnly write FReadOnly; + property UniDirectional : boolean read FUniDir write FUniDir; + property AutoCalcFields; + property Filter; + property Filtered; + property Active; + property BeforeOpen; + property AfterOpen; + property BeforeClose; + property AfterClose; + property BeforeInsert; + property AfterInsert; + property BeforeEdit; + property AfterEdit; + property BeforePost; + property AfterPost; + property BeforeCancel; + property AfterCancel; + property BeforeDelete; + property AfterDelete; + property BeforeScroll; + property AfterScroll; +{$IFDEF ASQLITE_D6PLUS} + property BeforeRefresh; + property AfterRefresh; +{$ENDIF} + property OnCalcFields; + property OnDeleteError; + property OnEditError; + property OnNewRecord; + property OnPostError; + end; +//============================================================================== TASQLite3Query + + TASQLite3Query = class(TASQLite3BaseQuery) + private + FUpdateSQL: TASQLite3UpdateSQL; + FRawSQL: boolean; + procedure SetSQL(const Value: TStrings); + function GetSQL: TStrings; + procedure QueryChanged(Sender: TObject); + protected + procedure InternalOpen; override; + procedure InternalPost; override; + procedure InternalDelete; override; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure InternalClose; override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; +// property Params: TParams Read FParams Write SetParamsList Stored false; + procedure SQLiteMasterChanged; override; + published + property RawSQL: boolean read FRawSQL write FRawSQL; + property SQL: TStrings read GetSQL write SetSQL; + property UpdateSQL: TASQLite3UpdateSQL read FUpdateSQL write FUpdateSQL; + end; + +//============================================================================== TASQLite3Table + + TASQLite3Table = class(TASQLite3BaseQuery) + private + FTableName: string; + FOrderBy : string; + FPrimaryAutoInc: boolean; + protected + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure InternalOpen; override; + procedure InternalPost; override; + procedure InternalDelete; override; + procedure SetFTableName(TableName : string); + procedure SetFOrderBy(OrderBy : string); + public + procedure SQLiteMasterChanged; override; + published + property TableName: string read FTableName write SetFTableName; + property PrimaryAutoInc: boolean read FPrimaryAutoInc write FPrimaryAutoInc; + property OrderBy : string read FOrderBy write SetFOrderBy; + end; + + //============================================================================== TASQLite3BlobStream + + TASQLite3BlobStream = class(TMemoryStream) + private + FField: TBlobField; + FDataSet: TASQLite3BaseQuery; + FMode: TBlobStreamMode; + FModified: Boolean; + FOpened: Boolean; + procedure LoadBlobData; + procedure SaveBlobData; + public + constructor Create(Field: TBlobField; Mode: TBlobStreamMode); + destructor Destroy; override; + function Read(var Buffer; Count: Longint): Longint; override; + function Write(const Buffer; Count: Longint): Longint; override; + end; + + +implementation + +uses + Math +{$IFDEF ASQLITE_D6PLUS} + , StrUtils +{$endif} + ; + +// GPA - Static Link Start +{$IFDEF SQLite_Static} +Var + __HandlerPtr:Pointer; + + {$L 'OBJ\sqlite3.obj'} + {$L 'OBJ\files.obj'} + {$L 'OBJ\strlen.obj'} + {$L 'OBJ\assert.obj'} + {$L 'OBJ\memcmp.obj'} + {$L 'OBJ\memcpy.obj'} + {$L 'OBJ\memset.obj'} + {$L 'OBJ\strcmp.obj'} + {$L 'OBJ\strcpy.obj'} + {$L 'OBJ\strcat.obj'} + {$L 'OBJ\strncmp.obj'} + {$L 'OBJ\strncpy.obj'} + {$L 'OBJ\strncat.obj'} + {$L 'OBJ\sprintf.obj'} + {$L 'OBJ\fprintf.obj'} + {$L 'OBJ\_ll.obj'} + {$L 'OBJ\ltoupper.obj'} + {$L 'OBJ\ltolower.obj'} + {$L 'OBJ\atol.obj'} + {$L 'OBJ\ftol.obj'} + {$L 'OBJ\longtoa.obj'} + {$L 'OBJ\hrdir_r.obj'} + {$L 'OBJ\gmtime.obj'} + {$L 'OBJ\tzdata.obj'} + {$L 'OBJ\initcvt.obj'} + {$L 'OBJ\streams.obj'} + {$L 'OBJ\scantod.obj'} + {$L 'OBJ\scanwtod.obj'} + {$L 'OBJ\allocbuf.obj'} + {$L 'OBJ\bigctype.obj'} + {$L 'OBJ\clocale.obj'} + {$L 'OBJ\clower.obj'} + {$L 'OBJ\cupper.obj'} + {$L 'OBJ\fflush.obj'} + {$L 'OBJ\fputn.obj'} + {$L 'OBJ\hrdir_s.obj'} + {$L 'OBJ\mbisspc.obj'} + {$L 'OBJ\mbsrchr.obj'} + {$L 'OBJ\realcvt.obj'} + {$L 'OBJ\realcvtw.obj'} + {$L 'OBJ\timefunc.obj'} + {$L 'OBJ\vprinter.obj'} + {$L 'OBJ\hugeval.obj'} + {$L 'OBJ\cvtfak.obj'} + {$L 'OBJ\getinfo.obj'} + {$L 'OBJ\qmul10.obj'} + {$L 'OBJ\fuildq.obj'} + {$L 'OBJ\_pow10.obj'} + {$L 'OBJ\ldtrunc.obj'} + {$L 'OBJ\cvtfakw.obj'} + {$L 'OBJ\wis.obj'} + {$L 'OBJ\xfflush.obj'} + {$L 'OBJ\flushout.obj'} + {$L 'OBJ\lputc.obj'} + {$L 'OBJ\hrdir_b.obj'} + {$L 'OBJ\realloc.obj'} + {$L 'OBJ\mbctype.obj'} + {$L 'OBJ\xcvt.obj'} + {$L 'OBJ\xcvtw.obj'} + {$L 'OBJ\wcscpy.obj'} + {$L 'OBJ\errno.obj'} + {$L 'OBJ\ctrl87.obj'} + {$L 'OBJ\timedata.obj'} + {$L 'OBJ\int64toa.obj'} + {$L 'OBJ\cvtentry.obj'} + {$L 'OBJ\mbyte1.obj'} + {$L 'OBJ\errormsg.obj'} + {$L 'OBJ\exit.obj'} + {$L 'OBJ\iswctype.obj'} + {$L 'OBJ\heap.obj'} + {$L 'OBJ\memmove.obj'} + {$L 'OBJ\fxam.obj'} + {$L 'OBJ\fuistq.obj'} + {$L 'OBJ\qdiv10.obj'} + {$L 'OBJ\wmemset.obj'} + {$L 'OBJ\wcslen.obj'} + {$L 'OBJ\_tzset.obj'} + {$L 'OBJ\deflt87.obj'} + {$L 'OBJ\mbschr.obj'} + {$L 'OBJ\mbsrchr.obj'} + {$L 'OBJ\ermsghlp.obj'} + {$L 'OBJ\patexit.obj'} + {$L 'OBJ\initexit.obj'} + {$L 'OBJ\virtmem.obj'} + {$L 'OBJ\tzset.obj'} + {$L 'OBJ\mbisdgt.obj'} + {$L 'OBJ\mbsnbcpy.obj'} + {$L 'OBJ\platform.obj'} + {$L 'OBJ\getenv.obj'} + {$L 'OBJ\mbisalp.obj'} + {$L 'OBJ\abort.obj'} + {$L 'OBJ\signal.obj'} + {$L 'OBJ\clear87.obj'} + {$L 'OBJ\abort.obj'} + {$L 'OBJ\handles.obj'} + {$L 'OBJ\_cfinfo.obj'} + {$L 'OBJ\__isatty.obj'} + {$L 'OBJ\perror.obj'} + {$L 'OBJ\fputs.obj'} + {$L 'OBJ\files2.obj'} + {$L 'OBJ\ioerror.obj'} + {$L 'OBJ\__write.obj'} + {$L 'OBJ\_write.obj'} + {$L 'OBJ\__lseek.obj'} + {$L 'OBJ\ioerror.obj'} + {$L 'OBJ\setenvp.obj'} + {$L 'OBJ\calloc.obj'} + {$L 'OBJ\mbsnbcmp.obj'} + {$L 'OBJ\mbsnbicm.obj'} + {$L 'OBJ\is.obj'} + {$L 'OBJ\isctype.obj'} + {$L 'OBJ\bigctype.obj'} + {$L 'OBJ\globals.obj'} + {$L 'OBJ\hrdir_mf.obj'} + {$L 'OBJ\fpreset.obj'} + {$L 'OBJ\ta.obj'} + {$L 'OBJ\setexc.obj'} + {$L 'OBJ\defhandl.obj'} + + function _wsprintfA:integer; external 'user32.dll' name 'wsprintfA'; + procedure RtlUnwind; external 'NtDll.dll' name 'RtlUnwind'; + + function _sqlite3_open(dbname: PAnsiChar; var db: pointer): integer; cdecl; external; + function _sqlite3_close(db: pointer): integer; cdecl; external; + function _sqlite3_exec(DB: Pointer; SQLStatement: PAnsiChar; Callback: TSQLite3_Callback; + UserDate: Pointer; var ErrMsg: PAnsiChar): Integer; cdecl; external; + function _sqlite3_libversion: PAnsiChar; cdecl; external; + function _sqlite3_errmsg(db: pointer): PAnsiChar; cdecl; external; + function _sqlite3_get_table(db: Pointer; SQLStatement: PAnsiChar; var ResultPtr: Pointer; + var RowCount: cardinal; var ColCount: cardinal; var ErrMsg: PAnsiChar): integer; cdecl; external; + procedure _sqlite3_free_table(Table: PAnsiChar); cdecl; external; + procedure _sqlite3_free(P: PAnsiChar); cdecl; external; + function _sqlite3_complete(P: PAnsiChar): boolean; cdecl; external; + function _sqlite3_last_insert_rowid(db: Pointer): integer; cdecl; external; + procedure _sqlite3_interrupt(db: Pointer); cdecl; external; + procedure _sqlite3_busy_handler(db: Pointer; CallbackPtr: Pointer; Sender: TObject); cdecl; external; + procedure _sqlite3_busy_timeout(db: Pointer; TimeOut: integer); cdecl; external; + function _sqlite3_changes(db: Pointer): integer; cdecl; external; + function _sqlite3_prepare(db: Pointer; SQLStatement: PAnsiChar; nBytes: integer; + var hstatement: pointer; var Tail: PAnsiChar): integer; cdecl; external; + function _sqlite3_finalize(hstatement: pointer): integer; cdecl; external; + function _sqlite3_reset(hstatement: pointer): integer; cdecl; external; + function _sqlite3_step(hstatement: pointer): integer; cdecl; external; + function _sqlite3_column_blob(hstatement: pointer; iCol: integer): pointer; cdecl; external; + function _sqlite3_column_bytes(hstatement: pointer; iCol: integer): integer; cdecl; external; + function _sqlite3_column_count(hstatement: pointer): integer; cdecl; external; + function _sqlite3_column_decltype(hstatement: pointer; iCol: integer): PAnsiChar; cdecl; external; + function _sqlite3_column_double(hstatement: pointer; iCol: integer): double; cdecl; external; + function _sqlite3_column_int(hstatement: pointer; iCol: integer): integer; cdecl; external; + function _sqlite3_column_int64(hstatement: pointer; iCol: integer): int64; cdecl; external; + function _sqlite3_column_name(hstatement: pointer; iCol: integer): PAnsiChar; cdecl; external; + function _sqlite3_column_text(hstatement: pointer; iCol: integer): PAnsiChar; cdecl; external; + function _sqlite3_column_type(hstatement: pointer; iCol: integer): integer; cdecl; external; + function _sqlite3_bind_blob(hstatement: pointer; iCol: integer; buf: PAnsiChar; n: integer; DestroyPtr: Pointer): integer; cdecl; external; + +{$ENDIF} +// GPA - Static Link End + + +{$IFDEF DEBUG_ENABLED} +var + DebugSpaces : Integer = 0; +{$ENDIF} + +{$IFNDEF ASQLITE_D6PLUS} //Art Register - Function sign not provided in Delphi 5 +function Sign(I: Integer) : Integer ; +begin + if (I > 0) then + Result := 1 + else + begin + if (I < 0) then + Result := -1 + else + Result := 0; + end; +end; +{$ENDIF} + +procedure Debug(const S: string); +begin +{$IFDEF DEBUG_ENABLED} + OutputDebugString(PAnsiChar(StringOfChar(' ', DebugSpaces) + S)); +{$ENDIF} +end; + +procedure DebugEnter(const S: string); +begin +{$IFDEF DEBUG_ENABLED} + OutputDebugString(PAnsiChar(StringOfChar(' ', DebugSpaces) + 'Enter ' + S)); + inc(DebugSpaces); +{$ENDIF} +end; + +procedure DebugLeave(const S: string); +begin +{$IFDEF DEBUG_ENABLED} + dec(DebugSpaces); + OutputDebugString(PAnsiChar(StringOfChar(' ', DebugSpaces) + 'Leave ' + S)); +{$ENDIF} +end; + +//============================================================================== +// SyntaxCheck. This routine is used to check if words match the sql syntax +// It is called where sql statements are parsed and generated +//============================================================================== + +function SyntaxCheck(LWord, RWord: string): boolean; +begin + DebugEnter('SyntaxCheck'); + try + if CompareText(LWord, RWord) <> 0 then begin + SyntaxCheck := false; + raise AsgError.Create('SQL macro syntax error on sql, expected ' + RWord) + end else + SyntaxCheck := true; + finally + DebugLeave('SyntaxCheck'); + end; +end; + +//============================================================================== +// Parse the SQL fielddescription and return the Delphi Field types, length etc. +//============================================================================== + +procedure GetFieldInfo(FieldInfo: string; var FieldType: TFieldType; + var FieldLen, FieldDec: integer); +var + p1, p2, pn : integer; + vt : string; +begin + DebugEnter('GetFieldInfo'); + FieldType := ftString; // just a default; + FieldLen := 255; + FieldDec := 0; + + p1 := pos('(', FieldInfo); + if p1 <> 0 then + begin + p2 := pos(')', FieldInfo); + if p2 <> 0 then + begin + vt := LowerCase(Copy(FieldInfo, 1, p1 - 1)); + if (vt = 'varchar') or (vt = 'char') or (vt = 'varchar2') then begin + FieldType := ftString; + FieldLen := StrToInt(Copy(FieldInfo, p1 + 1, p2 - p1 - 1)); + end else if (vt = 'nvarchar') or (vt = 'nchar') or (vt = 'nvarchar2') then begin + FieldType := ftWideString; + FieldLen := StrToInt(Copy(FieldInfo, p1 + 1, p2 - p1 - 1)) * 2; + end else if (vt = 'numeric') then begin + vt := Copy(FieldInfo, p1 + 1, p2 - p1 - 1); + pn := pos('.', vt); if pn = 0 then pn := pos(',', vt); + FieldType := ftFloat; + if pn = 0 then begin + FieldLen := StrToInt(vt); + FieldDec := 0; + end else begin + FieldLen := StrToInt(Copy(vt, 1, pn - 1)); + FieldDec := StrToInt(Copy(vt, pn + 1, 2)); + end; + end; + end + else + FieldLen := 256; + end + else + begin + vt := LowerCase(FieldInfo); + if vt = 'date' then + begin + FieldType := ftDate; + FieldLen := 10; + end + else if vt = 'datetime' then + begin + FieldType := ftDateTime; // fpierce original ftDate + FieldLen := 24; // aducom + end + else if vt = 'time' then + begin + FieldType := ftTime; + FieldLen := 12; + end +{$IFDEF ASQLITE_D6PLUS} + else if vt = 'timestamp' then + begin + FieldType := ftTimeStamp; + FieldLen := 12; + end +{$ENDIF} + else if (vt = 'integer') or (vt = 'int') then + begin + FieldType := ftInteger; + FieldLen := 12; + end + else if (vt = 'float') or (vt = 'real') then + begin + FieldType := ftFloat; + FieldLen := 12; + end + else if (vt = 'boolean') or (vt = 'logical') then + begin + FieldType := ftBoolean; + FieldLen := 2; + end + else if (vt = 'char') or (vt = 'byte') then + begin + FieldType := ftString; + FieldLen := 1; + end + else if (vt = 'shorttext') or (vt = 'string') then + begin + FieldType := ftString; + FieldLen := 255; + end + else if (vt = 'widetext') or (vt = 'widestring') then + begin + FieldType := ftWideString; + FieldLen := 512; + end + else if (vt = 'currency') or (vt = 'financial') or (vt = 'money') then + begin + FieldType := ftCurrency; + FieldLen := 10; + end + else if (vt = 'blob') then + begin + FieldType := ftBlob; + FieldLen := SizeOf(Pointer); + end + else if (vt = 'graphic') then + begin + FieldType := ftGraphic; + FieldLen := SizeOf(Pointer); + end + else if (vt = 'clob') or (vt = 'memo') or (vt = 'text') or (vt = 'longtext') then + begin + FieldType := ftMemo; + FieldLen := SizeOf(Pointer); + end; + end; + DebugLeave('GetFieldInfo: ' + vt); +end; + + //============================================================================== + // Convert TDateTime to TDateTimeRec + //============================================================================== + +function DateTimeToNative(DataType: TFieldType; Data: TDateTime): TDateTimeRec; +var + TimeStamp : TTimeStamp; +begin + DebugEnter('DateTimeToNative'); + TimeStamp := DateTimeToTimeStamp(Data); + case DataType of + ftDate: Result.Date := TimeStamp.Date; + ftTime: Result.Time := TimeStamp.Time; + else + Result.DateTime := TimeStampToMSecs(TimeStamp); + end; + DebugLeave('DateTimeToNative'); +end; + +procedure ApplicationHandleException(Sender: TObject); +begin +{$IFDEF ASQLITE_D6PLUS} + if Assigned(Classes.ApplicationHandleException) then + Classes.ApplicationHandleException(Sender); +{$ENDIF} +end; + +//============================================================================== TASQLite3LOG + +procedure TASQLite3Log.Display(Msg: string); +var + fn : Textfile; +begin + DebugEnter('TASQLite3Log.Display'); + if FileExists(FLogFile) then + begin + if FAppend then + begin + AssignFile(fn, FLogFile); + System.Append(fn); + end + else + begin + SysUtils.DeleteFile(FLogFile); + AssignFile(fn, FLogFile); + Rewrite(fn); + end; + end + else + begin + AssignFile(fn, FLogFile); + Rewrite(fn); + end; + Writeln(fn, FormatDateTime('yyyy mmm dd (hh:nn:ss) ', now) + Msg); + CloseFile(fn); + DebugLeave('TASQLite3Log.Display'); +end; + +//============================================================================== TASQLite3PRAGMA + +function TASQLite3Pragma.GetTempCacheSize: string; +begin + DebugEnter('TASQLite3Pragma.GetTempCacheSize'); + GetTempCacheSize := 'pragma cache_size=' + IntToStr(FTempCacheSize); + DebugLeave('TASQLite3Pragma.GetTempCacheSize'); +end; + +function TASQLite3Pragma.GetDefaultCacheSize: string; +begin + DebugEnter('TASQLite3Pragma.GetDefaultCacheSize'); + GetDefaultCacheSize := 'pragma default_cache_size=' + IntToStr(FDefaultCacheSize); + DebugLeave('TASQLite3Pragma.GetDefaultCacheSize'); +end; + +function TASQLite3Pragma.GetDefaultSynchronous: string; +begin + DebugEnter('TASQLite3Pragma.GetDefaultSynchronous'); + GetDefaultSynchronous := 'pragma default_synchronous=' + FDefaultSynchronous; + DebugLeave('TASQLite3Pragma.GetDefaultSynchronous'); +end; + +function TASQLite3Pragma.GetDefaultTempStore: string; +begin + DebugEnter('TASQLite3Pragma.GetDefaultTempStore'); + GetDefaultTempStore := 'pragma default_temp_store=' + FDefaultTempStore; + DebugLeave('TASQLite3Pragma.GetDefaultTempStore'); +end; + +function TASQLite3Pragma.GetTempStore: string; +begin + DebugEnter('TASQLite3Pragma.GetTempStore'); + GetTempStore := 'pragma temp_store=' + FTempStore; + DebugLeave('TASQLite3Pragma.GetTempStore'); +end; + +function TASQLite3Pragma.GetSynchronous: string; +begin + DebugEnter('TASQLite3Pragma.GetSynchronous'); + GetSynchronous := 'pragma synchronous=' + FSynchronous; + DebugLeave('TASQLite3Pragma.GetSynchronous'); +end; + + //============================================================================== TFRESULT + // TResult is a representation of an internal pointerlist of results. + // Only 'normal' results will be stored internally within a fixed memory block + // depending on calculated length internally. This is not the case + // for blobs and clobs. In this case only the handle is stored in the fixed + // structure and a separate memory handle is retrieved to store the blob and + // clob data. This is because the blobs are stored as null terminated 'strings' + // and thus have different lengths. No more memory is allocated this way than + // strictly necessary. + // KEEP IN MIND: ... + // This resultset is NOT used for unidirectional search results. You can + // however, open a dbgrid containing griddata. You cannot update your data + // if you use the unidirectional the result is read-only by default and cannot + // be changed. + // The unidirectional dataset improves performance on large resultsets and + // is to be considered for query-only components... + //============================================================================== + +constructor TFResult.Create(TheDataSet: TASQLite3BaseQuery); +begin + DebugEnter('TFResult.Create'); + Data := TList.Create; + Bookmark := TList.Create; + RowId := TList.Create; + FDataSet := TheDataset; + FLastBookmark := -1; // 2004-14-09 (rps) 0 -> -1 (otherwise insert in an empty table gives index out of range) + DebugLeave('TFResult.Create'); +end; + +destructor TFResult.Destroy; +var + ptr : Pointer; + i : integer; +begin + DebugEnter('TFResult.Destroy'); + FreeBlobs; + if Assigned(Data) then begin + for i := 0 to Data.Count - 1 do begin + ptr := Data.Items[i]; + if Assigned(ptr) then FreeMem(ptr, FBufSize); + end; + Data.Free; // D4 compatibility, otherwise FreeAndNil could be used + Data := nil; + end; + + if Assigned(Bookmark) then begin + Bookmark.Free; + Bookmark := nil; + end; + + if Assigned(RowId) then begin + RowId.Free; + RowId := nil; + end; + + DebugLeave('TFResult.Destroy'); +end; + +procedure TFResult.FreeBlobs; +var i, j : integer; + offset : integer; + ptr : PAnsiChar; + stream : TMemoryStream; +begin + if not Assigned(FDataSet) then exit; + if not Assigned(FDataSet.FieldList) then exit; + for j := 0 to Data.Count - 1 do begin + ptr := GetData(j); + for i := 0 to FDataSet.FieldList.Count - 1 do begin + if FDataSet.FieldList[i].DataType in [ftMemo, ftFmtMemo, ftGraphic, ftBlob] then begin + Offset := FDataset.GetFieldOffset(FDataSet.FieldList[i].FieldNo); + Move((ptr + Offset)^, Pointer(Stream), sizeof(Pointer)); + Stream.Free; + end; + end; + end; +end; + +procedure TFResult.SetBufSize(TheSize: integer); +begin + DebugEnter('TFResult.SetBufSize'); + FBufSize := TheSize; + DebugLeave('TFResult.SetBufSize'); +end; + +//============================================================================== +// Adds a row of data to the resultset. +//============================================================================== + +procedure TFResult.Add(TheBuffer: PAnsiChar; TheRowId: integer); +var + ptr : PAnsiChar; +// i: integer; +begin +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TFResult.Add'); +{$ENDIF} + Inc(FLastBookmark); + GetMem(Ptr, FBufSize); + move(TheBuffer^, ptr^, FBufSize); + Data.Add(Ptr); + Bookmark.Add(Pointer(FLastBookMark)); + if TheRowId >= 0 then + RowId.Add(Pointer(TheRowId)) + else + RowId.Add(Pointer(RowId.Count)); +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TFResult.Add'); +{$ENDIF} +end; + +//============================================================================== +// Inserts a row of date into the resultset +//============================================================================== + +procedure TFResult.Insert(Index: integer; TheBuffer: pointer; TheRowId: integer); +var + ptr : Pointer; +begin + DebugEnter('TFResult.Insert'); + Inc(FLastBookmark); + GetMem(Ptr, FBufSize); + move(TheBuffer^, ptr^, FBufSize); + if Data.Count < Index then begin + Data.Add(Ptr); + Bookmark.Add(Pointer(FLastBookMark)); + RowId.Add(Pointer(TheRowId)); + end else begin + Data.Insert(Index, Ptr); + Bookmark.Insert(Index, Pointer(FLastBookMark)); + RowId.Insert(Index, Pointer(TheRowId)); + end; + DebugLeave('TFResult.Insert'); +end; + +//============================================================================== +// Deletes a row of data from the resultset +//============================================================================== + +procedure TFResult.Delete(Index: integer); +var + ptr : pointer; +begin + DebugEnter('TFResult.Delete'); + if not ((Index < 0) or (Index >= Data.Count)) then + begin + ptr := Data.Items[Index]; + if ptr <> nil then + FreeMem(ptr, FBufSize); + Data.Delete(Index); + Bookmark.Delete(Index); + Rowid.Delete(Index); + end; + DebugLeave('TFResult.Delete'); +end; + +//============================================================================== +// Returns a row from the resultset +//============================================================================== + +function TFResult.GetData(Index: integer): Pointer; +begin + DebugEnter('TFResult.GetData'); + if (Index < 0) or (Index >= Data.Count) then + GetData := nil + else + GetData := Data.Items[Index]; + DebugLeave('TFResult.GetData'); +end; + +function TFResult.GetBookmark(Index: integer): integer; +begin + DebugEnter('TFResult.GetBookmark'); + if (Index < 0) or (Index >= Data.Count) then + GetBookmark := -1 + else + GetBookmark := integer(Bookmark.Items[Index]); + DebugLeave('TFResult.GetBookmark'); +end; + +function TFResult.GetRowId(Index: integer): integer; +begin + DebugEnter('TFResult.GetRowId'); + if (Index < 0) or (Index >= RowId.Count) then + GetRowId := -1 + else + GetRowId := integer(RowId.Items[Index]); + DebugLeave('TFResult.GetRowId'); +end; + +function TFResult.Count: integer; +begin + Count := Data.Count; +end; + +function TFResult.IndexOf(TheBookMark: pointer): integer; +begin + Result := BookMark.IndexOf(TheBookmark); +end; + +//============================================================================== ASQLITEDB + +procedure TASQLite3DB.Notification(AComponent: TComponent; Operation: TOperation); +begin +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TASQLite3DB.Notification'); +{$ENDIF} +// Application.ProcessMessages; + if Assigned(AComponent) then + begin + if (Operation = opRemove) then + begin + if (AComponent is TASQLite3Pragma) then begin + if Assigned(FASQLitePragma) then begin + if TASQLite3Pragma(AComponent) = FASQLitePragma then + FASQLitePragma := nil; + end; + end + else if (AComponent is TASQLite3Log) then + begin + if Assigned(FASQLiteLog) then begin + if TASQLite3Log(AComponent) = FASQLiteLog then + FASQLiteLog := nil; + end; + end + else if (AComponent is TASQLite3InlineSQL) then + begin + if Assigned(FInlineSQL) then begin + if TASQLite3InlineSQL(AComponent) = FInlineSQL then + FInlineSQL := nil; + end; + end; + end; + end; + inherited; +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLite3DB.Notification'); +{$ENDIF} +end; + +function TASQLite3DB.LoadLibs: boolean; +begin + try + DebugEnter('TASQLite3DB.LoadLibs'); + if not(DecimalSeparator in ['.',',']) then + DecimalSeparator := '.'; + + Debug('loading sqlite lib'); +{$IFNDEF SQLite_Static} + Debug(PAnsiChar(DriverDLL)); + Result := false; + DLLHandle := LoadLibrary(PAnsiChar(DriverDLL)); //JohnLito + if DLLHandle <> 0 then + begin + @SQLite3_Open := GetProcAddress(DLLHandle, 'sqlite3_open'); + if not Assigned(@SQLite3_Open) then exit; + @SQLite3_Close := GetProcAddress(DLLHandle, 'sqlite3_close'); + if not Assigned(@SQLite3_Close) then exit; + @SQLite3_Exec := GetProcAddress(DLLHandle, 'sqlite3_exec'); + if not Assigned(@SQLite3_Exec) then exit; + @SQLite3_LibVersion := GetProcAddress(DLLHandle, 'sqlite3_libversion'); + if not Assigned(@SQLite3_LibVersion) then exit; + @SQLite3_ErrorString := GetProcAddress(DLLHandle, 'sqlite3_errmsg'); + if not Assigned(@SQLite3_ErrorString) then exit; + @SQLite3_GetTable := GetProcAddress(DLLHandle, 'sqlite3_get_table'); + if not Assigned(@SQLite3_GetTable) then exit; + @SQLite3_FreeTable := GetProcAddress(DLLHandle, 'sqlite3_free_table'); + if not Assigned(@SQLite3_FreeTable) then exit; + @SQLite3_FreeMem := GetProcAddress(DLLHandle, 'sqlite3_free'); + if not Assigned(@SQLite3_FreeMem) then exit; + @SQLite3_Complete := GetProcAddress(DLLHandle, 'sqlite3_complete'); + if not Assigned(@SQLite3_Complete) then exit; + @SQLite3_LastInsertRow := GetProcAddress(DLLHandle, 'sqlite3_last_insert_rowid'); + if not Assigned(@SQLite3_LastInsertRow) then exit; + @SQLite3_Cancel := GetProcAddress(DLLHandle, 'sqlite3_interrupt'); + if not Assigned(@SQLite3_Cancel) then exit; + @SQLite3_BusyTimeout := GetProcAddress(DLLHandle, 'sqlite3_busy_timeout'); + if not Assigned(@SQLite3_BusyTimeout) then exit; + @SQLite3_BusyHandler := GetProcAddress(DLLHandle, 'sqlite3_busy_handler'); + if not Assigned(@SQLite3_BusyHandler) then exit; + @SQLite3_Changes := GetProcAddress(DLLHandle, 'sqlite3_changes'); + if not Assigned(@SQLite3_Changes) then exit; + @SQLite3_Prepare := GetProcAddress(DLLHandle, 'sqlite3_prepare'); + if not Assigned(@SQLite3_Prepare) then exit; + @SQLite3_Finalize := GetProcAddress(DLLHandle, 'sqlite3_finalize'); + if not Assigned(@SQLite3_Finalize) then exit; + @SQLite3_Reset := GetProcAddress(DLLHandle, 'sqlite3_reset'); + if not Assigned(@SQLite3_Reset) then exit; + @SQLite3_Step := GetProcAddress(DLLHandle, 'sqlite3_step'); + if not Assigned(@SQLite3_Step) then exit; + @SQLite3_Column_blob := GetProcAddress(DLLHandle, 'sqlite3_column_blob'); + if not Assigned(@SQLite3_Column_blob) then exit; + @SQLite3_Column_bytes := GetProcAddress(DLLHandle, 'sqlite3_column_bytes'); + if not Assigned(@SQLite3_Column_bytes) then exit; + @SQLite3_Column_count := GetProcAddress(DLLHandle, 'sqlite3_column_count'); + if not Assigned(@SQLite3_Column_Count) then exit; + @SQLite3_Column_decltype := GetProcAddress(DLLHandle, 'sqlite3_column_decltype'); + if not Assigned(@SQLite3_Column_decltype) then exit; + @SQLite3_Column_double := GetProcAddress(DLLHandle, 'sqlite3_column_double'); + if not Assigned(@SQLite3_Column_double) then exit; + @SQLite3_Column_int := GetProcAddress(DLLHandle, 'sqlite3_column_int'); + if not Assigned(@SQLite3_Column_int) then exit; + @SQLite3_Column_int64 := GetProcAddress(DLLHandle, 'sqlite3_column_int64'); + if not Assigned(@SQLite3_Column_int64) then exit; + @SQLite3_Column_name := GetProcAddress(DLLHandle, 'sqlite3_column_name'); + if not Assigned(@SQLite3_Column_name) then exit; + @SQLite3_Column_text := GetProcAddress(DLLHandle, 'sqlite3_column_text'); + if not Assigned(@SQLite3_Column_text) then exit; + @SQLite3_Column_text16 := GetProcAddress(DLLHandle, 'sqlite3_column_text16'); + if not Assigned(@SQLite3_Column_text16) then exit; + @SQLite3_Column_type := GetProcAddress(DLLHandle, 'sqlite3_column_type'); + if not Assigned(@SQLite3_Column_type) then exit; + @SQLite3_Bind_Blob := GetProcAddress(DLLHandle, 'sqlite3_bind_blob'); + if not Assigned(@SQLite3_Bind_blob) then exit; + @SQLite3_Bind_Text16 := GetProcAddress(DLLHandle, 'sqlite3_bind_text16'); + if not Assigned(@SQLite3_Bind_Text16) then exit; + @SQLite3_Bind_Parameter_Count := GetProcAddress(DLLHandle, 'sqlite3_bind_parameter_count'); + if not Assigned(@SQLite3_Bind_Parameter_Count) then exit; + + Result := true; + end; + {$ELSE} + DllHandle := 1; + @SQLite3_Open := @_sqlite3_open; + @SQLite3_Close := @_sqlite3_close; + @SQLite3_Exec := @_sqlite3_exec; + @SQLite3_LibVersion := @_sqlite3_libversion; + @SQLite3_ErrorString := @_sqlite3_errmsg; + @SQLite3_GetTable := @_sqlite3_get_table; + @SQLite3_FreeTable := @_sqlite3_free_table; + @SQLite3_FreeMem := @_sqlite3_free; + @SQLite3_Complete := @_sqlite3_complete; + @SQLite3_LastInsertRow := @_sqlite3_last_insert_rowid; + @SQLite3_Cancel := @_sqlite3_interrupt; + @SQLite3_BusyTimeout := @_sqlite3_busy_timeout; + @SQLite3_BusyHandler := @_sqlite3_busy_handler; + @SQLite3_Changes := @_sqlite3_changes; + @SQLite3_Prepare := @_sqlite3_prepare; + @SQLite3_Finalize := @_sqlite3_finalize; + @SQLite3_Reset := @_sqlite3_reset; + @SQLite3_Step := @_sqlite3_step; + @SQLite3_Column_blob := @_sqlite3_column_blob; + @SQLite3_Column_bytes := @_sqlite3_column_bytes; + @SQLite3_Column_count := @_sqlite3_column_count; + @SQLite3_Column_decltype := @_sqlite3_column_decltype; + @SQLite3_Column_double := @_sqlite3_column_double; + @SQLite3_Column_int := @_sqlite3_column_int; + @SQLite3_Column_int64 := @_sqlite3_column_int64; + @SQLite3_Column_name := @_sqlite3_column_name; + @SQLite3_Column_text := @_sqlite3_column_text; + @SQLite3_Column_type := @_sqlite3_column_type; + @SQLite3_Bind_Blob := @_sqlite3_bind_blob; + Result := true; + {$ENDIF} + finally + DebugLeave('TASQLite3DB.LoadLibs'); + end; +end; + +procedure TASQLite3DB.ShowError; +var msg : PAnsiChar; +begin + msg := SQLite3_ErrorString(DBHandle); + raise EDatabaseError.Create(msg); +end; + +function TASQLite3DB.SQLite3_ExecSQL(TheStatement: string; Blobs: TList=nil): integer; +var + PF: PAnsiChar; + p: Pointer; + i: Integer; + b: Integer; + m: TMemoryStream; +begin + TheStatement := StringReplace(TheStatement, #2, '?', [rfReplaceAll, rfIgnoreCase]); + PF := PAnsiChar(TheStatement); + repeat + Result := SQLite3_Prepare(DBHandle, PF, -1, p, PF); + if Result = SQLITE_OK then + begin + if Assigned(Blobs) then begin + for i := 0 to Blobs.Count - 1 do Begin + b := i+1; + m := TMemoryStream(Blobs.Items[i]); + SQLite3_Bind_Blob(p, b, PChar(m.Memory), m.Size, nil); + End; + end; + repeat + until SQLite3_Step(p) in [SQLITE_DONE, SQLITE_ERROR, SQLITE_MISUSE]; + Result := SQLite3_Finalize(p); + if Result <> SQLITE_OK then ShowError; + end + else + ShowError; + until PF^ = #0; +end; + +function TASQLite3DB.SQLite3_PrepareResult(DB: Pointer; TheStatement: string; FParams: TParams; Sender: TObject): Pointer; +var + i,tmpi: Integer; + t: PAnsiChar; + RV: Integer; +// RowIdCol: Integer; // column containing rowid +// RowId: Integer; // current record row id (to be stored in resultset) + colname, coltype: PChar; + tmpcolname:string; + FieldType: TFieldType; + FieldLen: Integer; + FieldDec: Integer; + bFirst: Boolean; + wildcard: Integer; +begin + if not (Sender is TASQLite3BaseQuery) then Exit; + + with (Sender as TASQLite3BaseQuery) do begin + // if there are blob fields then we need to bind the blob variable + RowId := -1; + RowIdCol := -1; + TheStatement := StringReplace(TheStatement, #2, '?', [rfReplaceAll, rfIgnoreCase]); + + bFirst := True; +{$IFDEF ASQLITE_D6PLUS} + if FUtf8 then + RV := SQLite3_Prepare(DBHandle, PAnsiChar(AnsiToUtf8(TheStatement)), -1, result, t) + else +{$endif} + RV := SQLite3_Prepare(DBHandle, PAnsiChar(TheStatement), -1, result, t); + + wildcard := 1; + if Assigned(FParams) then begin + for i := 0 to FParams.Count - 1 do begin + if FParams[i].DataType in [ftBlob, ftGraphic] then begin + SQLite3_Bind_Blob(result, wildcard, PChar(FParams[i].AsBlob), FParams[i].GetDataSize, nil); + Inc(wildcard); + end; + end; + end; + + if RV <> 0 then ShowError else begin + if bFirst then begin // retrieve metadata on first row + bFirst := False; + if SQLite3_Column_count(result) > 0 then FieldDefs.Clear; + for i := 0 to SQLite3_Column_count(result) - 1 do begin + colname := SQLite3_Column_name(result, i); + + // the second field named "ID", change in "ID_1" (like InterBase) + if (FieldDefs.IndexOf(colname) >= 0) then begin // Mirko + tmpColName := colname; // Mirko + tmpI := 0; // Mirko + while (FieldDefs.IndexOf(tmpcolname) >= 0) do begin // Mirko + inc(tmpI); // Mirko + tmpColName := colname + '_' + inttostr(tmpI); // Mirko + end; // Mirko + colName := PChar(tmpColName); // Mirko + end; // Mirko + + if CompareText(colname, 'rowid') = 0 then begin + RowIdCol := i; + end else begin + coltype := SQLite3_Column_decltype(result, i); + //SQl: select max(CurID) from Items, sqlite3_column_decltype returns null.. it's probably SQLite bug + // better is to use max(CurID) as something from .... Aducom + if coltype = nil then + GetFieldInfo('string', FieldType, FieldLen, FieldDec) //OL + else + GetFieldInfo(coltype, FieldType, FieldLen, FieldDec); + if TypeLess then begin + FieldType := ftString; + with FieldDefs.AddFieldDef do begin + Name := colname; + DataType := FieldType; + Size := FieldLen; + end; + end else begin + with FieldDefs.AddFieldDef do begin + if FieldType <> ftString then begin + Name := colname; + DataType := FieldType; + if FieldType = ftFloat then + Precision := FieldDec; + end else begin + Name := colname; + DataType := FieldType; + Size := FieldLen; + end; + end; + end; + MaxStrLen := MaxStrLen + GetNativeFieldSize(i + 1); // compensate for terminating zero + FResult.SetBufSize(MaxStrLen + 1 + SizeOf(TBookMark)); + end; + end; + end; + end; + end; +end; + +function TASQLite3DB.SQLite3_GetNextResult(DB: Pointer; TheStatement: pointer; FParams: TParams; Sender: TObject) : pointer; +var + i : integer; + minmin : integer; + RV: Integer; + mv: Integer; +// RowIdCol: Integer; // column containing rowid + convertbuf: TConvertBuffer; + pData: PAnsiChar; + BlobStream: TMemoryStream; +begin + result := nil; + with (Sender as TASQLite3BaseQuery) do begin + + FillChar(ResultStr^, MaxBuf, 0); + RV := SQLite3_Step(theStatement); + if RV = SQLITE_ROW then begin + + // retrieve data + if (Sender is TASQLite3Query) then + MinMin := 1 + else + MinMin := 1; // compensate for 'rowid' + for i := 0 to SQLite3_Column_count(theStatement) - MinMin do begin + if i = RowIdCol then begin // just save rowid + RowId := SQLite3_Column_int(theStatement, i); + end else begin + +// ok, i can find-out that the fiels is null but.... eh.... +// if SQLite3_column_type(theStatement, i) = 5 then begin +// end; + + pData := SQLite3_Column_text(theStatement, i); + if pData = nil then pData := ''; // james + if FTypeLess then begin + mv := GetNativeFieldSize(i + 1); + if StrLen(pData) < Cardinal(mv) then + mv := StrLen(pData); + Move(pData^, (ResultStr + GetFieldOffset(i + 1))^, mv); + end else begin + case FieldDefs[i].DataType of // DI + ftString: // DI + begin // DI + mv := GetNativeFieldSize(i + 1); + if pData <> nil then //OL + begin + if StrLen(pData) < Cardinal(mv) then + mv := StrLen(pData)+1; // plus onennnnnnnnnnnnnnnn + Move(pData^, (ResultStr + GetFieldOffset(i + 1))^, mv); + end; + end; // DI + ftMemo, ftGraphic, ftFmtMemo, ftBlob: // DI + begin // DI + // create memory stream to save blob; + pData := SQLite3_Column_blob(theStatement, i); + BlobStream := TMemoryStream.Create; + if pData <> nil then + BlobStream.Write(pData^, SQLite3_Column_bytes(theStatement, i)) + else begin + pData := ''; + BlobStream.Write(pData^, 0); + end; + Move(BlobStream, (ResultStr + GetFieldOffset(i + 1))^, SizeOf(BlobStream)); + end; // DI + else // DI + begin // DI + convertbuf := UnpackBuffer(pData, FieldDefs[i].DataType); + Move(convertbuf, (ResultStr + GetFieldOffset(i + 1))^, GetFieldSize(i + 1)); + end; + end; + end; + end + end; + Result := ResultStr; + end; + if RV in [SQLITE_DONE] then result := nil; + if RV in [SQLITE_ERROR, SQLITE_MISUSE] then //f.e. inserting NULL in field declared as NOT NULL + ShowError; + end; +end; + +procedure TASQLite3DB.SQLite3_CloseResult(TheStatement : pointer); +var RV : integer; +begin + if TheStatement <> nil then begin + SQLite3_Reset(TheStatement); + RV := SQLite3_Finalize(TheStatement); + if RV <> 0 then raise AsgError.Create('SQLiteExecute error: ' + IntToStr(RV)); + end; +end; + +function TASQLite3DB.SQLite3_Execute(DB: Pointer; TheStatement: string; FParams: TParams; Sender: TObject): Integer; +var + p: Pointer; + RowIdCol: Integer; // column containing rowid +{$IFDEF ASQLITE_D6PLUS} + Cursor: TDBScreenCursor; +{$endif} +begin + SQLite3_Execute := 0; + RowIdCol := -1; + if not (Sender is TASQLite3BaseQuery) then Exit; + try + with (Sender as TASQLite3BaseQuery) do begin +{$IFDEF ASQLITE_D6PLUS} + if Assigned(DBScreen) and (FSQLCursor) then begin + Cursor := DBScreen.Cursor; + DBScreen.Cursor := dcrSQLWait; + end; +{$endif} + RowId := -1; + + FStatement := Connection.SQLite3_PrepareResult(Connection.DBHandle, PAnsiChar(TheStatement),FParams, Sender); + + repeat + p := Connection.SQLite3_GetNextResult(Connection.DBHandle, FStatement, FParams, Sender); + if p <> nil then + FResult.Add(ResultStr, RowId); + until p = nil; + + Connection.SQLite3_CloseResult(FStatement); + FStatement := nil; + end; + finally +{$IFDEF ASQLITE_D6PLUS} + if Assigned(DBScreen) and ((Sender as TASQLite3BaseQuery).FSQLCursor) then begin + DBScreen.Cursor := Cursor; + if DBScreen.Cursor = dcrSQLWait then + DBScreen.Cursor := dcrDefault; + end; +{$endif} + + end; +end; + +function TASQLite3DB.FGetDriverDLL: string; +begin + DebugEnter('TASQLite3DB.FGetDriverDLL'); + if FDriverDLL = '' then + FDriverDLL := 'SQLite3.dll'; + FGetDriverDLL := FDriverDLL; + DebugLeave('TASQLite3DB.FGetDriverDLL'); +end; + +function TASQLite3DB.FGetDefaultExt: string; +begin + DebugEnter('TASQLite3DB.FGetDefaultExt'); + if FDefaultExt = '' then + FDefaultExt := '.sqb'; + FGetDefaultExt := FDefaultExt; + DebugLeave('TASQLite3DB.FGetDefaultExt'); +end; + +procedure TASQLite3DB.FSetDatabase(Database: string); +begin + DebugEnter('TASQLite3DB.FSetDatabase ' + Database); + FDatabase := Trim(Database); + if ExtractFileExt(FDataBase)='' Then // GPA + FDatabase:=FDataBase+FDefaultExt; // GPA + DebugLeave('TASQLite3DB.FSetDatabase'); +end; + +procedure TASQLite3DB.ShowDatabases(List: TStrings); +var + sr : TSearchRec; +begin + DebugEnter('TASQLite3DB.ShowDatabases'); + if DefaultExt = '' then + DefaultExt := '.sqb'; + if DefaultExt[1] <> '.' then + DefaultExt := '.' + DefaultExt; + if DefaultDir <> '' then + if DefaultDir[Length(DefaultDir)] <> '\' then + DefaultDir := DefaultDir + '\'; + if FindFirst(FDefaultDir + '*' + DefaultExt, faAnyFile, sr) = 0 then + begin + repeat + List.Add(sr.Name); + until FindNext(sr) <> 0; + SysUtils.FindClose(sr); + end; + DebugLeave('TASQLite3DB.ShowDatabases'); +end; + +procedure TASQLite3DB.GetTableNames(List: TStrings; SystemTables: boolean = false); +var + ResultPtr : Pointer; + ResultStr : ^Pointer; + RowCount : cardinal; + ColCount : cardinal; + ErrMsg : PAnsiChar; + i : integer; +begin + DebugEnter('TASQLite3DB.GetTableNames'); + if not FConnected then + Connected := true; + if FConnected then + begin + SQLite3_GetTable(DBHandle, PAnsiChar( + 'SELECT name FROM sqlite_master WHERE type="table" ORDER BY name'), + ResultPtr, RowCount, ColCount, ErrMsg); + + ResultStr := ResultPtr; + List.Clear; + Inc(ResultStr); // ignore header + for i := 1 to RowCount do + begin + if (CompareText('name', PAnsiChar(ResultStr^)) <> 0) then + List.Add(PAnsiChar(ResultStr^)); + Inc(ResultStr); + end; + if Assigned(ResultPtr) then SQLite3_FreeTable(ResultPtr); + end; + DebugLeave('TASQLite3DB.GetTableNames'); +end; + +procedure TASQLite3DB.GetIndexFieldNames(IndexName: string; List: TStrings); +var + ResultPtr : Pointer; + ResultStr : ^Pointer; + RowCount : cardinal; + ColCount : cardinal; + ErrMsg : PAnsiChar; + i : integer; +begin + DebugEnter('TASQLite3DB.GetIndexFieldNames'); + if not FConnected then + Connected := true; + if FConnected then + begin + SQLite3_GetTable(DBHandle, PAnsiChar( + 'PRAGMA index_info("' + IndexName + '");'), + ResultPtr, RowCount, ColCount, ErrMsg); + + ResultStr := ResultPtr; + List.Clear; + Inc(ResultStr, 5); + for i := 1 to RowCount do + begin + List.Insert(0, PAnsiChar(ResultStr^)); + Inc(ResultStr, 3); + end; + if Assigned(ResultPtr) then SQLite3_FreeTable(ResultPtr); + end; + DebugLeave('TASQLite3DB.GetIndexFieldNames'); +end; + +procedure TASQLite3DB.GetIndexNames(List: TStrings; SystemTables: boolean = false); +var + ResultPtr : Pointer; + ResultStr : ^Pointer; + RowCount : cardinal; + ColCount : cardinal; + ErrMsg : PAnsiChar; + i : integer; +begin + DebugEnter('TASQLite3DB.GetIndexNames'); + if not FConnected then + Connected := true; + if FConnected then + begin + SQLite3_GetTable(DBHandle, PAnsiChar( + 'SELECT name FROM sqlite_master WHERE type="index" ORDER BY name'), + ResultPtr, RowCount, ColCount, ErrMsg); + + ResultStr := ResultPtr; + List.Clear; + Inc(ResultStr); // ignore header + for i := 1 to RowCount do + begin + List.Add(PAnsiChar(ResultStr^)); + Inc(ResultStr); + end; + if Assigned(ResultPtr) then SQLite3_FreeTable(ResultPtr); + end; + DebugLeave('TASQLite3DB.GetIndexNames'); +end; + +procedure TASQLite3DB.GetFieldNames(TableName: string; List: TStrings); +var + ResultPtr : Pointer; + ResultStr : ^Pointer; + RowCount : cardinal; + ColCount : cardinal; + ErrMsg : PAnsiChar; + i : integer; +begin + DebugEnter('TASQLite3DB.GetFieldNames ' + Tablename); + if not FConnected then + Connected := true; + if FConnected then + begin + SQLite3_GetTable(DBHandle, PAnsiChar('PRAGMA table_info("' + TableName + '");'), + ResultPtr, RowCount, ColCount, ErrMsg); + ResultStr := ResultPtr; + List.Clear; + Inc(ResultStr, 6); // headers can be ignored + for i := 1 to RowCount do + begin + Inc(ResultStr); + List.Add(PAnsiChar(ResultStr^)); // the second field contains the fieldname + Inc(ResultStr, 5); + end; + if Assigned(ResultPtr) then SQLite3_FreeTable(ResultPtr); + end; + DebugLeave('TASQLite3DB.GetFieldNames'); +end; + +procedure TASQLite3DB.GetPrimaryKeys(TableName: string; List: TStrings); +var + ResultPtr : Pointer; + ResultStr : ^Pointer; +// PK: ^Pointer; + RowCount : cardinal; + ColCount : cardinal; + ErrMsg : PAnsiChar; + Temp : string; + i : integer; +begin + DebugEnter('TASQLite3DB.GetPrimaryKeys ' + Tablename); + if not FConnected then + Connected := true; + if FConnected then + begin + SQLite3_GetTable(DBHandle, PAnsiChar('PRAGMA table_info("' + TableName + '");'), + ResultPtr, RowCount, ColCount, ErrMsg); + ResultStr := ResultPtr; + List.Clear; + Inc(ResultStr, 6); // headers can be ignored + for i := 1 to RowCount do + begin + Inc(ResultStr); + Temp := PAnsiChar(ResultStr^); // the second field contains the fieldname + Inc(ResultStr, 4); + // the last field reveils a indicator for primary key + if PAnsiChar(ResultStr^) = '1' then + List.Add(Temp); + Inc(ResultStr); + end; + if Assigned(ResultPtr) then SQLite3_FreeTable(ResultPtr); + end; + DebugLeave('TASQLite3DB.GetPrimaryKeys'); +end; + +procedure TASQLite3DB.GetTableInfo(TableName: string; List: TList); +var + ResultPtr : Pointer; + ResultStr : ^Pointer; + RowCount : cardinal; + ColCount : cardinal; + ErrMsg : PAnsiChar; + Field : TASQLite3Field; + i : integer; +begin + DebugEnter('TASQLite3DB.GetTableInfo ' + Tablename); + if not FConnected then + Connected := true; + if FConnected then + begin + SQLite3_GetTable(DBHandle, PAnsiChar('PRAGMA table_info("' + TableName + '");'), + ResultPtr, RowCount, ColCount, ErrMsg); + ResultStr := ResultPtr; + while List.Count > 0 do + begin + TASQLite3Field(List[0]).Free; + List.Delete(0); + end; + List.Clear; + + Inc(ResultStr,6); + for i := 1 to RowCount do + begin + Field := TASQLite3Field.Create; + with Field do + begin + FieldNumber := StrToIntX(PAnsiChar(ResultStr^)); + Inc(ResultStr); + FieldName := PAnsiChar(ResultStr^); + Inc(ResultStr); + FieldType := PAnsiChar(ResultStr^); + Inc(ResultStr); + FieldNN := StrToIntX(PAnsiChar(ResultStr^)); + Inc(ResultStr); + FieldDefault := PAnsiChar(ResultStr^); + Inc(ResultStr); + FieldPK := StrToIntX(PAnsiChar(ResultStr^)); + Inc(ResultStr); + end; + List.Add(Field); + end; + if Assigned(ResultPtr) then SQLite3_FreeTable(ResultPtr); + end; + DebugLeave('TASQLite3DB.GetTableInfo'); +end; + +// retrieves the user version +function TASQLite3DB.GetUserVersion(database : string=''): integer; +var + ResultPtr : Pointer; + ResultStr : ^Pointer; + RowCount : cardinal; + ColCount : cardinal; + ErrMsg : PAnsiChar; +begin + DebugEnter('TASQLite3DB.GetTableIndexNames'); + GetUserVersion := -1; + if not FConnected then + Connected := true; + if FConnected then + begin + if database <> '' then database := database +'.'; + SQLite3_GetTable(DBHandle, PAnsiChar( + 'PRAGMA '+Database+'user_version'), + ResultPtr, RowCount, ColCount, ErrMsg); + ResultStr := ResultPtr; + Inc(ResultStr); + GetUserVersion := StrToIntX(PAnsiChar(ResultStr^)); + end; +end; + +// sets user version. +procedure TASQLite3DB.SetUserVersion(Version : integer; Database : string=''); +begin + if Database <> '' then Database := Database +'.'; + SQLite3_ExecSQL('PRAGMA '+Database+'user_version='+IntToStr(Version)); +end; + +procedure TASQLite3DB.GetTableIndexNames(TableName: string; List: TStrings); +var + ResultPtr : Pointer; + ResultStr : ^Pointer; + RowCount : cardinal; + ColCount : cardinal; + ErrMsg : PAnsiChar; + i : integer; +begin + DebugEnter('TASQLite3DB.GetTableIndexNames'); + if not FConnected then + Connected := true; + if FConnected then + begin + SQLite3_GetTable(DBHandle, PAnsiChar( + 'PRAGMA index_list("' + TableName + '");'), + ResultPtr, RowCount, ColCount, ErrMsg); + + ResultStr := ResultPtr; + List.Clear; + Inc(ResultStr, 4); // Skip header + 1st col. + for i := 1 to RowCount do + begin + List.Insert(0, PAnsiChar(ResultStr^)); + Inc(ResultStr, 3); + end; + if Assigned(ResultPtr) then SQLite3_FreeTable(ResultPtr); + end; + DebugLeave('TASQLite3DB.GetTableIndexNames'); +end; + +procedure TASQLite3DB.DBConnect(Connected: boolean); +var + ErrMsg : PAnsiChar; + DBMS : string; + rv : integer; + i : integer; // GPA +begin + DebugEnter('TASQLite3DB.DBConnect'); + +// ShowMessage(FCharEnc); + if (CompareText(FCharEnc,'utf8')=0) or (FCharEnc='') then + FUtf8 := true + else + FUtf8 := false; + + if (Connected) and (FDatabase = '') then + begin + DebugLeave('TASQLite3DB.DBConnect Exit'); + raise AsgError.Create('Missing database property'); + SQLite3_FreeMem(ErrMsg); + FConnected := false; + exit; + end; + + if not Connected then + begin + if FConnected then + begin + if DLLHandle <> 0 then + begin + Debug('freeing sqlite dll'); + if Assigned(FBeforeDisconnect) then + FBeforeDisconnect(self); + // if closed then all Datasets must be closed (GPA) + if Assigned(Owner) Then + For I:=0 to Owner.ComponentCount-1 do + if Owner.Components[I] is TASQLite3BaseQuery Then + TASQLite3BaseQuery(Owner.Components[I]).Active:=False; + + if Assigned(@SQLite3_Close) then + SQLite3_Close(DBHandle); + + {$IFNDEF SQLite_Static} + FreeLibrary(DLLHandle); + {$ENDIF} + + DLLHandle := 0; + if Assigned(FAfterDisconnect) then + FAfterDisconnect(self); + end; + FConnected := false; + DebugLeave('TASQLite3DB.DBConnect'); + exit; + end + end + else + begin + if CompareText(':memory:', Database) <> 0 then begin + if DefaultDir <> '' then begin + if DefaultDir[Length(DefaultDir)] <> '\' then + DefaultDir := DefaultDir + '\'; + DBMS := DefaultDir + Database; + end else begin + if Pos('\', Database) = 0 then + DBMS := GetCurrentDir + '\' + DataBase + else + DBMS := Database; + end; + + if FMustExist then begin + if not FileExists(DBMS) then begin + DebugLeave('TASQLite3DB.DBConnect ' + 'Database ' + DBMS + ' does not exist'); + raise EDatabaseError.Create('Database ' + DBMS + ' does not exist'); + end; + end; + end else DBMS := Database; // in memory database + + if DLLHandle = 0 then + begin + if not LoadLibs then + begin + FConnected := false; + DebugLeave('TASQLite3DB.DBConnect ' + 'Could Not load SQLite Library'); + raise AsgError.Create('Could not load SQLite library'); + end; + end; + + FConnected := true; + FVersion := SQLite3_LibVersion; + + DBHandle := nil; + ErrMsg := nil; + if Assigned(FBeforeConnect) then + FBeforeConnect(self); + +{$IFDEF ASQLITE_D6PLUS} + if Assigned(@SQLite3_Open) then + if FVersion > '3.2.5' then + rv := SQLite3_Open(PAnsiChar(AnsiToUTF8(DBMS)), DBHandle) + else +{$endif} + rv := SQLite3_Open(PAnsiChar(DBMS), DBHandle); + + if Assigned(FAfterConnect) then + FAfterConnect(self); + + if DBHandle = nil then + FConnected := false; + + if Assigned(FASQLitePragma) then + ExecPragma; + + FLastError := ErrMsg; + if ErrMsg <> nil then + SQLite3_FreeMem(ErrMsg); + // GPA Added to execute InlineSQL in case of use Connected:=True instead of Open + if ExecuteInlineSQL and Assigned(FInlineSQL) then Try // GPA + ExecStartTransaction(''); // GPA + SQLite3_ExecSQL(FInlineSQL.FSQL.Text); // GPA + Commit; // GPA + finally // GPA + ExecuteInlineSQL:=False; //GPA Assure just one execution in case of reopen + end; // GPA + end; + DebugLeave('TASQLite3DB.DBConnect'); +end; + +function TASQLite3DB.RowsAffected: integer; +begin + DebugEnter('TASQLite3DB.RowsAffected'); + if not FConnected then + Result := -1 + else + Result := SQLite3_Changes(DBHandle); + DebugLeave('TASQLite3DB.RowsAffected'); +end; + +//------------------------------------------------------------------------------ +// By Ralf, The Delphi Inspiration +//------------------------------------------------------------------------------ + +function TableExistsCallback(UserData: Pointer; ColumnCount: Integer; ColumnValues, ColumnNames: PPointer): Integer; cdecl; +begin + if AnsiStrIComp(UserData, ColumnValues^) <> 0 then + Result := 0 + else + Result := 1; // Abort +end; + +//------------------------------------------------------------------------------ + +function TASQLite3DB.TableExists(const ATableName: AnsiString): Boolean; +var + ErrMsg: PAnsiChar; +begin + try + { No WHERE clause is used in the SQL statement below. + Instead, the callback function compares without case sensitivity. } + Result := SQLite3_Exec(DBHandle, 'SELECT name FROM sqlite_master', + TableExistsCallback,Pointer(ATableName), ErrMsg) = SQLITE_ABORT; + finally + if ErrMsg <> nil then + begin + SQLite3_FreeMem(ErrMsg); + ShowError; + end; + end; +end; + +//------------------------------------------------------------------------------ +procedure TASQLite3DB.ExecStartTransaction(TransType: string); +begin +// if no transaction type available then use default from asqlitedb + if (TransType = '') then TransType := FTransactionType; + + if ((TransType = '') or (CompareText(TransType, 'DEFAULT') = 0)) then StartTransaction + else if (CompareText(TransType, 'DEFERRED') = 0) then StartDeferredTransaction + else if (CompareText(TransType, 'IMMEDIATE') = 0) then StartImmediateTransaction + else if (CompareText(TransType, 'EXCLUSIVE') = 0) then StartExclusiveTransaction + else StartTransaction; +end; + +procedure TASQLite3DB.StartTransaction; +begin + DebugEnter('TASQLite3DB.StartTransaction'); + if not FConnected then // open database if necessary + Connected := true; // trigger the 'dbconnect' event + if FConnected then SQLite3_ExecSQL('begin transaction'); + DebugLeave('TASQLite3DB.StartTransaction'); +end; + +procedure TASQLite3DB.StartDeferredTransaction; +begin + if not FConnected then // open database if necessary + Connected := true; // trigger the 'dbconnect' event + if FConnected then SQLite3_ExecSQL('begin deferred transaction'); +end; + +procedure TASQLite3DB.StartImmediateTransaction; +begin + if not FConnected then // open database if necessary + Connected := true; // trigger the 'dbconnect' event + if FConnected then SQLite3_ExecSQL('begin immediate transaction'); +end; + +procedure TASQLite3DB.StartExclusiveTransaction; +begin + if not FConnected then // open database if necessary + Connected := true; // trigger the 'dbconnect' event + if FConnected then SQLite3_ExecSQL('begin exclusive transaction'); +end; + +procedure TASQLite3DB.Open; +begin + DebugEnter('TASQLite3DB.Open'); + Connected := true; + + if DLLHandle = 0 then + Connected := false; + + DebugLeave('TASQLite3DB.Open'); +end; + +procedure TASQLite3DB.Close; +begin + DebugEnter('TASQLite3DB.Close'); + Connected := false; + DebugLeave('TASQLite3DB.Close'); +end; + +procedure TASQLite3DB.ExecPragma; +var + Cmd : string; +begin + DebugEnter('TASQLite3DB.ExecPragma'); + if not FConnected then + Connected := true; + if FConnected then + begin + if FASQLitePragma.FTempCacheSize <> 0 then + begin + cmd := FASQLitePragma.GetTempCacheSize; + SQLite3_ExecSQL(cmd); + end; + if FASQLitePragma.FDefaultCacheSize <> 0 then + begin + cmd := FASQLitePragma.GetDefaultCacheSize; + SQLite3_ExecSQL(cmd); + end; + + if FASQLitePragma.FDefaultSynchronous <> '' then + begin + cmd := FASQLitePragma.GetDefaultSynchronous; + SQLite3_ExecSQL(cmd); + end; + + if FASQLitePragma.FDefaultTempStore <> '' then + begin + cmd := FASQLitePragma.GetDefaultTempStore; + SQLite3_ExecSQL(cmd); + end; + + if FASQLitePragma.FTempStore <> '' then + begin + cmd := FASQLitePragma.GetTempStore; + SQLite3_ExecSQL(cmd); + end; + + if FASQLitePragma.FSynchronous <> '' then + begin + cmd := FASQLitePragma.GetSynchronous; + SQLite3_ExecSQL(cmd); + end; + end; + DebugLeave('TASQLite3DB.ExecPragma'); +end; + +procedure TASQLite3DB.Commit; +begin + DebugEnter('TASQLite3DB.Commit'); + if not FConnected then + Connected := true; + if FConnected then SQLite3_ExecSQL('commit transaction'); + DebugLeave('TASQLite3DB.Commit'); +end; + +procedure TASQLite3DB.RollBack; +begin + DebugEnter('TASQLite3DB.RollBack'); + if not FConnected then + Connected := true; + if FConnected then + SQLite3_ExecSQL('rollback transaction'); + DebugLeave('TASQLite3DB.RollBack'); +end; + +constructor TASQLite3DB.Create(AOwner: TComponent); +//var fn : TextFile; +begin + DebugEnter('TASQLite3DB.Create'); + Connected := false; + ASQLiteLog := nil; + ASQLitePragma := nil; + inherited Create(AOwner); + DebugLeave('TASQLite3DB.Create'); +end; + +destructor TASQLite3DB.Destroy; +//var fn : TextFile; +begin + DebugEnter('TASQLite3DB.Destroy'); + FConnected := false; + ASQLiteLog := nil; + ASQLitePragma := nil; + inherited Destroy; + DebugLeave('TASQLite3DB.Destroy'); +end; + +//============================================================================== TASQLite3BaseQuery + +function TASQLite3BaseQuery.CompareBookmarks(Bookmark1, Bookmark2: TBookmark): Integer; //MS +begin + result := sign(integer(Bookmark1^)-integer(Bookmark2^)); +end; + +// Is one or more fields a calculated field? (John Lito) +function TASQLite3BaseQuery.CalcFieldInList(const List: string): Boolean; +var i: Integer; + Fields: TList; +begin + if Pos(';', List) <> 0 then + begin + Result := False; + Fields := TList.Create; + try + GetFieldList(Fields, List); + for i := 0 to Fields.Count - 1 do + if TField(Fields[I]).FieldKind in [fkCalculated, fkLookup] then Result := True; + finally + Fields.Free; + end; + end else + Result := (FieldByName(List).FieldKind in [fkCalculated, fkLookup]); +end; + +function TASQLite3BaseQuery.Lookup(const KeyFields: string; const KeyValues: Variant; + const ResultFields: string): Variant; +var OldState: TDataSetState; +begin + Result := ''; + if Locate(KeyFields, KeyValues, []) then + begin + if CalcFieldInList(ResultFields) then GetCalcFields(PChar(FResult.GetData(FCurRec))); + OldState := SetTempState(dsFilter); + try + Result := FieldValues[ResultFields]; + finally + RestoreState(OldState); + end; + end; +end; + +{ + support routine for UTF16 +} + +procedure TASQlite3BaseQuery.DataConvert(Field: TField; Source, Dest: Pointer; + ToNative: Boolean); +const x: Word = 0; +var L: Integer; +begin + try + case Field.DataType of + ftWideString: + begin + if ToNative then + begin + L := Length(PWideChar(Source^)); + if (L <= 0) then + Move(x,Dest^,2) + else + begin + if (L <= Field.Size) then + Move(PWideChar(Source^)^, Dest^, (L+1)*2) + else + begin + Move(PWideChar(Source^)^, Dest^, Field.Size*2); + //Move(x,(PChar(Dest)+Field.Size-(Field.Size mod 2))^,2+(Field.Size mod 2)); + Move(x, (PChar(Dest)+Field.Size*2 - 2)^, 2); + end; + end; + end + else + begin + WideString(Dest^) := WideString(PWideChar(Source)); + end; + end;//ftWideString + else + begin + inherited DataConvert(Field, Source, Dest, ToNative); + end + end;//case + finally + end; +end;//DataConvert + + +{ + Register detail dataset for a master-detail relationship +} +procedure TASQLite3BaseQuery.RegisterDetailDataset(DetailDataSet: TASQLite3BaseQuery); +var + i : integer; +begin + DebugEnter('TASQLite3BaseQuery.RegisterDetailDataset'); + try + for i := 0 to DetailList.Count - 1 do + if DetailList[i] = DetailDataset then exit; + DetailList.Add(DetailDataSet); + finally + DebugLeave('TASQLite3BaseQuery.RegisterDetailDataset'); + end; +end; + +{ compatibility isue } +procedure TASQLite3BaseQuery.SQLiteMasterChanged; +begin + DebugEnter('TASQLite3BaseQuery.SQLiteMasterChanged'); + DebugLeave('TASQLite3BaseQuery.SQLiteMasterChanged'); +end; + +{ + notify that the master has changed and a requery on the detail has + to be done +} + +procedure TASQLite3BaseQuery.NotifySQLiteMasterChanged; +var + i : integer; +begin + DebugEnter('TASQLite3BaseQuery.NotifySQLiteMasterChanged'); + for i := 0 to DetailList.Count - 1 do + begin + TASQLite3BaseQuery(DetailList[i]).SQLiteMasterChanged; + end; + DebugLeave('TASQLite3BaseQuery.NotifySQLiteMasterChanged'); +end; + +{ + This function returns a string representing the value of the specified field + in SQLite format. Floating point values always use '.' as a decimal separator. + Date values use 'yyyy-mm-dd' format, unless SQLiteDateFormat is set to false, + which results in using TableDateFormat, or system dependent ShortDateFormat + if TableDateFormat is not set. Same goes for DateTime and Time values, for + which default formats are 'yyyy-mm-ss hh:nn:ss' and 'hh:nn:ss.zzz', respectively. + Setting SQLiteDateFormat to false is discouraged. + Result is quoted when necessary. +} +// added by Donnie + +function TASQLite3BaseQuery.GetFieldValue(const AField: TField; const Blobs: TList = nil): string; +var + MS: TMemoryStream; + DateTimeFormat: string; +begin + if (AField.DataSet <> Self) then + raise EInvalidArgument.Create('Only own fields are accepted'); + case AField.DataType of + ftString: +{$IFDEF ASQLITE_D6PLUS} + if Connection.FUtf8 then + Result := QuotedStr(UTF8Encode(VarToWideStr(AField.Value))) + else +{$endif} + Result := QuotedStr(AField.AsString); + ftSmallint, ftInteger, ftWord: + Result := AField.AsString; + ftFloat: + if DecimalSeparator <> '.' then +{$IFDEF ASQLITE_D6PLUS} + Result := AnsiReplaceStr(AField.AsString, DecimalSeparator, '.') +{$else} + Result := StringReplace(AField.AsString, DecimalSeparator, '.', [rfReplaceAll]) +{$endif} + else + Result := AField.AsString; + ftDate: begin + if FSQLiteDateFormat then + DateTimeFormat := 'yyyy"-"mm"-"dd' + else if TableDateFormat <> '' then + DateTimeFormat := TableDateFormat + else + DateTimeFormat := ShortDateFormat; + Result := QuotedStr(FormatDateTime(DateTimeFormat, AField.AsDateTime)); + end; + ftDateTime: begin + if FSQLiteDateFormat then + DateTimeFormat := 'yyyy"-"mm"-"dd" "hh":"nn":"ss"."zzz' + else if TableDateFormat <> '' then + DateTimeFormat := TableDateFormat + else + DateTimeFormat := ShortDateFormat + '" "' + LongTimeFormat; + Result := QuotedStr(FormatDateTime(DateTimeFormat, AField.AsDateTime)); + end; + ftTime: begin + if FSQLiteDateFormat then + DateTimeFormat := 'hh":"nn":"ss"."zzz' + else if TableDateFormat <> '' then + DateTimeFormat := TableDateFormat + else + DateTimeFormat := LongTimeFormat; + Result := QuotedStr(FormatDateTime(DateTimeFormat, AField.AsDateTime)); + end; + ftBlob, ftGraphic, ftMemo, ftFmtMemo: begin + if Blobs = nil then + raise EInvalidArgument.Create('No place to store a blob field'); + MS := TMemoryStream.Create; + TBlobField(AField).SaveToStream(MS); + Result := #2 + IntToStr(1 + Blobs.Add(MS)); + end + else + Result := QuotedStr(AField.AsString); + end; +end; // GetFieldValue + +{ + Unpack the buffer (if necessary) and convert it to a valid representation + this is necessary for sqlite since it it typeless. If typed has been + defined then the fields have to be converted to the appropiate datatype +} + +function TASQLite3BaseQuery.UnpackBuffer(Buffer: PAnsiChar; FieldType: TFieldType): TConvertBuffer; +var + TempInt : integer; + TempDouble : double; + TempBool : wordbool; + TempT : TDateTimeRec; +begin +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TASQLite3BaseQuery.UnpackBuffer: ' + Buffer); +{$ENDIF} + case FieldType of + ftString: + begin +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLite3BaseQuery.UnpackBuffer'); +{$ENDIF} + exit; + end; + ftInteger, ftSmallInt: + begin + TempInt := StrToIntX(Buffer); + Move(TempInt, result, sizeof(TempInt)); + end; + ftTime: + begin + TempT := DateTimeToNative(FieldType, StrToDateTimeX(Buffer)); + Move(TempT, result, sizeof(TDateTime)); + end; + ftDate: + begin + TempT := DateTimeToNative(FieldType, StrToDateTimeX(Buffer)); + Move(TempT, result, sizeof(TDateTime)); + end; + ftDateTime: + begin + if FSQLiteDateFormat then // aducom + TempT := DateTimeToNative(FieldType, YYYYMMDDParser(Buffer)) // jpierce + else + TempT := DateTimeToNative(FieldType, StrToDateTimeX(Buffer)); + Move(TempT, result, sizeof(TDateTime)); + end; + ftFloat, ftBCD, ftCurrency: + begin + TempDouble := StrToFloatX(FloatParser(Buffer)); + Move(TempDouble, result, sizeof(TempDouble)); + end; + +{$IFDEF ASQLITE_D6PLUS} + ftBoolean: + begin + TempBool := StrToBool(Buffer); + Move(TempBool, result, sizeof(TempBool)); + end; +{$ENDIF} + ftMemo, ftGraphic, ftBlob, ftFMTMemo: // pointer to stream + begin + TempInt := StrToInt(Buffer); + Move(TempInt, result, sizeof(TempInt)); + end; + end; +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLite3BaseQuery.UnpackBuffer'); +{$ENDIF} +end; + +{ This method is called by TDataSet.Open and also when FieldDefs need to + be updated (usually by the DataSet designer). Everything which is + allocated or initialized in this method should also be freed or + uninitialized in the InternalClose method. } + +constructor TASQLite3BaseQuery.Create(AOwner: TComponent); +begin + DebugEnter('TASQLite3BaseQuery.Create'); + MaxStrLen := 0; + FSQL := TStringList.Create; + FParams := TParams.Create(Self); + DetailList := TList.Create; + FConnection := nil; + FResult := nil; + GetMem(ResultStr, MaxBuf); + SQLCursor := true; + SQLiteDateFormat := true; + TypeLess := false; + ReadOnly := false; + inherited; + DebugLeave('TASQLite3BaseQuery.Create'); +end; + +function TASQLite3BaseQuery.CreateBlobStream(Field: TField; Mode: TBlobStreamMode): TStream; +begin + Result := TASQLite3BlobStream.Create(Field as TBlobField, Mode); +end; + +destructor TASQLite3BaseQuery.Destroy; +begin + DebugEnter('TASQLite3BaseQuery.Destroy'); +// Close; +// inherited Destroy; + + if Assigned(FSQL) then begin + TStringList(FSQL).OnChange := nil; + FSQL.Free; + end; + FSQL := nil; + + if Assigned(FParams) then + begin + FParams.Free; + FParams := nil; + end; + + if Assigned(DetailList) then + DetailList.Free; + DetailList := nil; + + if Assigned(FConnection) then + FConnection := nil; + + if Assigned(ResultStr) then + FreeMem(ResultStr); + ResultStr := nil; + + if Assigned(FResult) then + FResult.Free; + FResult := nil; + + inherited; + DebugLeave('TASQLite3BaseQuery.Destroy'); +end; + +procedure TASQLite3BaseQuery.StartTransaction; +begin + if Assigned(FConnection) then + FConnection.ExecStartTransaction(FTransActionType); +end; + +procedure TASQLite3BaseQuery.StartDeferredTransaction; +begin + if Assigned(FConnection) then + FConnection.StartDeferredTransaction; +end; + +procedure TASQLite3BaseQuery.StartImmediateTransaction; +begin + if Assigned(FConnection) then + FConnection.StartImmediateTransaction; +end; + +procedure TASQLite3BaseQuery.StartExclusiveTransaction; +begin + if Assigned(FConnection) then + FConnection.StartExclusiveTransaction; +end; + +procedure TASQLite3BaseQuery.Commit; +begin + if Assigned(FConnection) then + FConnection.Commit; +end; + +procedure TASQLite3BaseQuery.RollBack; +begin + if Assigned(FConnection) then + FConnection.RollBack; +end; + +//function TASQLite3BaseQuery.LocateNearest(const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions): Boolean; + //begin + //end; + +// implementation by J Bannon, implementing partial key too. +function TASQLite3BaseQuery.Locate(const KeyFields: string; + const KeyValues: variant; Options: TLocateOptions): boolean; +//loCaseInsensitive, loPartialKey +var + bOk : boolean; + i, j, p : integer; + Fields, SearchValue: string; //Variable SearchValue added by bobmitch + FieldList : TStringList; + DebugStr : string; + DoEnableControls : boolean; +begin + DebugEnter('TASQLite3BaseQuery.Locate ' + Keyfields); + DoEnableControls := not ControlsDisabled; {used to determine whether to EnableControls at end of function} + DisableControls; + FieldList := TStringList.Create; + bOk := false; + try + Fields := KeyFields; + p := pos(';', Fields); + while p > 0 do + begin + FieldList.Add(Copy(Fields, 1, p - 1)); + System.Delete(Fields, 1, p); + p := pos(';', Fields); + end; + if Fields <> '' then + FieldList.Add(Fields); + + First; + for i := 1 to FResult.Data.Count do + begin + SetRecNo(i); + bOk := true; + for j := 0 to FieldList.Count - 1 do + begin + if loCaseInsensitive in Options then + begin + if FieldList.Count = 1 then + begin //Lines 2303 - 2338 by bobmitch, replaces original lines 2303 - 2336 + SearchValue := VarToStr(KeyValues); + if (loPartialKey in Options) and (Length(SearchValue) <= Length(FieldByName(FieldList[j]).AsString)) then + bOk := CompareText(Copy(FieldByName(FieldList[j]).AsString, 1, Length(SearchValue)), SearchValue) = 0 + else + bOk := CompareText(FieldByName(FieldList[j]).AsString, SearchValue) = 0 + end {end loCaseInsensitive in Options AND FieldList.Count = 1} + else + begin + SearchValue := VarToStr(KeyValues[j]); + if (loPartialKey in Options) and (Length(SearchValue) <= Length(FieldByName(FieldList[j]).AsString)) then + bOk := CompareText(Copy(FieldByName(FieldList[j]).AsString, 1, Length(SearchValue)), SearchValue) = 0 + else + bOk := CompareText(FieldByName(FieldList[j]).AsString, SearchValue) = 0 + end {end loCaseInsensitive in Options AND FieldList.Count greater than 1} + end {end loCaseInsensitive in Options} + else + begin {begin loCaseInsensitive NOT in Options} + if FieldList.Count = 1 then + begin + SearchValue := VarToStr(KeyValues); + if (loPartialKey in Options) and (Length(SearchValue) <= Length(FieldByName(FieldList[j]).AsString)) then + bOk := Copy(FieldByName(FieldList[j]).AsString, 1, Length(SearchValue)) = SearchValue + else + bOk := FieldByName(FieldList[j]).AsString = SearchValue + end {end loCaseInsensitive NOT in Options AND FieldList.Count = 1} + else + begin + SearchValue := VarToStr(KeyValues[j]); + if (loPartialKey in Options) and (Length(SearchValue) <= Length(FieldByName(FieldList[j]).AsString)) then + bOk := Copy(FieldByName(FieldList[j]).AsString, 1, Length(SearchValue)) = SearchValue + else + bOk := FieldByName(FieldList[j]).AsString = SearchValue + end; {end loCaseInsensitive NOT in Options AND FieldList.Count greater than 1} + end; {end loCaseInsensitive NOT in Options} + if bOk = false then + break; + end; {end for j := 0 to FieldList.Count - 1} + if bOk then + begin + break; + end; + end; {end for i := 1 to FResult.Data.Count} + if bOk then + begin + Locate := true; + DebugStr := 'TASQLite3BaseQuery.Locate true'; + end + else + begin + Locate := false; + DebugStr := 'TASQLite3BaseQuery.Locate false'; + end; + finally + FieldList.Free; + if DoEnableControls then {restore original state of the controls} + EnableControls; + DebugLeave(DebugStr); + end; +end; + + +function TASQLite3BaseQuery.GetDataSource: TDataSource; + +begin + DebugEnter('TASQLite3BaseQuery.GetDataSource'); + Result := FMasterSource; + DebugLeave('TASQLite3BaseQuery.GetDataSource'); +end; + +procedure TASQLite3BaseQuery.SetSQLiteDateFormat(const Value: boolean); +begin + FSQLiteDateFormat := Value; +end; + +procedure TASQLite3BaseQuery.SetDataSource(Value: TDataSource); +begin + DebugEnter('TASQLite3BaseQuery.SetDataSource'); + if IsLinkedTo(Value) then + DatabaseError('circular references are not allowed', Self); + FMasterSource := Value; + DebugLeave('TASQLite3BaseQuery.SetDataSource'); +end; + +function TASQLite3BaseQuery.GetMasterFields: string; +begin + DebugEnter('TASQLite3BaseQuery.GetMasterFields'); + Result := FMasterFields; //FMasterLink.FieldNames; + DebugLeave('TASQLite3BaseQuery.GetMasterFields'); +end; + +procedure TASQLite3BaseQuery.SetMasterFields(const Value: string); +begin + DebugEnter('TASQLite3BaseQuery.SetMasterFields ' + Value); + FMasterFields := Value; // FMasterLink.FieldNames := Value; + DebugLeave('TASQLite3BaseQuery.SetMasterFields'); +end; + //Checks the State and Results a defined Buffer; + +function TASQLite3BaseQuery.GetActiveBuffer(var Buffer: PAnsiChar): boolean; +begin +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TASQLite3BaseQuery.GetActiveBuffer'); +{$ENDIF} + case State of + dsBrowse: if IsEmpty then + Buffer := nil + else + Buffer := ActiveBuffer; + + dsEdit: Buffer := ActiveBuffer; + dsInsert: Buffer := ActiveBuffer; + dsFilter: Buffer := ActiveBuffer; //FFilterBuffer; + dsCalcFields: Buffer := CalcBuffer; + else + Buffer := nil; + end; + Result := Buffer <> nil; +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLite3BaseQuery.GetActiveBuffer ' + PAnsiChar(Buffer)); +{$ENDIF} +end; + +function TASQLite3BaseQuery.GetNativeFieldSize(FieldNo: integer): integer; +begin + DebugEnter('TASQLite3BaseQuery.GetNativeFieldSize'); + Result := 0; + case FieldDefs.Items[FieldNo - 1].Datatype of + ftString: Result := FieldDefs.Items[FieldNo - 1].Size + 1; + ftWideString: Result := FieldDefs.Items[FieldNo - 1].Size + 1; + ftInteger, ftSmallInt, ftDate, ftTime: Result := 12; + ftDateTime: Result := 20; + ftFloat, ftBCD, ftCurrency: Result := 12; + ftBoolean: Result := 12; + ftGraphic, ftMemo, ftBlob, ftFmtMemo: Result := 12; // space for memory handles + else + raise AsgError.Create('Fieldtype of Field "' + FieldDefs.Items[FieldNo - 1].Name + + '" not supported!'); + end; + DebugLeave('TASQLite3BaseQuery.GetNativeFieldSize'); +end; + +function TASQLite3BaseQuery.GetFieldSize(FieldNo: integer): integer; +begin +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TASQLite3BaseQuery.GetFieldSize'); +{$ENDIF} + // try + Result := 0; + case FieldDefs.Items[FieldNo - 1].Datatype of + ftString: Result := FieldDefs.Items[FieldNo - 1].Size+ 1 ; // GPA - Warning UTF-8 length can be potentially > Ansi length + ftWideString: Result := FieldDefs.Items[FieldNo - 1].Size+ 1 ; + ftInteger, ftSmallInt, ftDate, ftTime: Inc(Result, sizeof(integer)); + ftDateTime: Inc(Result, sizeof(TDateTime)); + ftFloat, ftBCD, ftCurrency: Inc(Result, sizeof(double)); + ftBoolean: Inc(Result, sizeof(wordbool)); + ftGraphic, ftMemo, ftBlob, ftFmtMemo: Inc(Result, sizeof(pointer)); + else + raise AsgError.Create('Fieldtype of Field "' + FieldDefs.Items[FieldNo - 1].Name + + '" not supported!'); + end; +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLite3BaseQuery.GetFieldSize'); +{$ENDIF} +end; + +function TASQLite3BaseQuery.GetFieldSize(Field: TField): integer; +begin +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TASQLiteBaseQuery.GetFieldSize'); +{$ENDIF} + // try + Result := 0; + case Field.DataType of + ftString: Result := Field.Size + 1; + ftWideString: Result := Field.Size + 1; + ftInteger, ftSmallInt, ftDate, ftTime: Inc(Result, sizeof(integer)); + ftDateTime: Inc(Result, sizeof(TDateTime)); + ftFloat, ftBCD, ftCurrency: Inc(Result, sizeof(double)); + ftBoolean: Inc(Result, sizeof(wordbool)); + ftGraphic, ftMemo, ftBlob, ftFmtMemo: Inc(Result, sizeof(pointer)); + else + raise AsgError.Create('Fieldtype of Field "' + Field.FieldName + + '" not supported!'); + end; +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLiteBaseQuery.GetFieldSize'); +{$ENDIF} +end; + +function TASQLite3BaseQuery.GetFieldOffset(FieldNo: integer): integer; +var + i : integer; + Offset : integer; +begin +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TASQLite3BaseQuery.GetFieldOffset'); +{$ENDIF} + Offset := 0; + if FieldNo > 1 then + begin + for i := 1 to FieldNo - 1 do + OffSet := OffSet + GetFieldSize(i); + end; + GetFieldOffset := Offset; +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLite3BaseQuery.GetFieldOffset'); +{$ENDIF} +end; + +function TASQLite3BaseQuery.GetCalcFieldOffset(Field: TField): integer; +var + i : integer; + Offset : integer; +begin + +// calcfieldoffset is appended to record (after bookmarkinfo) + +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TASQLiteBaseQuery.GetCalcFieldOffset'); +{$ENDIF} + Offset := FRecBufSize + sizeof(TRecInfo); // startlocation of offsetbuffer + for i := 0 to FieldList.Count - 1 do begin + if CompareText(FieldList[i].FieldName, Field.FieldName) = 0 then begin + GetCalcFieldOffset := Offset; + exit; + end; + if FieldList[i].Calculated then + OffSet := OffSet + GetFieldSize(Field); + end; + GetCalcFieldOffset := Offset; +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLiteBaseQuery.GetCalcFieldOffset'); +{$ENDIF} +end; + +procedure TASQLite3BaseQuery.SetSQL(const Value: TStrings); +begin + DebugEnter('TASQLite3BaseQuery.SetSQL'); + Close; + if Assigned(FSQL) then + FSQL.Assign(Value) + else + FSQL := Value; + DebugLeave('TASQLite3BaseQuery.SetSQL'); +end; + +procedure TASQLite3BaseQuery.LoadQueryData; +begin + DebugEnter('TASQLite3BaseQuery.LoadQueryData'); + if Connection.FConnected then begin + Connection.SQLite3_execute(Connection.DBHandle, PAnsiChar(FPrepared), FParams, self); + end; + DebugLeave('TASQLite3BaseQuery.LoadQueryData'); +end; + +procedure TASQLite3BaseQuery.InternalOpen; +begin + DebugEnter('TASQLite3BaseQuery.InternalOpen'); +{$IFDEF ASQLITE_D6PLUS} + if UniDirectional then + SetUnidirectional(true) + else + SetUniDirectional(false); +{$endif} + MaxStrLen := 0; + if (Connection = nil) then + begin // check to see if a valid database + raise AsgError.Create('no database connection'); + end + else + begin + + if Connection.Connected = false then // open database if necessary + Connection.Connected := true; // trigger the 'dbconnect' event + + if (Connection.Connected) and (Connection.DLLHandle <> 0) then + if Assigned(MasterSource) then + begin // notify master about existance! + if (MasterSource.DataSet <> nil) then + begin + if CompareText(Copy(MasterSource.DataSet.ClassName, 1, 9), 'TASQLite3') = 0 then + begin + TASQLite3BaseQuery(MasterSource.DataSet).RegisterDetailDataset( + TASQLite3BaseQuery(Self)); + end + else + begin + raise AsgError.Create('master dataset ' + MasterSource.DataSet.ClassName + + ' is not of TSQLiteBaseQuery type'); + DebugLeave('TASQLite3BaseQuery.InternalOpen'); + exit; + end; + end + else + begin + raise AsgError.Create('master dataset undefined'); + DebugLeave('TASQLite3BaseQuery.InternalOpen'); + exit; + end; + end; + + if not FUniDir then begin + { Load the result into a resultlist } + FResult := TFResult.Create(Self); + LoadQueryData; + end else begin + FResult := TFResult.Create(Self); + FStatement := Connection.SQLite3_PrepareResult(Connection.DBHandle, PAnsiChar(FPrepared),FParams, self); +// ptr := Connection.SQLite3_GetNextResult(Connection.DBHandle, FStatement, FParams,self); + end; + + { Initialize our internal position. + We use -1 to indicate the "crack" before the first record. } + FCurRec := -1; + + { Initialize an offset value to find the TRecInfo in each buffer } + FRecInfoOfs := MaxStrLen; + + { Calculate the size of the record buffers. + Note: This is NOT the same as the RecordSize property which + only gets the size of the data in the record buffer } + FRecBufSize := FRecInfoOfs + SizeOf(TRecInfo); + + { Tell TDataSet how big our Bookmarks are (REQUIRED) } + BookmarkSize := SizeOf(integer); + + { Initialize the FieldDefs } + InternalInitFieldDefs; + + { Create TField components when no persistent fields have been created } + if DefaultFields then + CreateFields; + + { Bind the TField components to the physical fields } + BindFields(true); + + end; + DebugLeave('TASQLite3BaseQuery.InternalOpen'); +end; + +procedure TASQLite3BaseQuery.InternalClose; +begin + DebugEnter('TASQLite3BaseQuery.InternalClose'); + + if (FUniDir) and (FStatement <> nil) and (active) then begin + Connection.SQLite3_CloseResult(FStatement); + FStatement := nil; + end; + + if Assigned(FResult) then + begin + FResult.Free; + FResult := nil; + end; + + { Destroy the TField components if no persistent fields } + if DefaultFields then + DestroyFields; + + { Reset these internal flags } + // FLastBookmark := 0; + FCurRec := -1; + DebugLeave('TASQLite3BaseQuery.InternalClose'); +end; + +{ This property is used while opening the dataset. + It indicates if data is available even though the + current state is still dsInActive. } + +function TASQLite3BaseQuery.IsCursorOpen: boolean; +begin + Result := Assigned(FResult); +end; + +procedure TASQLite3BaseQuery.OpenCursor(InfoQuery: Boolean); +begin + if InfoQuery then + Begin + if Assigned(FConnection) Then Begin + InternalOpen; + InternalClose; + End; + End + else if State <> dsOpening then + inherited OpenCursor(InfoQuery); +end; + +procedure TASQLite3BaseQuery.InternalInitFieldDefs; +begin +// Just here for compatibility +end; + +{ This is the exception handler which is called if an exception is raised + while the component is being stream in or streamed out. In most cases this + should be implemented useing the application exception handler as follows. } + +procedure TASQLite3BaseQuery.InternalHandleException; +begin + DebugEnter('TASQLite3BaseQuery.InternalHandleException'); + ApplicationHandleException(Self); + DebugLeave('TASQLite3BaseQuery.InternalHandleException'); +end; + + { Bookmarks } + { ========= } + +{ In this sample the bookmarks are stored in the Object property of the + TStringList holding the data. Positioning to a bookmark just requires + finding the offset of the bookmark in the TStrings.Objects and using that + value as the new current record pointer. } + +procedure TASQLite3BaseQuery.InternalGotoBookmark(Bookmark: Pointer); +var + Index : integer; +begin + DebugEnter('TASQLite3BaseQuery.InternalGotoBookmark'); +// inherited; + Index := FResult.IndexOf(TObject(PInteger(Bookmark)^)); + if Index <> -1 then + FCurRec := Index + else + if not FUniDir then DatabaseError('Bookmark not found'); + DebugLeave('TASQLite3BaseQuery.InternalGotoBookmark'); +end; + +function TASQLite3BaseQuery.BookmarkValid(Bookmark: Pointer): boolean; +var + Index : integer; +begin + DebugEnter('TASQLite3BaseQuery.BookmarkValid'); + Index := FResult.IndexOf(TObject(PInteger(Bookmark)^)); + if Index <> -1 then + BookmarkValid := true + else + BookmarkValid := false; + DebugLeave('TASQLite3BaseQuery.BookmarkValid'); +end; + +{ This function does the same thing as InternalGotoBookmark, but it takes + a record buffer as a parameter instead } + +procedure TASQLite3BaseQuery.InternalSetToRecord(Buffer: PAnsiChar); +begin + DebugEnter('TASQLite3BaseQuery.InternalSetToRecord'); + InternalGotoBookmark(@PRecInfo(Buffer + FRecInfoOfs).Bookmark); +// NotifySQLiteMasterChanged; + DebugLeave('TASQLite3BaseQuery.InternalSetToRecord'); +end; + +{ Bookmark flags are used to indicate if a particular record is the first + or last record in the dataset. This is necessary for "crack" handling. + If the bookmark flag is bfBOF or bfEOF then the bookmark is not actually + used; InternalFirst, or InternalLast are called instead by TDataSet. } + +function TASQLite3BaseQuery.GetBookmarkFlag(Buffer: PAnsiChar): TBookmarkFlag; +begin + DebugEnter('TASQLite3BaseQuery.GetBookmarkFlag'); + Result := PRecInfo(Buffer + FRecInfoOfs).BookmarkFlag; + DebugLeave('TASQLite3BaseQuery.GetBookmarkFlag'); +end; + +procedure TASQLite3BaseQuery.SetBookmarkFlag(Buffer: PAnsiChar; Value: TBookmarkFlag); +begin + DebugEnter('TASQLite3BaseQuery.SetBookmarkFlag'); + PRecInfo(Buffer + FRecInfoOfs).BookmarkFlag := Value; + DebugLeave('TASQLite3BaseQuery.SetBookmarkFlag'); +end; + +{ These methods provide a way to read and write bookmark data into the + record buffer without actually repositioning the current record } + +procedure TASQLite3BaseQuery.GetBookmarkData(Buffer: PAnsiChar; Data: Pointer); +begin + DebugEnter('TASQLite3BaseQuery.GetBookmarkData'); + PInteger(Data)^ := PRecInfo(Buffer + FRecInfoOfs).Bookmark; + DebugLeave('TASQLite3BaseQuery.GetBookmarkData'); +end; + +procedure TASQLite3BaseQuery.SetBookmarkData(Buffer: PAnsiChar; Data: Pointer); +begin + DebugEnter('TASQLite3BaseQuery.SetBookmarkData'); + PRecInfo(Buffer + FRecInfoOfs).Bookmark := PInteger(Data)^; + DebugLeave('TASQLite3BaseQuery.SetBookmarkData'); +end; + + { Record / Field Access } + { ===================== } + +{ This method returns the size of just the data in the record buffer. + Do not confuse this with RecBufSize which also includes any additonal + structures stored in the record buffer (such as TRecInfo). } + +function TASQLite3BaseQuery.GetRecordSize: word; +begin + DebugEnter('TASQLite3BaseQuery.GetRecordSize'); + Result := MaxStrLen; + DebugLeave('TASQLite3BaseQuery.GetRecordSize'); +end; + +{ TDataSet calls this method to allocate the record buffer. Here we use + FRecBufSize which is equal to the size of the data plus the size of the + TRecInfo structure. } + +function TASQLite3BaseQuery.AllocRecordBuffer: PAnsiChar; +begin + DebugEnter('TASQLiteBaseQuery.AllocRecordBuffer'); + GetMem(Result, FRecBufSize + CalcFieldsSize + sizeof(TRecinfo) + 5); + FillChar(Result^, FRecBufSize + CalcFieldsSize + sizeof(TRecinfo) + 5, 0); +// FillChar(Result^, GetRecordSize+CalcFieldsSize+10, 0); + DebugLeave('TASQLiteBaseQuery.AllocRecordBuffer'); +end; + +{ Again, TDataSet calls this method to free the record buffer. + Note: Make sure the value of FRecBufSize does not change before all + allocated buffers are freed. } + +procedure TASQLite3BaseQuery.FreeRecordBuffer(var Buffer: PAnsiChar); +begin + DebugEnter('TASQLiteBaseQuery.FreeRecordBuffer'); + try FreeMem(Buffer); //, FRecBufSize+CalcFieldsSize+sizeof(TRecinfo)); + except end; +// Buffer := nil; + DebugLeave('TASQLiteBaseQuery.FreeRecordBuffer'); +end; + +{ This multi-purpose function does 3 jobs. It retrieves data for either + the current, the prior, or the next record. It must return the status + (TGetResult), and raise an exception if DoCheck is True. } + +function TASQLite3BaseQuery.GetRecord(Buffer: PAnsiChar; GetMode: TGetMode; + DoCheck: boolean): TGetResult; +var + ptr : pointer; +begin + DebugEnter('TASQLite3BaseQuery.GetRecord'); +// if Active then CheckBrowseMode; + if (not (FUniDir)) and (FResult.Count < 1) then + Result := grEOF + else + begin + Result := grOK; + case GetMode of + gmNext: + if FUniDir then begin +// ptr := Connection.SQLite3_GetNextResult(Connection.DBHandle, FStatement, FParams,self); +// if ptr <> nil then +// Move(ptr^, Buffer^, MaxStrLen) +// else +// Result := grEOF; + end else begin + if FCurRec >= RecordCount - 1 then + Result := grEOF + else + Inc(FCurRec); + end; + gmPrior: begin + if FUniDir then +// Result := grOK + raise AsgError.Create('operation PRIOR not allowed on unidirectional dataset') + else begin + if FCurRec <= 0 then + Result := grBOF + else + Dec(FCurRec); + end; + end; + gmCurrent: + begin + if (FCurRec < 0) or (FCurRec >= RecordCount) then + Result := grError; + end; + end; + if Result = grOK then + begin + if FUniDir then begin + ptr := Connection.SQLite3_GetNextResult(Connection.DBHandle, FStatement, FParams,self); + if ptr <> nil then begin + Move(ptr^, ActiveBuffer^, MaxStrLen); + end else Result := grEOF; + end else begin + ptr := FResult.GetData(FCurRec); + if FResult.Count = 0 then + InternalInitRecord(Buffer) + else + if ptr <> nil then Move(ptr^, Buffer^, MaxStrLen); // albert 17/11/2004 + end; + + with PRecInfo(Buffer + FRecInfoOfs)^ do + begin + BookmarkFlag := bfCurrent; + Bookmark := FResult.GetBookMark(FCurRec); + end; + + if CalcFieldsSize > 0 then + GetCalcFields(Buffer) + + end + else if (Result = grError) and DoCheck then + DatabaseError('No Records'); + end; + DebugLeave('TASQLite3BaseQuery.GetRecord: ' + Buffer); +end; + +{ This routine is called to initialize a record buffer. } + +procedure TASQLite3BaseQuery.InternalInitRecord(Buffer: PAnsiChar); +var + i : integer; + TempT : TDateTimeRec; + Stream : TMemoryStream; +begin + DebugEnter('TASQLite3BaseQuery.InternalInitRecord'); + + for i := 0 to FieldDefs.Count - 1 do + begin + if not (Fields[i].Calculated) then begin + case FieldDefs.Items[i].Datatype of + ftMemo, ftGraphic, ftBlob, ftFmtMemo: begin + Stream := TMemoryStream.Create; + Move(Pointer(Stream), (Buffer + GetFieldOffset(i + 1))^, sizeof(Pointer)); + end; + ftString: PAnsiChar(Buffer + GetFieldOffset(i + 1))^ := #0; + ftBoolean: pBoolean(Buffer + GetFieldOffset(i + 1))^ := false; + ftFloat: pFloat(Buffer + GetFieldOffset(i + 1))^ := 0; + ftSmallInt: pSmallInt(Buffer + GetFieldOffset(i + 1))^ := 0; + ftInteger: pInteger(Buffer + GetFieldOffset(i + 1))^ := integer(nil); + ftCurrency: pFloat(Buffer + GetFieldOffset(i + 1))^ := 0; + ftDate: + begin + TempT := DateTimeToNative(ftDate, now); + Move(TempT, (Buffer + GetFieldOffset(i + 1))^, sizeof(TDateTime)); + end; + ftTime: + begin + TempT := DateTimeToNative(ftTime, now); + Move(TempT, (Buffer + GetFieldOffset(i + 1))^, sizeof(TDateTime)); + end; + ftDateTime: + begin + TempT := DateTimeToNative(ftDateTime, now); + Move(TempT, (Buffer + GetFieldOffset(i + 1))^, sizeof(TDateTime)); + end; + end; + end; + end; + +// if FMasterSource <> nil then begin +// FMasterSource.DataSet.FieldByName() +// end; + + + DebugLeave('TASQLite3BaseQuery.InternalInitRecord'); +end; + +{ Here we copy the data from the record buffer into a field's buffer. + This function, and SetFieldData, are more complex when supporting + calculated fields, filters, and other more advanced features. + See TBDEDataSet for a more complete example. } + +function TASQLite3BaseQuery.GetFieldData(Field: TField; Buffer: Pointer): boolean; +var +// SrcBuffer : PAnsiChar; + MyBuf : string; + + SrcBuffer : PAnsiChar; +// MasterField : TField; +// EqualPos : Integer; +/// MasterFieldName, DetailFieldName : string; + +begin +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TASQLite3BaseQuery.GetFieldData'); +{$ENDIF} + if Field.FieldNo > 0 then begin + // load masterfield data if there's a master-detail relationship + // key-data should not be NULL!! + if pos(UpperCase(Field.FieldName), UpperCase(FMasterFields)) > 0 then begin + MasterSource.DataSet.GetFieldData(Field, Buffer); + Result := true; + exit; + end; + +// if FMasterFields <> '' then begin +// EqualPos := Pos('=',FMasterFields); +// DetailFieldName := Copy(FMasterFields,1, EqualPos - 1); +// MasterFieldName := Copy(FMasterFields,EqualPos + 1, Length(FMasterFields) - EqualPos -1); +// if UpperCase(Field.FieldName) = UpperCase(DetailFieldName) then begin +// // locate and get master field by name +// MasterField := MasterSource.DataSet.FieldByName(MasterFieldName); +// MasterSource.DataSet.GetFieldData(MasterField, Buffer); +// Result := true; +// exit; +// end; +// end; + + Result := true; // indicates NotNull + if GetActiveBuffer(SrcBuffer) then begin + if (Assigned(Buffer)) and (Assigned(SrcBuffer)) then begin + Move((SrcBuffer + GetFieldOffset(Field.FieldNo))^, Buffer^, GetFieldSize(Field.FieldNo)); + if Field.DataType = ftString then begin // GPA + MyBuf := PChar(Buffer); +{$IFDEF ASQLITE_D6PLUS} + if Connection.FUtf8 then + Move(Utf8ToAnsi(MyBuf)[1], Buffer^, Length(MyBuf)) // GPA - Warning UTF-8 length can be potentially > Ansi length + else +{$endif} + Move(MyBuf[1], Buffer^, Length(MyBuf)); // GPA - Warning UTF-8 length can be potentially > Ansi length + PAnsiChar(PAnsiChar(Buffer) + GetFieldSize(Field.FieldNo))^ := #0; // dev + end; + Result := true; + exit; + end; + if Assigned(SrcBuffer) then + if (Field.DataType <> ftDateTime) and ((SrcBuffer + GetFieldOffset(Field.FieldNo))^ = #0) then + Result := false + end else begin + if assigned(Buffer) then PAnsiChar(Buffer)^ := #0; + Result := false; + end; + end else begin {calcfields} + Result := GetActiveBuffer(SrcBuffer); + if Result and (State in [dsBrowse, dsEdit, dsInsert, dsCalcFields, dsBlockRead]) then begin + if (Assigned(Buffer)) then + Move((SrcBuffer + GetCalcFieldOffset(Field))^, Buffer^, GetFieldSize(Field)); + end; + end; +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLite3BaseQuery.GetFieldData: ' + PAnsiChar(Buffer)); +{$ENDIF} +end; + +// The next two functions are added to increase compatibility with +// components that require it (like DevExpress) + +function TASQLite3BaseQuery.GetFieldData(FieldNo: integer; Buffer: Pointer): boolean; +begin + Result := GetFieldData(FieldByNumber(FieldNo), Buffer); +end; + +{$IFDEF ASQLITE_D6PLUS} +//function TASQLite3BaseQuery.GetFieldData(Field: TField; Buffer: Pointer; +// NativeFormat: boolean): boolean; +//begin +// Result := GetFieldData(Field, Buffer); +//end; +{$ENDIF} + +{ returns the field data back to callee } + +procedure TASQLite3BaseQuery.SetFieldData(Field: TField; Buffer: Pointer); +var + DestBuffer : PAnsiChar; + MyBuf : string; +begin + DebugEnter('TASQLite3BaseQuery.SetFieldData'); + GetActiveBuffer(DestBuffer); + if (Field.FieldNo > 0) and (Assigned(Buffer)) and (Assigned(DestBuffer)) then + begin + if Field.DataType = ftString then + Begin // GPA + MyBuf := PChar(Buffer); +{$IFDEF ASQLITE_D6PLUS} + if Connection.FUtf8 then + MyBuf := AnsiToUTF8(MyBuf); +{$endif} + if Length(MyBuf)>0 then + Move(MyBuf[1], (DestBuffer + GetFieldOffset(Field.FieldNo))^, Length(MyBuf)+1) // GPA - Warning UTF-8 length can be potentially > Ansi length + else begin + MyBuf := #0; + Move(MyBuf[1], (DestBuffer + GetFieldOffset(Field.FieldNo))^, Length(MyBuf)); // GPA - Warning UTF-8 length can be potentially > Ansi length + end; + End + else + Move(Buffer^, (DestBuffer + GetFieldOffset(Field.FieldNo))^, GetFieldSize(Field.FieldNo)); + end else {fkCalculated, fkLookup} begin + if (State in [dsBrowse, dsEdit, dsInsert, dsCalcFields, dsBlockRead]) then begin + if (Field.FieldNo < 0) and (Assigned(Buffer)) and (Assigned(DestBuffer)) then begin + Move(Buffer^, (CalcBuffer + GetCalcFieldOffset(Field))^, GetFieldSize(Field)); + end; + end; + end; + + if not (State in [dsCalcFields, dsFilter, dsNewValue]) then + DataEvent(deFieldChange, Longint(Field)); + DebugLeave('TASQLite3BaseQuery.SetFieldData'); +end; + +{ Record Navigation / Editing } +{ =========================== } + +{ This method is called by TDataSet.First. Crack behavior is required. + That is we must position to a special place *before* the first record. + Otherwise, we will actually end up on the second record after Resync + is called. } + +procedure TASQLite3BaseQuery.InternalFirst; +begin + DebugEnter('TASQLite3BaseQuery.InternalFirst'); + FCurRec := -1; + DebugLeave('TASQLite3BaseQuery.InternalFirst'); +end; + +{ Again, we position to the crack *after* the last record here. } + +procedure TASQLite3BaseQuery.InternalLast; +begin + DebugEnter('TASQLite3BaseQuery.InternalLast'); + FCurRec := FResult.Count; + DebugLeave('TASQLite3BaseQuery.InternalLast'); +end; + +function TASQLite3BaseQuery.GetLastInsertRow: integer; +begin + if Assigned(Connection) then + result := Connection.SQLite3_LastInsertRow(Connection.DBHandle) + else + result := -1; +end; + +{ This method is called by TDataSet.Post. } + +procedure TASQLite3BaseQuery.InternalPost; +var + ptr : Pointer; +begin + DebugEnter('TASQLite3BaseQuery.InternalPost'); + FSaveChanges := true; + { For inserts, just update the data in the string list } + if State = dsEdit then + begin + if FUniDir then + Connection.SQLite3_GetNextResult(Connection.DBHandle, FStatement, FParams,self) + else begin + ptr := FResult.GetData(FCurrec); + if ptr <> nil then + move(ActiveBuffer^, ptr^, FRecBufSize); // albert 17/11/2004 + end;//2006 + end + else + begin + { If inserting (or appending), increment the bookmark counter and + store the data } + FResult.Insert(FCurRec, ActiveBuffer, + Connection.SQLite3_LastInsertRow(Connection.DBHandle)); + end; + DebugLeave('TASQLite3BaseQuery.InternalPost'); +end; + +{ This method is similar to InternalPost above, but the operation is always + an insert or append and takes a pointer to a record buffer as well. } + +procedure TASQLite3BaseQuery.InternalAddRecord(Buffer: Pointer; Append: boolean); +begin + DebugEnter('TASQLite3BaseQuery.InternalAddRecord'); + if FReadOnly then + raise AsgError.Create('Cannot write to a read-only dataset'); + + FSaveChanges := true; + if Append then + InternalLast; + Post; + DebugLeave('TASQLite3BaseQuery.InternalAddRecord'); +end; + +{ This method is called by TDataSet.Delete to delete the current record } + +procedure TASQLite3BaseQuery.InternalDelete; +begin + DebugEnter('TASQLite3BaseQuery.InternalDelete'); + FSaveChanges := true; + FResult.Delete(FCurRec); + if FCurRec >= FResult.Count then + Dec(FCurRec); + DebugLeave('TASQLite3BaseQuery.InternalDelete'); +end; + + { Optional Methods } + { ================ } + +{ The following methods are optional. When provided they will allow the + DBGrid and other data aware controls to track the current cursor postion + relative to the number of records in the dataset. Because we are dealing + with a small, static data store (a stringlist), these are very easy to + implement. However, for many data sources (SQL servers), the concept of + record numbers and record counts do not really apply. } + +function TASQLite3BaseQuery.GetRecordCount: longint; +begin + DebugEnter('TASQLite3BaseQuery.GetRecordCount'); + Result := FResult.Count; + DebugLeave('TASQLite3BaseQuery.GetRecordCount ' + IntToStr(Result)); +end; + +function TASQLite3BaseQuery.GetRecNo: longint; +begin + DebugEnter('TASQLite3BaseQuery.GetRecNo'); + UpdateCursorPos; + if (FCurRec = -1) and (RecordCount > 0) then + Result := 1 + else + Result := FCurRec + 1; + NotifySQLiteMasterChanged; //20040819 + DebugLeave('TASQLite3BaseQuery.GetRecNo'); +end; + +procedure TASQLite3BaseQuery.SetRecNo(Value: integer); +begin + DebugEnter('TASQLite3BaseQuery.SetRecNo'); + if (Value >= 0) and (Value < FResult.Count + 2) then // value < resultetc + begin + FCurRec := Value - 1; + Resync([]); + end; + DebugLeave('TASQLite3BaseQuery.SetRecNo'); +end; + +procedure TASQLite3BaseQuery.SetFiltered(Value: Boolean); +begin + inherited; +end; + +procedure TASQLite3BaseQuery.SetFilterText(const Value: string); +begin + DebugEnter('TASQLite3BaseQuery.SetFilterText ' + Value); + if Active then begin + Close; + inherited; + Open; + end else Inherited; + DebugLeave('TASQLite3BaseQuery.SetFilterText'); +end; + +function TASQLite3BaseQuery.SetQueryParams(InStr: string): string; +var + i : integer; + TempParam : string; + ThisDateFormat : string; + OldDateFormat : string; +begin + if FSQLiteDateFormat then + ThisDateFormat := 'yyyy-mm-dd hh:nn:ss.zzz' + else if (FTableDateFormat <> '') then + ThisDateFormat := FTableDateFormat + else + ThisDateFormat := ShortDateFormat; + + for i := 0 to FParams.Count - 1 do begin + if (FParams.Items[i].DataType <> ftBlob) and + (FParams.Items[i].DataType <> ftGraphic) then begin + TempParam := Fparams.Items[i].AsString; + if (TempParam = '') and (FParams.Items[i].bound) then begin + InStr := StringReplace(Instr, '?', 'NULL', []); + end else begin + //Here we'll replace legitimate '?' characters with an unprintable character + TempParam := StringReplace(TempParam, '?', #1, [rfReplaceAll]); + + //Okay, we need to check string dates and times + if FParams[i].DataType = ftDate then begin + end else if FParams[i].DataType = ftTime then begin + end else if FParams[i].DataType = ftDateTime then begin + OldDateFormat := ShortDateFormat; + ShortDateFormat := ThisDateFormat; + TempParam := DateToStr(FParams[i].AsDateTime); + ShortDateFormat := OldDateFormat; + end; + + InStr := StringReplace(Instr, '?', QuotedStr(TempParam), [rfIgnoreCase]); + end; + end else begin // BLOB !! + //Here we'll replace legitimate '?' characters with an unprintable character + InStr := StringReplace(Instr, '?', #2, [rfIgnoreCase]); + end; + end; + //Here we'll restore legitimate '?' characters + InStr := StringReplace(Instr, #1, '?', [rfReplaceAll]); + SetQueryParams := InStr; +end; + +// ============================================================================= TASQLite3 UPDATE SQL + +constructor TASQLite3UpdateSQL.Create(AOWner: TComponent); +begin + DebugEnter('TASQLite3UpdateSQL.Create'); + inherited Create(AOwner); + FInsertSQL := TStringList.Create; + FUpdateSQL := TStringList.Create; + FDeleteSQL := TStringList.Create; + DebugLeave('TASQLite3UpdateSQL.Create'); +end; + +destructor TASQLite3UpdateSQL.Destroy; +begin + DebugEnter('TASQLite3UpdateSQL.Destroy'); + inherited; + if Assigned(FInsertSQL) then + FInsertSQL.Free; + if Assigned(FUpdateSQL) then + FUpdateSQL.Free; + if Assigned(FDeleteSQL) then + FDeleteSQL.Free; + DebugLeave('TASQLite3UpdateSQL.Destroy'); +end; + +procedure TASQLite3UpdateSQL.SetInsertSQL(const Value: TStrings); +begin + DebugEnter('TASQLite3UpdateSQL.SetInsertSQL'); + if Assigned(FInsertSQL) then + FInsertSQL.Assign(Value) + else + FInsertSQL := Value; + DebugLeave('TASQLite3UpdateSQL.SetInsertSQL'); +end; + +procedure TASQLite3UpdateSQL.SetUpdateSQL(const Value: TStrings); +begin + DebugEnter('TASQLite3UpdateSQL.SetUpdateSQL'); + if Assigned(FUpdateSQL) then + FUpdateSQL.Assign(Value) + else + FUpdateSQL := Value; + DebugLeave('TASQLite3UpdateSQL.SetUpdateSQL'); +end; + +procedure TASQLite3UpdateSQL.SetDeleteSQL(const Value: TStrings); +begin + DebugEnter('TASQLite3UpdateSQL.SetDeleteSQL'); + if Assigned(FDeleteSQL) then + FDeleteSQL.Assign(Value) + else + FDeleteSQL := Value; + DebugLeave('TASQLite3UpdateSQL.SetDeleteSQL'); +end; +// ============================================================================= TASQLite3 QUERY + +constructor TASQLite3Query.Create(AOwner: TComponent); +begin + DebugEnter('TASQLite3Query.Create'); + inherited Create(AOwner); +// FParams := TParams.Create(Self); + TStringList(FSQL).OnChange := QueryChanged; + DebugLeave('TASQLite3Query.Create'); +end; + +destructor TASQLite3Query.Destroy; +begin + DebugEnter('TASQLite3Query.Destroy'); + + if Assigned(FSQL) then + TStringList(FSQL).OnChange := nil; + + inherited Destroy; + DebugLeave('TASQLite3Query.Destroy'); +end; + +procedure TASQLite3Query.Notification(AComponent: TComponent; Operation: TOperation); +begin +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TASQLite3Query.Notification'); +{$ENDIF} +// Application.ProcessMessages; + if Assigned(AComponent) then + begin + if (Operation = opRemove) then begin + if Assigned(FUpdateSQL) and (AComponent is TASQLite3UpdateSQL) then begin + if TASQLite3UpdateSQL(AComponent) = FUpdateSQL then + FUpdateSQL := nil; + end else + + if Assigned(FConnection) then begin + if (AComponent is TASQLite3DB) and + (TASQLite3Db(AComponent) = FConnection) then begin + Close; + Connection := nil; + end; + end else + + end; + end; + inherited; +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLite3Query.Notification'); +{$ENDIF} +end; + +procedure TASQLite3Query.QueryChanged(Sender: TObject); +begin + DebugEnter('TASQLite3Query.QueryChanged'); + FNoResults := false; + Close; + if not FRawSQL then begin + if assigned(FParams) then FParams.Clear; // new + SQLStr := FParams.ParseSQL(SQL.Text, true) + end else SQLStr := SQL.Text; + DebugLeave('TASQLite3Query.QueryChanged'); +end; + +procedure TASQLite3Query.SetSQL(const Value: TStrings); +begin + DebugEnter('TASQLite3Query.SetSQL'); + FNoResults := false; + Close; + if Assigned(FSQL) then + FSQL.Assign(Value) + else + FSQL := Value; +// FText := FParams.ParseSQL(SQL.Text, False); + DebugLeave('TASQLite3Query.SetSQL'); +end; + +function TASQLite3Query.GetSQL: TStrings; +begin + DebugEnter('TASQLite3Query.GetSQL'); + GetSQL := FSQL; + DebugLeave('TASQLite3Query.GetSQL'); +end; + +procedure TASQLite3Query.InternalDelete; +var + MySQL : string; + TempSQL : string; + SQLStr : string; // added by Donnie + TheWord : string; + TableId : string; + FieldId : string; + startpos : integer; + vartype : integer; + p : integer; + Blobs : TList; // added by Donnie +label + Ende; +begin + DebugEnter('TASQLite3Query.InternalDelete'); + if FReadOnly then + raise AsgError.Create('Cannot delete from a read-only dataset'); + + if Connection.FConnected then + begin + if FAutoCommit then + Connection.ExecStartTransaction(FTransactionType); + + if not Assigned(FUpdateSQL) then + begin + raise AsgError.Create('Missing TASQLite3UpdateSQL component'); + goto ende; + end; + // MyFieldList := TStringList.Create; + // MyFieldValues := TStringList.Create; + Blobs := TList.Create; + MySQL := FUpdateSQL.FDeleteSQL.Text; + startpos := 1; + + TheWord := GetWord(MySQL, startpos, vartype); // delete + if not SyntaxCheck(TheWord, 'delete') then + goto ende; + + TheWord := GetWord(MySQL, startpos, vartype); // from + if not SyntaxCheck(TheWord, 'from') then + goto ende; + + Tableid := GetWord(MySQL, startpos, vartype); // tablename + + TheWord := GetWord(MySQL, startpos, vartype); // where + if not SyntaxCheck(TheWord, 'where') then + goto ende; + + SQLStr := 'delete from ' + TableId + ' where '; + TempSQL := Copy(MySQL, startpos, 999); + + p := pos(':', TempSQL); + while p > 0 do + begin + SQLStr := SQLStr + Copy(TempSQL, 1, p - 1); + System.Delete(TempSQL, 1, p); + startpos := 1; + FieldId := GetWord(TempSQL, startpos, vartype); // variable + System.Delete(TempSQL, 1, startpos); // Tzvetan + // SQLStr := SQLStr + QuotedStr(FieldByName(FieldId).AsString); + // edited by Donnie + SQLStr := SQLStr + GetFieldValue(FieldByName(FieldId), Blobs); + p := pos(':', TempSQL); + end; + SQLStr := SQLStr + Copy(TempSQL, StartPos, 999); + try + Connection.SQLite3_execute(Connection.DBHandle, PAnsiChar(SQLStr), FParams, self); + if FAutoCommit then + Connection.Commit; + except + if FAutoCommit then begin + Connection.RollBack; + raise; + end; + end; + if Assigned(Blobs) then begin + for p := 0 to Blobs.Count - 1 do + TMemoryStream(Blobs.Items[p]).Free; + Blobs.Free; + end; + inherited InternalDelete; + end; + Ende: + DebugLeave('TASQLite3Query.InternalDelete'); +end; + + //============================================================================== + // This is probabely the most difficult thing about these components. + // To be able to have a live resultset a tupdatequery must be used to + // supply the correct sql on the events. In the internalpost the insert and + // update are handled. The routine will take the given sql and remodel it + // to a workable sql which is executed. Keep in mind that this routine + // is far more difficult then the TASQLite3Table, since the last one is depending + // on a unique rownumber, available in the resultset, which might not be + // available to user queries + // There are several syntaxes allowed: + // + // insert into table * + // this will generate an insert statement for each field and values + // i.e. insert into table a,b,c values :a, :b, :c; + // + // insert into table (a, b, c) values * + // this will generate an insert statement like + // insert into table (a, b, c) values (:a, :b, :c); + // + // insert into table (a, b, c) values (:a, :b, :c); + // insert into table (a, b, c) values (:a, "bvalue", :c) etc. + // + // update table set * where + // this will generate a update for all fields like + // update a=:a, b=:b, c=:c where + // + //============================================================================== + +procedure TASQLite3Query.InternalPost; +var + i : integer; + p : integer; + startpos : integer; + MyFieldList : TStringList; + MyFieldValues : TStringList; + MySQL : string; + TheWord : string; + TempSQL : string; + SQLStr : string; // added by Donnie + TableId : string; + FieldId : string; + varType : integer; + Blobs : TList; // added by Donnie +begin + DebugEnter('TASQLite3Query.InternalPost'); + if FReadOnly then + raise AsgError.Create('Cannot post into a read-only dataset'); + MyFieldList := nil; + MyFieldValues := nil; + try + if not Connection.FConnected then + begin + DebugLeave('TASQLite3Query.InternalPost'); + exit; + end; + if FAutoCommit then + Connection.ExecStartTransaction(FTransactionType); + if not Assigned(FUpdateSQL) then + begin + DebugLeave('TASQLite3Query.InternalPost Exception'); + raise AsgError.Create('Missing TASQLite3UpdateSQL component'); + end; + + Blobs := TList.Create; + if (State = dsEdit) and (FResult.Count > 0) then + begin + MyFieldList := TStringList.Create; + MyFieldValues := TStringList.Create; + MySQL := FUpdateSQL.FUpdateSQL.Text; + startpos := 1; + TheWord := GetWord(MySQL, startpos, vartype); // update + if not SyntaxCheck(TheWord, 'update') then + exit; + + Tableid := GetWord(MySQL, startpos, vartype); // tablename + + TheWord := GetWord(MySQL, startpos, vartype); // set or '*' + if TheWord = '*' then + begin + for i := 0 to FieldList.Count - 1 do + begin + MyFieldList.Add(FieldList[i].FieldName); + MyFieldValues.Add(':' + FieldList[i].FieldName); + end; + TheWord := GetWord(MySQL, startpos, vartype); // where + end + else + begin + if not SyntaxCheck(TheWord, 'set') then + begin + DebugLeave('TASQLite3Query.InternalPost'); + exit; + end; + + repeat + TheWord := GetWord(MySQL, startpos, vartype); // fieldname + MyFieldList.Add(TheWord); + + TheWord := GetWord(MySQL, startpos, vartype); // '=' + if not SyntaxCheck(TheWord, '=') then + begin + DebugLeave('TASQLite3Query.InternalPost'); + exit; + end; + TheWord := GetWord(MySQL, startpos, vartype); // 2004-14-09 (rps) ':' or 'where' ---> + if vartype = vtcDelimiter then // <--- + TheWord := GetWord(MySQL, startpos, vartype); // fieldvalue + if TheWord = '*' then + MyFieldValues.Add(':' + MyFieldList[MyFieldList.Count - 1]) + else + MyFieldValues.Add(':' + TheWord); + + TheWord := GetWord(MySQL, startpos, vartype); // , or 'where' + until CompareText(TheWord, 'where') = 0; + end; + + if not SyntaxCheck(TheWord, 'where') then + exit; + + SQLStr := 'update ' + TableId + ' set '; + // for i := 0 to FieldList.Count - 1 do + // typo corrected by Donnie + for i := 0 to MyFieldList.Count - 1 do + begin + // SQLStr := SQLStr + FieldList[i].FieldName + '='; + // typo corrected by Donnie + SQLStr := SQLStr + MyFieldList.Strings[i] + '='; + FieldId := MyFieldValues[i]; + if FieldId[1] = ':' then + begin + System.Delete(FieldId, 1, 1); + // SQLStr := SQLStr + QuotedStr(FieldByName(FieldId).AsString) + ',' + // edited by Donnie + SQLStr := SQLStr + GetFieldValue(FieldByName(FieldId), Blobs) + ',' + end + else + SQLStr := SQLStr + QuotedStr(FieldId) + ',' + end; + System.Delete(SQLStr, Length(SQLStr), 1); // get rid of ',' + TempSQL := ' where ' + Copy(MySQL, startpos, 999); + + p := pos(':', TempSQL); + while p > 0 do + begin + SQLStr := SQLStr + Copy(TempSQL, 1, p - 1); + System.Delete(TempSQL, 1, p); + startpos := 1; + FieldId := GetWord(TempSQL, startpos, vartype); // variable + System.Delete(TempSQL, 1, startpos); // Tzvetan + // SQLStr := SQLStr + QuotedStr(FieldToStr(FieldByName(FieldId))); + // edited by Donnie + SQLStr := SQLStr + GetFieldValue(FieldByName(FieldId), Blobs); + p := pos(':', TempSQL); + end; + SQLStr := SQLStr + Copy(TempSQL, StartPos, 999); + + // Connection.SQLite3_ExecSQL(SQLStr); + // edited by Donnie + Connection.SQLite3_ExecSQL(SQLStr, Blobs); + inherited InternalPost; // rework internals + end + else + begin + { If inserting (or appending), increment the bookmark counter and + store the data. Sytax should be: insert into * or + insert into
(field, field) values (field, field) | * + The sql is parsed and a new (valid) sql generated + } + MyFieldList := TStringList.Create; + MyFieldValues := TStringList.Create; + MySQL := FUpdateSQL.FInsertSQL.Text; + startpos := 1; + TheWord := GetWord(MySQL, startpos, vartype); // insert + if not SyntaxCheck(TheWord, 'insert') then + exit; + + TheWord := GetWord(MySQL, startpos, vartype); // into + if not SyntaxCheck(TheWord, 'into') then + exit; + + Tableid := GetWord(MySQL, startpos, vartype); // tablename + + TheWord := GetWord(MySQL, startpos, vartype); // ( or * + if TheWord = '*' then + begin + for i := 0 to FieldList.Count - 1 do + begin + MyFieldList.Add(FieldList[i].FieldName); + MyFieldValues.Add(':' + FieldList[i].FieldName); + end; + end + else if TheWord = '(' then + begin + repeat + TheWord := GetWord(MySQL, startpos, vartype); // fieldname + MyFieldList.Add(TheWord); + TheWord := GetWord(MySQL, startpos, vartype); // ',' or ')' + until theword = ')'; + TheWord := GetWord(MySQL, startpos, vartype); // values + TheWord := GetWord(MySQL, startpos, vartype); // '(' or '*' + if TheWord = '*' then + begin + for i := 0 to MyFieldList.Count - 1 do + MyFieldValues.Add(':' + MyFieldList[i]); + end + else + begin +// 2004-14-09 (rps) original - does not work + repeat + TheWord := GetWord(MySQL, startpos, vartype); // ':' or fieldname + if vartype = vtcDelimiter then begin + TheWord := GetWord(MySQL, startpos, vartype); // fieldname !! + MyFieldValues.Add(':' + TheWord); + end else + MyFieldValues.Add(TheWord); + TheWord := GetWord(MySQL, startpos, vartype); // ',' or ')' + until theword = ')'; + end; + end + else + begin + raise AsgError.Create('SQL macro syntax error on insertsql, expected ( or *'); + end; + + SQLStr := 'insert into ' + TableId + ' ('; + for i := 0 to MyFieldList.Count - 1 do + SQLStr := SQLStr + MyFieldList[i] + ','; + SQLStr[Length(SQLStr)] := ')'; + SQLStr := SQLStr + ' values ('; + for i := 0 to MyFieldList.Count - 1 do + begin + FieldId := MyFieldValues[i]; + if FieldId[1] = ':' then begin + System.Delete(FieldId, 1, 1); + // SQLStr := SQLStr + QuotedStr(FieldByName(FieldId).AsString) + ',' + // edited by Donnie + SQLStr := SQLStr + GetFieldValue(FieldByName(FieldId), Blobs) + ',' + end else begin + if CompareText(FieldId,'null')=0 then + SQLStr := SQLStr + FieldId+',' + else + SQLStr := SQLStr + QuotedStr(FieldId) + ',' + end; + end; + SQLStr[Length(SQLStr)] := ')'; + // Connection.SQLite3_ExecSQL(SQLStr); + // edited by Donnie + Connection.SQLite3_ExecSQL(SQLStr, Blobs); + if FResult.Count = 0 then + Inc(FCurrec); + inherited InternalPost; // rework internals + end; + if FAutoCommit then + begin + try + Connection.Commit; + except + Connection.RollBack; + raise; + end; + end; + finally + if Assigned(MyFieldList) then MyFieldList.Free; + if Assigned(MyFieldValues) then MyFieldValues.Free; + if Assigned(Blobs) then begin + for i := 0 to Blobs.Count - 1 do + try + TMemoryStream(Blobs.Items[i]).Free; + except + end; + Blobs.Free; + end; + end; + DebugLeave('TASQLite3Query.InternalPost'); +end; + +procedure TASQLite3Query.InternalClose; +begin + DebugEnter('TASQLite3Query.InternalClose'); + FPrepared := ''; + inherited; + DebugLeave('TASQLite3Query.InternalClose'); +end; + +procedure TASQLite3Query.InternalOpen; +//var +// p : integer; +begin + DebugEnter('TASQLite3Query.InternalOpen'); + if Trim(FSQL.Text) = '' then + begin + raise AsgError.Create('no query specified'); + abort; + end; + + if (FMaxResults = 0) and (FStartResult <> 0) then + FMaxResults := -1; + + // SQLStr contains the 'raw' interpreted SQL, with ? as parameterlist + // This string has to be preserved, since it was parsed on entering the sql. + // On close and open (i.e. in case of master-detail) the parsed data still + // must be available + + // We'll prepare the SQL statement into FPrepared. This is also the var + // containing the SQL statement to be executed. + FPrepared := SQLStr; + +// FPrepared := FSql.Text; // 2004-14-09 (rps) changed SqlStr (current) -> FSql.Text (property), + // to bring Close; Open; to work. (Full refresh.) + // this will block parameterized queries to function right (Aducom) + + if (Filtered) and (Filter <> '') then + begin + //in order to let a filter work we use a little trick: + //select * from (my select statement) + FPrepared := 'select * from (' + FPrepared + ') where ' + Filter; + end; + + if FParams.Count > 0 then + FPrepared := SetQueryParams(FPrepared); + + if FMaxResults <> 0 then + FPrepared := FPrepared + ' limit ' + IntToStr(FMaxResults); + if FStartResult <> 0 then + FPrepared := FPrepared + ' offset ' + IntToStr(FStartResult); + inherited; + DebugLeave('TASQLite3Query.InternalOpen'); +end; + + // ============================================================================= + // The master-detail is implemented through the filter object + // in the future perhaps a separate filter object will be used allowing + // to add your own criteria too, but for the time being.. + //============================================================================== + +procedure TASQLite3Query.SQLiteMasterChanged; +var + r, s : string; + m, d : string; + p : integer; + cAnd : string; +begin + DebugEnter('TASQLite3Query.SQLiteMasterChanged'); + Close; + cAnd := ''; + r := FMasterFields; + Filter := ''; + Filtered := false; + while r <> '' do + begin // build the filter sql syntax + p := pos(';', r); + if p = 0 then + begin + if Trim(r) <> '' then + s := r; + r := ''; + end + else + begin + s := Trim(Copy(r, 1, p - 1)); + System.Delete(r, 1, p); + end; + + p := pos('=', s); + if p = 0 then + begin + raise AsgError.Create('Syntax error: Masterfields not build of a=b;... pairs'); + end + else + begin + d := copy(s, 1, p - 1); + m := copy(s, p + 1, 99); + end; +// Filter := Filter + cAnd + d + '=' + FMasterSource.DataSet.FieldByName(m).AsString; + Filter := Filter + cAnd + d + '=' + QuotedStr(FMasterSource.DataSet.FieldByName(m).AsString) ; + cAnd := ' and '; + end; + if (Filter <> '') and (Active) then begin + filtered := true; + Open; + end; + DebugLeave('TASQLite3Query.SQLiteMasterChanged'); +end; + + //============================================================================== + // execsql is used for sql statements which do not require cursors. For this + // reason the fnoresults is set, to prevent building a result set + //============================================================================== + +procedure TASQLite3BaseQuery.ExecSQL; +begin + DebugEnter('TASQLite3BaseQuery.ExecSQL'); + FNoResults := true; + Close; + if FAutoCommit then + begin + Connection.ExecStartTransaction(FTransactionType); + Open; + try + Connection.Commit + except + Connection.RollBack; + raise; + end; + end + else + Open; + DebugLeave('TASQLite3BaseQuery.ExecSQL'); +end; + +procedure TASQLite3BaseQuery.SetParamsList(Value: TParams); +begin + DebugEnter('TASQLite3BaseQuery.SetParamsList'); + FParams.AssignValues(Value); + DebugLeave('TASQLite3BaseQuery.SetParamsList'); +end; + +function TASQLite3BaseQuery.GetParamsCount: word; +begin + DebugEnter('TASQLite3BaseQuery.GetParamsCount'); + Result := FParams.Count; + DebugLeave('TASQLite3BaseQuery.GetParamsCount'); +end; + +procedure TASQLite3Table.SetFOrderBy(OrderBy : string); +begin + if FOrderBy <> OrderBy then begin + Close; + FOrderBy := OrderBy; + end; +end; + +procedure TASQLite3Table.SetFTableName(TableName : string); +begin + Close; + FTableName := TableName; +end; + +procedure TASQLite3Table.Notification(AComponent: TComponent; Operation: TOperation); +begin +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TASQLite3Table.Notification'); +{$ENDIF} +// Application.ProcessMessages; + if Assigned(AComponent) then + begin + if (Operation = opRemove) then + begin + if (AComponent is TASQLite3DB) and Assigned(FConnection) then + begin + if TASQLite3DB(AComponent) = FConnection then begin + Close; + FConnection := nil; + end; + end else + + end; + end; + inherited; +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLite3Table.Notification'); +{$ENDIF} +end; + +procedure TASQLite3Table.InternalOpen; +begin + DebugEnter('TASQLite3Table.InternalOpen'); + + if FTableName = '' then + begin + raise AsgError.Create('no table specified'); + exit; + end; + FSQL.Clear; + FSQL.Add('select *, rowid as rowid from ' + TableName); + if Filtered then + if Filter <> '' then + FSQL.Add(' where ' + Filter); + if (FMaxResults = 0) and (FStartResult <> 0) then + FMaxResults := -1; + if FMaxResults <> 0 then + FSQL.Add(' limit ' + IntToStr(FMaxResults)); + if FStartResult <> 0 then + FSQL.Add(' offset ' + IntToStr(FStartResult)); + if FOrderBy <> '' then + FSQL.Add(' order by ('+FOrderBy+')'); + SQLStr := FSQL.Text; + FPrepared := SQLStr; + inherited; + DebugLeave('TASQLite3Table.InternalOpen'); +end; + +procedure TASQLite3Table.SQLiteMasterChanged; +var + r, s : string; + m, d : string; + p : integer; + cAnd : string; +begin + DebugEnter('TASQLite3Table.SQLiteMasterChanged'); + Close; + cAnd := ''; + r := FMasterFields; + Filter := ''; + while r <> '' do + begin + p := pos(';', r); + if p = 0 then + begin + if Trim(r) <> '' then + s := r; + r := ''; + end + else + begin + s := Trim(Copy(r, 1, p - 1)); + System.Delete(r, 1, p); + end; + + p := pos('=', s); + if p = 0 then + begin + raise AsgError.Create('Syntax error: Masterfields not build of a=b;... pairs'); + end + else + begin + d := copy(s, 1, p - 1); + m := copy(s, p + 1, 99); + end; +// Filter := Filter + cAnd + d + '=' + FMasterSource.DataSet.FieldByName(m).AsString; + Filter := Filter + cAnd + d + '=' + QuotedStr(FMasterSource.DataSet.FieldByName(m).AsString) ; + cAnd := ' and '; + end; + if Filter <> '' then + filtered := true; + Open; + DebugLeave('TASQLite3Table.SQLiteMasterChanged'); +end; + +procedure TASQLite3Table.InternalDelete; +begin + DebugEnter('TASQLite3Table.InternalDelete'); + if FReadOnly then + raise AsgError.Create('Cannot delete from a read-only dataset'); + + if not Connection.FConnected then + exit; + if FAutoCommit then + Connection.ExecStartTransaction(FTransactionType); + + SQLStr := ''; + CurrentRowId := FResult.GetRowId(FCurRec); + FSQL.Clear; + FSQL.Add('delete from ' + Tablename + ' where rowid=' + QuotedStr(IntToStr(CurrentRowId))); +// SQLStr := StringReplace(FSQL.Text, crlf, #10, [rfReplaceAll, rfIgnoreCase]); // albert + SQLStr := FSQL.Text; + Connection.SQLite3_execute(Connection.DBHandle, PAnsiChar(SQLStr), FParams, self); + + inherited InternalDelete; + + if FAutoCommit then + begin + try + Connection.Commit; + except + Connection.RollBack; + raise; + end; + end; + DebugLeave('TASQLite3Table.InternalDelete'); +end; + +procedure TASQLite3Table.InternalPost; +var + i : integer; + n: Integer; + ThisDateFormat, + tmpMasterDetail, MasterField, chDelim: string; + slDetail, slValues: TStringList; + lsBlobs: TList; //GPA + M:TMemoryStream; //GPA + + // this function will return the fielvalue of an indicated fieldbyordinalnumber + // if the fieldtype is tdatetime it is transfered to the right date notation as + // indicated by jpierce. + + function GetFieldValue(const AField: TField): string; // DI + begin // DI + if AField.DataType = ftDateTime then // DI + GetFieldValue := QuotedStr(FormatDateTime(ThisDateFormat, FieldByName(AField.FieldName).AsDateTime)) // DI + else if (AField.DataType = ftBlob) or (AField.DataType = ftMemo) or (AField.DataType = ftFmtMemo) or (AField.DataType = ftGraphic) then //GPA + begin //GPA + M:=TMemoryStream.Create; //GPA + TBlobField(FieldByName(AField.FieldName)).SaveToStream(M); + GetFieldValue := #2+IntToStr(1+lsBlobs.Add(Pointer(M))) //GPA + end + else + GetFieldValue := QuotedStr(FieldByName(AField.FieldName).AsString); // DI + end; // DI + +var + f: TField; // DI + OldDecimalSeparator: ansiChar; // DI +begin + DebugEnter('TASQLite3Table.InternalPost'); + + if FReadOnly then + raise AsgError.Create('Cannot post into a read-only dataset'); + + // determine datetime style of dataset (if any) + + if FSQLiteDateFormat then + ThisDateFormat := 'yyyy-mm-dd hh:nn:ss.zzz' + else if (FTableDateFormat <> '') then + ThisDateFormat := FTableDateFormat + else + ThisDateFormat := ShortDateFormat; + + if not Connection.FConnected then Exit; + if FAutoCommit then Connection.StartTransaction; + + lsBlobs := TList.Create; //GPA + OldDecimalSeparator := DecimalSeparator; // DI + try // DI + DecimalSeparator := '.'; // DI: Force Delphi's DecimalSeparator to SQL style syntax. + + if (State = dsEdit) and (FResult.Count > 0) then + begin + CurrentRowId := FResult.GetRowId(FCurRec); + FSQL.Clear; + FSQL.Add('update ' + TableName + ' set '); + SQLStr := ''; + for i := 0 to FieldList.Count - 1 do begin + f := FieldList[i]; // DI + if not (f.Calculated or f.Lookup) then // DI + SQLStr := SQLStr + f.FieldName + '=' + GetFieldValue(f) + ','; // DI + end; + SQLStr[Length(SQLStr)] := ' '; + FSQL.Add(SQLStr); + FSQL.Add(' where rowid=' + QuotedStr(IntToStr(CurrentRowId))); + + SQLStr := FSQL.Text; // DI + // DI SQLStr := StringReplace(FSQL.Text, CRLF, #10, [rfReplaceAll, rfIgnoreCase]); + + Connection.SQLite3_ExecSQL(SQLStr,lsBlobs); + inherited InternalPost; // rework internals + end + else + begin + { If inserting (or appending), increment the bookmark counter and + store the data } + FSQL.Clear; + FSQL.Add('insert into ' + TableName + ' ('); + SQLStr := ''; + + for i := 0 to FieldList.Count - 1 do begin + if not (FieldList[i].Calculated or FieldList[i].Lookup) then // aducom + SQLStr := SQLStr + FieldList[i].FieldName + ','; + end; + + SQLStr[Length(SQLStr)] := ')'; + SQLStr := SQLStr + ' values ('; + FSQL.Add(SQLStr); + SQLStr := ''; + + slDetail := TStringList.Create; + slValues := TStringList.Create; + i := 0; chDelim := ';'; + if FMasterSource <> nil then + begin + while i < Length(FMasterFields) do + begin + tmpMasterDetail := GetWordByDelim(FMasterFields, i, chDelim); + n := Pos('=', tmpMasterDetail); + if n <> 0 then + begin + slDetail.Add(Copy(tmpMasterDetail, 1, n - 1)); + MasterField := Copy(tmpMasterDetail, n + 1, Length(tmpMasterDetail) - n); + slValues.Add(FMasterSource.DataSet.FieldByName(MasterField).AsString); + end; + end; + end; + + if (FPrimaryAutoInc) and (FieldDefs[0].DataType = ftInteger) then begin + SQLStr := SQLStr + 'null,'; + n := 1; // aducom + end else begin // aducom + n := 0; // aducom + end; // aducom + + for i := n to FieldList.Count - 1 do // aducom + begin // DI + f := FieldList[i]; + if not (f.Calculated or f.Lookup) then // DI + if slDetail.Find(f.FieldName, n) then // DI + SQLStr := SQLStr + QuotedStr(slValues.Strings[n]) + ',' + else + SQLStr := SQLStr + GetFieldValue(f) + ','; // DI + end; // DI + + slDetail.Free; + slValues.Free; + + SQLStr[Length(SQLStr)] := ')'; + FSQL.Add(SQLStr); + + SQLStr := FSQL.Text; // DI + // DI SQLStr := StringReplace(FSQL.Text, CRLF, #10, [rfReplaceAll, rfIgnoreCase]); + + Connection.SQLite3_ExecSQL(SQLStr, lsBlobs); + if FPrimaryAutoInc then + if FieldDefs[0].DataType = ftInteger then + FieldByName(FieldList[0].FieldName).AsInteger := + Connection.SQLite3_LastInsertRow(Connection.DBHandle); + if FResult.Count = 0 then + Inc(FCurRec); + inherited InternalPost; // rework internals + end; + + finally // DI + DecimalSeparator := OldDecimalSeparator; // DI + For I:=0 to lsBlobs.Count-1 do begin // GPA + M:=TMemoryStream(lsBlobs.Items[I]); // GPA + M.Free; // GPA + end; // GPA + lsBlobs.Free; // GPA + + end; // DI + + if FAutoCommit then + begin + try + Connection.Commit; + except + Connection.RollBack; + raise; + end; + end; + DebugLeave('TASQLite3Table.InternalPost'); +end; + +// Blobfields in SQLite are in fact CLOB fields. However, since it is a large +// chunk of data for all types the ftBlob is used. Keep in mind that blobs are +// stored separately of TResult. Within the result structure only the memory +// handle of the blob is stored. + +constructor TASQLite3BlobStream.Create(Field: TBlobField; Mode: TBlobStreamMode); +begin +// inherited Create; + FField := Field; + FMode := Mode; + FDataSet := FField.DataSet as TASQLite3BaseQuery; + if Mode <> bmWrite then + LoadBlobData; +end; + +destructor TASQLite3BlobStream.Destroy; +begin + DebugEnter('TASQLite3BlobStream.Destroy'); + if FModified then + SaveBlobData; + inherited Destroy; +end; + +function TASQLite3BlobStream.Read(var Buffer; Count: Longint): Longint; +begin + DebugEnter('ASQLiteBlobStream.Read'); + Result := inherited Read(Buffer, Count); + FOpened := True; +end; + +function TASQLite3BlobStream.Write(const Buffer; Count: Longint): Longint; +begin + DebugEnter('ASQLiteBlobStream.Write'); + Result := inherited Write(Buffer, Count); + FModified := True; + FDataSet.SetModified(true); +end; + +procedure TASQLite3BlobStream.LoadBlobData; +var + Stream : TMemoryStream; + Offset : Integer; + RecBuffer : PAnsiChar; +begin + DebugEnter('ASQLiteBlobStream.LoadBlobData'); + Self.Size := 0; + FDataset.GetActiveBuffer(RecBuffer); + +// recbuffer := nil; + + if RecBuffer <> nil then + begin + Offset := FDataset.GetFieldOffset(FField.FieldNo); + Move((RecBuffer + Offset)^, Pointer(Stream), sizeof(Pointer)); + Self.CopyFrom(Stream, 0); + end; + Position := 0; +end; + +procedure TASQLite3BlobStream.SaveBlobData; +var + Stream : TMemoryStream; + Offset : Integer; + RecBuffer : PAnsiChar; +begin + DebugEnter('ASQLiteBlobStream.SaveBlobData'); + FDataset.GetActiveBuffer(RecBuffer); + if RecBuffer <> nil then + begin + Offset := FDataset.GetFieldOffset(FField.FieldNo); + Move((RecBuffer + Offset)^, Pointer(Stream), sizeof(Pointer)); + Stream.Size := 0; + Stream.CopyFrom(Self, 0); + Stream.Position := 0; + end; +end; + +// Inline sql can be used to store sqlstatements outside of the pascal source. +// it prevents large 'sql.add' rows. Also it can be used to generate an in-memory +// database structure if needed + +constructor TASQLite3InlineSQL.Create; +begin + inherited; + FSQL := TStringList.Create; +end; + +destructor TASQLite3InlineSQL.Destroy; +begin + if Assigned(FSQL) then FSQL.Free; + inherited; +end; + +procedure TASQLite3InlineSQL.SetSQL(const Value: TStrings); +begin + if Assigned(FSQL) then + FSQL.Assign(Value) + else + FSQL := Value; +end; + +function TASQLite3InlineSQL.GetSQL: TStrings; +begin + GetSQL := FSQL; +end; + +// save resultset as text, html or xml. Depending on type the following +// will happen: +// +// text: all rows will be output, separated by the given separation symbol +// xml: all rows will be output, tags are the fieldnames +// +// +// fieldvalue +// .... +// +// html: a table will be generated with the given classnames (if available) + +constructor TASQLite3Output.Create; +begin + inherited; + FOutput := TStringList.Create; +end; + +destructor TASQLite3Output.Destroy; +begin + if Assigned(FOutput) then FOutput.Free; + inherited; +end; + +procedure TASQLite3Output.SetFActive(Active: boolean); +begin + FActive := Active; + if FActive = false then begin + end else begin + if Assigned(FDataSource) then begin + if Assigned(FDataSource.DataSet) then begin + Execute(FDataSource.DataSet); + end else raise AsgError.Create('Missing Datasource.Dataset'); + end else raise AsgError.Create('Missing Datasource'); + end; +end; + +procedure TASQLite3Output.SetOutput(const Value: TStrings); +begin + if Assigned(FOutput) then + FOutput.Assign(Value) + else + FOutput := Value; +end; + +function TASQLite3Output.GetOutput: TStrings; +begin + GetOutput := FOutput; +end; + +procedure TASQLite3Output.Notification(AComponent: TComponent; Operation: TOperation); +begin +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TASQLite3Output.Notification'); +{$ENDIF} + if Assigned(AComponent) then begin + if (Operation = opRemove) then begin + if (AComponent is TDataSource) then begin + if Assigned(FDataSource) then begin + if TDataSource(AComponent) = FDataSource then + FDataSource := nil; + end; + end + end; + end; + inherited; +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLite3DB.Notification'); +{$ENDIF} +end; + +procedure TASQLite3Output.Execute(MyDataSet: TDataSet); +const eXML = 0; + eHTML = 1; + eTXT = 2; +var FType : integer; + i : integer; + Line : string; + Sep : string; +// Indent : integer; +begin + if Assigned(MyDataset) then begin + if MyDataSet.Active = false then MyDataSet.Open; + Output.Clear; + FType := ETxt; + Line := ''; + + if CompareText(FOutputType[1], 'X') = 0 then begin + FType := eXML; + Line := Line + '
' + #10; + end else if CompareText(FOutputType[1], 'H') = 0 then begin + FType := eHTML; + Line := Line + '' + #10 + '' + #10 + + 'Table ' + MyDataSet.Name + '' + #10 + + '' + #10 + + '
' + #10 + + '' + #10; + end else if CompareText(FOutputType[1], 'T') = 0 then begin + FType := eTXT; + end; + + Sep := ''; + + for i := 0 to MyDataSet.FieldDefs.Count - 1 do begin + case FType of + eXML: begin + end; + eHTML: begin + Line := Line + ''; + end; + eTXT: begin + Line := Line + Sep + MyDataSet.FieldDefs[i].Name; + end; + end; + Sep := FSeparator; + end; + + Output.Add(Line); Line := ''; Sep := ''; + MyDataSet.First; + +// Indent := 0; + while not MyDataSet.Eof do begin + + case FType of + eXML: Line := Line + ' ' + #10; + eHTML: Line := Line + '' + #10; + end; + + for i := 0 to MyDataSet.FieldDefs.Count - 1 do begin + case FType of + eXML: begin + Line := Line + ' <' + MyDataSet.FieldDefs[i].Name + '>' + + MyDataSet.FieldByName(MyDataSet.FieldDefs[i].Name).AsString + + '' + #10; + end; + eHTML: begin + Line := Line + ''; + end; + eTXT: begin + Line := Line + Sep + MyDataSet.FieldByName(MyDataSet.FieldDefs[i].Name).AsString; + end; + end; + Sep := FSeparator; + end; + + case FType of + eXML: Line := Line + ' ' + #10; + eHTML: Line := Line + '' + #10; + end; + + Output.Add(Line); Line := ''; Sep := ''; + MyDataSet.Next; + end; + + case FType of + eXML: Line := Line + '
' + MyDataSet.FieldDefs[i].Name + '
' + MyDataSet.FieldByName(MyDataSet.FieldDefs[i].Name).AsString + '
' + #10; + eHTML: Line := Line + '' + #10 + '' + #10 + '' + #10; + end; + Output.Add(Line); + end; +end; + +{$IFDEF IPROVIDER} +procedure TASQLite3BaseQuery.PSEndTransaction(Commit: Boolean); +begin + // qui non sono molto sicuro... + if Assigned(Connection) then + if Commit then + Connection.Commit + else + Connection.RollBack; +end; + +procedure TASQLite3BaseQuery.PSExecute; +begin + UniDirectional := true; + ExecSQL; +end; + +function TASQLite3BaseQuery.PSExecuteStatement(const ASQL: string; + AParams: TParams; ResultSet: Pointer): Integer; +var + AsqlQry : TASQLite3BaseQuery; +begin + if Assigned(ResultSet) then + begin + TDataSet(ResultSet^) := TASQLite3Query.Create(nil); +{$IFDEF ASQLITE_D6PLUS} + TASQlite3Query(ResultSet^).SetUniDirectional(true);// := true; // just store data in provider. +{$endif} + with TASQLite3BaseQuery(ResultSet^) do begin + Connection := self.Connection; + Params.Assign(AParams); + FPrepared := ASql; + if FParams.Count > 0 then + FPrepared := SetQueryParams(FPrepared); + Open; + Result := Connection.RowsAffected; + end; + end + else + begin + AsqlQry := TASQLite3BaseQuery.Create(nil); + try + with AsqlQry do begin + Connection := self.Connection; + FPrepared := ASql; + FParams.Assign(AParams); + if FParams.Count > 0 then + FPrepared := SetQueryParams(AsqlQry.FPrepared); + ExecSQL; + Result := Connection.RowsAffected; + end; + finally + AsqlQry.Free; + end; + end; +end; + +function TASQLite3BaseQuery.PSGetParams: TParams; +begin + Result := Params; +end; + +function TASQLite3BaseQuery.PSGetQuoteChar: string; +begin + Result := '"'; +end; + +function TASQLite3BaseQuery.PSGetTableName: string; +begin + Result := GetTableNameFromSQL(FSQL.Text); +end; + +function TASQLite3BaseQuery.PSInTransaction: Boolean; +begin + Result := Assigned(Connection); +end; + +function TASQLite3BaseQuery.PSIsSQLBased: Boolean; +begin + Result := True; +end; + +function TASQLite3BaseQuery.PSIsSQLSupported: Boolean; +begin + Result := True; +end; + +procedure TASQLite3BaseQuery.PSSetCommandText(const CommandText: string); +begin + if CommandText <> '' then begin + FSQL.Text := CommandText; + FPrepared := CommandText; + end; +end; + +procedure TASQLite3BaseQuery.PSSetParams(AParams: TParams); +begin + if AParams.Count <> 0 then + Params.Assign(AParams); + Close; +end; + +procedure TASQLite3BaseQuery.PSStartTransaction; +begin + StartTransaction; +end; + +procedure TASQLite3BaseQuery.PSReset; +begin + if Active then + begin + Close; + Open; + end; +end; + +function TASQLite3BaseQuery.PSGetUpdateException(e: Exception; Prev: EUpdateError): EUpdateError; +var + PrevErr : Integer; +begin + // Generates an EUpdateError object based on another exception object. + if e is ASGError then begin + if Prev = nil then + PrevErr := Prev.errorCode + else + PrevErr := 0; + with ASGError(e) do + Result := EUpdateError.Create(e.Message, '', -1, PrevErr, e); + end else + Result := EUpdateError.Create(e.Message, '', -1, -1, e); +end; + +function TASQLite3BaseQuery.PSUpdateRecord(UpdateKind: TUpdateKind; Delta: TDataSet): Boolean; +begin + // OnUpdateRecord is not supported + Result := False; +end; + +function TASQlite3BaseQuery.PSGetKeyFields: string; +var + i : integer; +begin + Result := ''; + for i := 0 to (Fields.Count - 1) do begin + if pfInKey in Fields[i].ProviderFlags then begin + if Result <> '' then + Result := Result + ';'; + Result := Result + Fields[i].FieldName; + end; + end; +end; + +{$ENDIF} +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/asqlite_def.inc b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/asqlite_def.inc new file mode 100644 index 0000000..bbd5e3b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/asqlite_def.inc @@ -0,0 +1,99 @@ +{ + +Aducom Software SQLite components +Copyright (C) 2003-2006 by Aducom Software +Albert Drent +a.drent@aducom.com +for questions please register on the forum on www.aducom.com/sqlite +} + +{$IFDEF VER125}{C4}{$B-}{$X+}{$T-}{$H+}{$ENDIF} +{$IFDEF VER110}{C3}{$B-}{$X+}{$T-}{$H+}{$ENDIF} +{$IFDEF VER93}{C1}{$B-}{$X+}{$T-}{$H+}{$ENDIF} +{$IFDEF VER180} + {$DEFINE ASQLite_D2PLUS} + {$DEFINE ASQLite_D3PLUS} + {$DEFINE ASQLite_D4PLUS} + {$DEFINE ASQLite_D5PLUS} + {$DEFINE ASQLite_D6PLUS} + {$DEFINE ASQLite_D7PLUS} + {$DEFINE ASQLite_D2005PLUS} + {$DEFINE ASQLite_D2006PLUS} + {DELPHI10} + {$B-}{$X+}{$T-}{$H+} + {$DEFINE ASQLite_DYNARRAY} +{$ENDIF} +{$IFDEF VER170} + {$DEFINE ASQLite_D2PLUS} + {$DEFINE ASQLite_D3PLUS} + {$DEFINE ASQLite_D4PLUS} + {$DEFINE ASQLite_D5PLUS} + {$DEFINE ASQLite_D6PLUS} + {$DEFINE ASQLite_D7PLUS} + {$DEFINE ASQLite_D2005PLUS} + {DELPHI9} + {$B-}{$X+}{$T-}{$H+} + {$DEFINE ASQLite_DYNARRAY} +{$ENDIF} +{$IFDEF VER150} + {$DEFINE ASQLite_D2PLUS} + {$DEFINE ASQLite_D3PLUS} + {$DEFINE ASQLite_D4PLUS} + {$DEFINE ASQLite_D5PLUS} + {$DEFINE ASQLite_D6PLUS} + {$DEFINE ASQLite_D7PLUS} + {DELPHI7} + {$B-}{$X+}{$T-}{$H+} + {$DEFINE ASQLite_DYNARRAY} +{$ENDIF} +{$IFDEF VER140} + {$DEFINE ASQLite_D2PLUS} + {$DEFINE ASQLite_D3PLUS} + {$DEFINE ASQLite_D4PLUS} + {$DEFINE ASQLite_D5PLUS} + {$DEFINE ASQLite_D6PLUS} + {DELPHI6} + {$B-}{$X+}{$T-}{$H+} + {$DEFINE ASQLite_DYNARRAY} +{$ENDIF} +{$IFDEF VER130} + {$DEFINE ASQLite_D2PLUS} + {$DEFINE ASQLite_D3PLUS} + {$DEFINE ASQLite_D4PLUS} + {$DEFINE ASQLite_D5PLUS} + {DELPHI5} + {$DEFINE ASQLite_DYNARRAY} + {$B-}{$X+}{$T-}{$H+} +{$ENDIF} +{$IFDEF VER120} + {$DEFINE ASQLite_D2PLUS} + {$DEFINE ASQLite_D3PLUS} + {$DEFINE ASQLite_D4PLUS} + {DELPHI4} + {$DEFINE ASQLite_DYNARRAY} + {$B-}{$X+}{$T-}{$H+} +{$ENDIF} +{$IFDEF VER100} + {$DEFINE ASQLite_D2PLUS} + {$DEFINE ASQLite_D3PLUS} + {$DEFINE ASQLite_NOINT64} + {DELPHI3} + {$B-}{$X+}{$T-}{$H+} +{$ENDIF} +{$IFDEF VER90} + {$DEFINE ASQLite_D2PLUS} + {$DEFINE ASQLite_NOINT64} + {$DEFINE ASQLite_NOWIDESTRING} + {DELPHI2} + {$B-}{$X+}{$T-}{$H+} +{$ENDIF} + +{$IFDEF LINUX}{KYLIX}{$DEFINE CLX}{$ENDIF} +{$IFDEF FPC}{$H+}{$MODE DELPHI}{$ENDIF} +{$IFDEF ASQLite_D4PLUS}{$DEFINE ASQLite_HAVEVARIANT}{$ENDIF} +{$R-}{$Q-} + +{$IFDEF CLX} +{$DEFINE ASQLite_NOIDISPATCH} // not implemented +{$ENDIF} + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAADODriver.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAADODriver.pas new file mode 100644 index 0000000..ff9f5a6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAADODriver.pas @@ -0,0 +1,1727 @@ +unit uDAADODriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up +{ platform: Win32 +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$I ..\DataAbstract.inc} + +{$R DataAbstract_ADODriver_Glyphs.res} + +// with included option, you can receive errors like +// Access violation at address 6BD7297F in module 'msado15.dll'. Read of address 00000068. +{.$DEFINE ADOMONITOR_SHOWPARAMVALUES} + +interface + +uses Windows, Classes, DB, uDAEngine, uDAInterfaces, uDAADOInterfaces, uROClasses, ADODB, + uDAInterfacesEx, uDAUtils, uDAOracleInterfaces; + +type { TDAADODriver } + TDAADODriver = class(TDADriverReference) + end; + TDAEADODriver = class; + + TDAADOMonitor = class + private + FDriver: TDAEADODriver; + FEnabled: Boolean; + FOnCallback: TDALogTraceEvent; + FTraceFlags: TDATraceOptions; + procedure SetEnabled(const Value: Boolean); + procedure SetTraceFlags(const Value: TDATraceOptions); + procedure SetOnCallback(const Value: TDALogTraceEvent); + procedure ADOConnectionBeginTransComplete(Connection: TADOConnection; + TransactionLevel: Integer; const Error: Error; + var EventStatus: TEventStatus); + procedure ADOConnectionCommitTransComplete(Connection: TADOConnection; + const Error: Error; var EventStatus: TEventStatus); + procedure ADOConnectionConnectComplete(Connection: TADOConnection; + const Error: Error; var EventStatus: TEventStatus); + procedure ADOConnectionExecuteComplete(Connection: TADOConnection; + RecordsAffected: Integer; const Error: Error; + var EventStatus: TEventStatus; const Command: _Command; + const Recordset: _Recordset); + procedure ADOConnectionInfoMessage(Connection: TADOConnection; + const Error: Error; var EventStatus: TEventStatus); + procedure ADOConnectionRollbackTransComplete( + Connection: TADOConnection; const Error: Error; + var EventStatus: TEventStatus); + procedure ADOConnectionDisconnect(Connection: TADOConnection; + var EventStatus: TEventStatus); + procedure ADOConnectionWillConnect(Connection: TADOConnection; + var ConnectionString, UserID, Password: WideString; + var ConnectOptions: TConnectOption; var EventStatus: TEventStatus); + procedure ADOConnectionWillExecute(Connection: TADOConnection; + var CommandText: WideString; var CursorType: TCursorType; + var LockType: TADOLockType; var CommandType: TCommandType; + var ExecuteOptions: TExecuteOptions; var EventStatus: TEventStatus; + const Command: _Command; const Recordset: _Recordset); + public + constructor Create(ADriver: TDAEADODriver); + procedure ReAssignEvents; + procedure AssignEvents(AConnection:TADOConnection); + procedure UnAssignEvents(AConnection:TADOConnection); + property Enabled : Boolean read FEnabled write SetEnabled; + property TraceFlags: TDATraceOptions read FTraceFlags write SetTraceFlags; + property OnCallback: TDALogTraceEvent read FOnCallback write SetOnCallback; + end; + + { TDAEADODriver } + TDAEADODriver = class(TDAEDriver, IDADriver40) + private + FConnectionList: TThreadList; + FMonitor: TDAADOMonitor; + protected + procedure DoSetTraceOptions(TraceActive: boolean; TraceFlags: TDATraceOptions; Callback: TDALogTraceEvent); override; + procedure RegisterConnection(AConnection: TADOConnection); + procedure UnregisterConnection(AConnection: TADOConnection); + protected + function GetConnectionClass: TDAEConnectionClass; override; + procedure CustomizeConnectionObject(aConnection: TDAEConnection); override; + // IDADriver + function GetDriverID: string; override; + function GetDescription: string; override; + procedure GetAuxDrivers(out List: IROStrings); override; + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; + function GetProviderDefaultCustomParameters(Provider: string): string; safecall; + function GetDefaultConnectionType(const AuxDriver: string): string;override; safecall; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + + { TDAEADOConnection } + TDAEADOConnection = class(TDAEConnection, IDAADOConnection, IDAConnectionModelling, IDACanQueryDatabaseNames,IDAFileBasedDatabase,IDAUseGenerators,IDAOracleConnection) + private + fProviderName: string; + fSchemaEnabled: Boolean; + fProviderType: TDAOleDBProviderType; + fADOConnection: TADOConnection; + fQuery_CursorType: TCursorType; + fQuery_CursorLocation: TCursorLocation; + fQuery_ADOLockType: TADOLockType; + procedure GetViewOrTableNames(const aType: string; const aSystemTables: boolean; List: IROStrings); + function CreateCompatibleQuery: IDADataset; + + protected + function QueryInterface(const IID: TGUID; out Obj): HResult; override; stdcall; + function CreateCustomConnection: TCustomConnection; override; + function CreateMacroProcessor: TDASQLMacroProcessor; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + + procedure DoGetTableNames(out List: IROStrings); override; + procedure DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection); override; + + procedure DoGetViewNames(out List: IROStrings); override; + procedure DoGetStoredProcedureNames(out List: IROStrings); override; + procedure DoGetStoredProcedureParams(const aStoredProcedureName: string; out Params: TDAParamCollection); override; + procedure DoGetForeignKeys(out ForeignKeys: TDADriverForeignKeyCollection); override; + + function DoGetLastAutoInc(const GeneratorName: string): integer; override; + + function GetQuoteChars: TDAQuoteCharArray; override; + function isAlive: Boolean; override; safecall; + + // IADOConnection + function GetProviderName: string; safecall; + function GetProviderType: TDAOleDBProviderType; safecall; + function GetCommandTimeout: Integer; safecall; + procedure SetCommandTimeout(const Value: Integer); safecall; + + // IDAConnectionModelling + function BuildCreateTableSQL(aDataSet: TDADataSet; const aOverrideName: string = ''): string; safecall; + procedure CreateTable(aDataSet: TDADataSet; const aOverrideName: string = ''); safecall; + function FieldToDeclaration(aField: TDAField): string; safecall; + + // IDACanQueryDatabaseNames + function GetDatabaseNames: IROStrings; + function GetSPSelectSyntax(HasArguments: Boolean): String; override; safecall; + // IDAFileBasedDatabase + function GetFileExtensions: IROStrings; + function IdentifierNeedsQuoting(const iIdentifier: string): boolean; override; safecall; + { IDAUseGenerators } + function GetNextAutoinc(const GeneratorName: string): integer; safecall; + public + constructor Create(aDriver: TDAEDriver; aName: string = ''); override; + destructor Destroy; override; + property SchemaEnabled: Boolean read fSchemaEnabled write fSchemaEnabled; + end; + + { TDAEADOQuery } + TDAEADOQuery = class(TDAEDataset, IDAMustSetParams) + private + + protected + procedure ClearParams; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + + + // IDAMustSetParams + procedure SetParamValues(Params: TDAParamCollection); override;safecall; + procedure RefreshParams; override; safecall; + procedure GetParamValues(Params: TDAParamCollection); override;safecall; + + public + end; + + { TDAEADOStoredProcedure } + TDAEADOStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: integer; override; + function Execute: integer; override; + + // IDAMustSetParams + procedure SetParamValues(Params: TDAParamCollection); override;safecall; + procedure GetParamValues(Params: TDAParamCollection); override;safecall; + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses SysUtils, uDADriverManager, uDARes, Variants, ADOInt, uDAMacroProcessors, + Math, uDAHelpers, uROBinaryHelpers, uDAPostgresInterfaces; + +const + Default_CursorType = ctOpenForwardOnly; + Default_CursorLocation = clUseServer; + Default_ADOLockType = ltReadOnly; + +const + TConnectOptionStr: array[TConnectOption] of string = ('coConnectUnspecified', 'coAsyncConnect'); + TCursorLocationStr: array[TCursorLocation] of string = ('clUseServer', 'clUseClient'); + TCursorTypeStr: array[TCursorType] of string = ('ctUnspecified', 'ctOpenForwardOnly', 'ctKeyset', 'ctDynamic','ctStatic'); + TEventStatusStr: array[TEventStatus] of string = ('esOK', 'esErrorsOccured', 'esCantDeny', 'esCancel', 'esUnwantedEvent'); + TADOLockTypeStr: array[TADOLockType] of string = ('ltUnspecified', 'ltReadOnly', 'ltPessimistic', 'ltOptimistic', 'ltBatchOptimistic'); + TCommandTypeStr: array[TCommandType] of string = ('cmdUnknown', 'cmdText', 'cmdTable', 'cmdStoredProc', 'cmdFile', 'cmdTableDirect'); + TExecuteOptionStr: array[TExecuteOption] of string = ('eoAsyncExecute', 'eoAsyncFetch', 'eoAsyncFetchNonBlocking','eoExecuteNoRecords'); + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAADODriver]); +end; + +function GetDriverObject: IDADriver; +begin + if (_driver = nil) then _driver := TDAEADODriver.Create(nil); + result := _driver; +end; + +type + TDecimalVariant = packed record + VarType: TVarType; + scale: Byte; + sign: Byte; + Hi32: Cardinal; + Lo32: Cardinal; + Mid32: Cardinal; + Dummy: Cardinal; + end; + +function DecimalToInt64(const V: Variant): Int64; +var + vData: TDecimalVariant absolute V; +begin + if (vData.VarType = 14) and (vData.scale = 0) and (vData.Hi32 = 0) then begin + Result := Int64(vData.Lo32) or (Int64(vData.Mid32) shl 32); + if vData.sign <> 0 then result := -Result; + end else result := v; +end; + +function Int64ToDecimal(Data: Int64): Variant; +var + vd: TDecimalVariant absolute Result; +begin + VarClear(Result); + vd.scale := 0; + if data < 0 then begin + vd.Sign := 128; + data := -data; + end else + vd.sign := 0; + vd.Hi32 := 0; + vd.Mid32 := int64(data shr 32); + vd.Lo32 := data; + vd.VarType := 14; +end; + + +{ TDAEADOConnection } + +procedure TDAEADOConnection.DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +var + lConnectionString: string; + i: Integer; + sName,sValue: string; +begin + inherited; + + with aConnStrParser do begin + lConnectionString := ''; + if AuxDriver <> '' then lConnectionString := lConnectionString + 'Provider=' + AuxDriver + ';' else + raise EDADriverException.Create('No aux driver specified for ADO connection'); + + fProviderName := AuxDriver; + fProviderType := OleDBDriverIdToOleDBProviderType(fProviderName); + + if (Self.UserID <> '') then + lConnectionString := lConnectionString + 'User ID=' + Self.UserID + ';' + else if (UserID <> '') then + lConnectionString := lConnectionString + 'User ID=' + UserID + ';'; + + if (Self.Password <> '') then + lConnectionString := lConnectionString + 'Password=' + Self.Password + ';' + else if (Password <> '') then + lConnectionString := lConnectionString + 'Password=' + Password + ';'; + + if fProviderType = oledb_Jet then begin + lConnectionString := lConnectionString + 'Data Source=' + Database+';'; + end else begin + if Database <> '' then begin + if fProviderType = oledb_Postgresql then + lConnectionString := lConnectionString + 'Location=' + Database + ';' + else + lConnectionString := lConnectionString + 'Initial Catalog=' + Database + ';'; + end; + if Server <> '' then lConnectionString := lConnectionString + 'Data Source=' + Server + ';'; + + if fProviderType <> oledb_Postgresql then + lConnectionString := lConnectionString + 'OLE DB SERVICES=-2;'; + end; + fSchemaEnabled := false; + for i := 0 to AuxParamsCount -1 do + begin + sName := AuxParamNames[i]; + if sName = '' then Continue; + sValue := AuxParams[AuxParamNames[i]]; + if AnsiSameText('SCHEMAS',sName) then + fSchemaEnabled := sValue = '1' + else if AnsiSameText(sName, 'CursorLocation') then begin + if AnsiSameText('clUseServer',sValue) then + fQuery_CursorLocation:= clUseServer + else if AnsiSameText('clUseClient',sValue) then + fQuery_CursorLocation:= clUseClient; + end else if AnsiSameText(sName,'CursorType') then begin + if AnsiSameText('ctUnspecified',sValue) then + fQuery_CursorType:=ctUnspecified + else if AnsiSameText('ctOpenForwardOnly',sValue) then + fQuery_CursorType:=ctOpenForwardOnly + else if AnsiSameText('ctKeyset',sValue) then + fQuery_CursorType:=ctKeyset + else if AnsiSameText('ctDynamic',sValue) then + fQuery_CursorType:=ctDynamic + else if AnsiSameText('ctStatic',sValue) then + fQuery_CursorType:=ctStatic; + end else if AnsiSameText(sName, 'LockType') then begin + if AnsiSameText('ltUnspecified',sValue) then + fQuery_ADOLockType:= ltUnspecified + else if AnsiSameText('ltReadOnly',sValue) then + fQuery_ADOLockType:= ltReadOnly + else if AnsiSameText('ltPessimistic',sValue) then + fQuery_ADOLockType:= ltPessimistic + else if AnsiSameText('ltOptimistic',sValue) then + fQuery_ADOLockType:= ltOptimistic + else if AnsiSameText('ltBatchOptimistic',sValue) then + fQuery_ADOLockType:= ltBatchOptimistic; + end else begin + if sName[1] = '@' then sName:= Pchar(sName)+1; + lConnectionString := lConnectionString + sName + '=' + sValue +';'; + end; + end; + fADOConnection.ConnectionString := lConnectionString; + end; + SchemaEnabled := fSchemaEnabled or ((UpperCase(GetProviderName) = 'SQLNCLI') or (UpperCase(GetProviderName) ='SQLNCLI.1')); + if fProviderType = oledb_Postgresql then fQuery_CursorLocation:=clUseClient; // ADOQuery can't process correctly "name" datatype of Postgres + if fProviderType = oledb_Oracle then fQuery_CursorLocation:=clUseClient; // Oracle don't work correctly without clUseClient +end; + +function TDAEADOConnection.DoBeginTransaction: integer; +begin + result := fADOConnection.BeginTrans +end; + +procedure TDAEADOConnection.DoCommitTransaction; +begin + fADOConnection.CommitTrans +end; + +function TDAEADOConnection.CreateCustomConnection: TCustomConnection; +begin + fSchemaEnabled := true; + fADOConnection := TADOConnection.Create(nil); + fADOConnection.LoginPrompt := FALSE; + if Assigned(fADOConnection) then TDAEADODriver(Driver).RegisterConnection(fADOConnection); + result := fADOConnection; +end; + +function TDAEADOConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEADOQuery; +end; + +function TDAEADOConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEADOStoredProcedure; +end; + +procedure TDAEADOConnection.DoGetStoredProcedureNames(out List: IROStrings); +var + Schema, NameField: TField; + DataSet: TADODataSet; + lName: string; + p: integer; +begin + inherited; + case fProviderType of + oledb_MSSQL, oledb_MSSQL2005: MSSQL_DoGetNames(CreateCompatibleQuery,List,dotProcedure,SchemaEnabled); + oledb_Postgresql: Postgres_DoGetNames(CreateCompatibleQuery,List,dotProcedure); + oledb_Oracle: Oracle_DoGetNames(CreateCompatibleQuery,List,dotProcedure); + else + fADOConnection.Open(); + DataSet := TADODataSet.Create(nil); + try + fADOConnection.OpenSchema(siProcedures, EmptyParam, EmptyParam, DataSet); + NameField := DataSet.FieldByName('PROCEDURE_NAME'); + Schema := DataSet.Findfield('PROCEDURE_SCHEMA'); + while not DataSet.EOF do begin + lName := NameField.AsString; + if (Schema <> nil) and (Schema.Value = 'sys') then begin dataset.Next; continue; end; + p := Pos(';', lName); + if p > 1 then begin + if P+1 >= length(lName) then begin + if lName[p+1] = '0' then // function + begin + Dataset.Next; + continue; + end; + end; + SetLength(lName, p-1); + end; + if fSchemaEnabled and (Schema <> nil) and not (VarIsNull(Schema.Value)) then + List.Add(Schema.AsString + '.' + lName) + else + List.Add(lName); + DataSet.Next; + end; + finally + DataSet.Free; + end; + end; +end; + +function ADOTypeToFieldType(const ADOType: DataTypeEnum; EnableBCD: Boolean = False): TFieldType; +begin + case ADOType of + adEmpty: Result := ftUnknown; + adTinyInt, adSmallInt: Result := ftSmallint; + adError, adInteger, adUnsignedInt: Result := ftInteger; + adBigInt, adUnsignedBigInt: Result := ftLargeInt; + adUnsignedTinyInt, adUnsignedSmallInt: Result := ftWord; + adSingle, adDouble: Result := ftFloat; + adCurrency: Result := ftCurrency; + adBoolean: Result := ftBoolean; + adDBDate: Result := ftDate; + adDBTime: Result := ftTime; + adDate, adDBTimeStamp, adFileTime, adDBFileTime: Result := ftDateTime; + adChar: Result := ftFixedChar; + adVarChar: Result := ftString; + adBSTR, adWChar, adVarWChar: Result := ftWideString; + adLongVarChar, adLongVarWChar: Result := ftMemo; + adLongVarBinary: Result := ftBlob; + adBinary: Result := ftBytes; + adVarBinary: Result := ftVarBytes; + adChapter: Result := ftDataSet; + adPropVariant, adVariant: Result := ftVariant; + adIUnknown: Result := ftInterface; + adIDispatch: Result := ftIDispatch; + adGUID: Result := ftGUID; + adDecimal, adNumeric, adVarNumeric: + if EnableBCD then + Result := ftBCD + else + Result := ftFloat; + else + Result := ftUnknown; + end; +end; + +(*procedure TDAEADOConnection.DoGetStoredProcedureParams(const aStoredProcedureName: string; out Params: TDAParamCollection); +var + DataSet: TADODataSet; +begin + fADOConnection.Open(); + DataSet := TADODataSet.Create(nil); + try + fADOConnection.OpenSchema(siProcedureParameters, VarArrayOf([Null, Null, aStoredProcedureName]), EmptyParam, DataSet); + //NameField := DataSet.FieldByName('PROCEDURE_NAME'); { do not localize } + Params := TDAParamCollection.Create(NIL); + while not DataSet.EOF do begin + with Params.Add() do begin + Name := DataSet.FieldByName('PARAMETER_NAME').AsString; + ParamType := TDAParamType(DataSet.FieldByName('PARAMETER_TYPE').AsInteger); + //DataType := TDADataType(DataSet.FieldByName('DATA_TYPE').AsInteger); + DataType := VCLTypeToDAType(ADOTypeToFieldType(DataSet.FieldByName('DATA_TYPE').AsInteger)); + Size := DataSet.FieldByName('CHARACTER_MAXIMUM_LENGTH').AsInteger + //more info available: + //'PARAMETER_HASDEFAULT' + //'PARAMETER_DEFAULT' + //'IS_NULLABLE' + //'DATA_TYPE' + //'CHARACTER_MAXIMUM_LENGTH' + //'CHARACTER_OCTET_LENGTH' + //'DESCRIPTION' + //'TYPE_NAME' + //'LOCAL_TYPE_NAME' + end; + //List.Add(NameField.AsString); + DataSet.Next; + end; + finally + DataSet.Free; + end; +end;*) + +procedure TDAEADOConnection.DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection); +var + lField: TDAField; + //i: Integer; + DataSet: TADODataSet; +begin + case fProviderType of + oledb_MSSQL, oledb_MSSQL2005: MSSQL_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName),CreateCompatibleQuery,Fields); + oledb_Postgresql: Postgres_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName),CreateCompatibleQuery,Fields); + oledb_Oracle: Oracle_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName),CreateCompatibleQuery,Fields); + else + fADOConnection.Open(); + DataSet := TADODataSet.Create(nil); + try + if (pos('.', aTableName) > 0) and (SchemaEnabled) then + fADOConnection.OpenSchema(siColumns, VarArrayOf([Unassigned, Copy(aTableName, 1, Pos('.', aTableName)-1), Copy(aTableName, Pos('.', aTableName)+1, MaxInt)]), EmptyParam, DataSet) + else + fADOConnection.OpenSchema(siColumns, VarArrayOf([Unassigned, Unassigned, aTableName]), EmptyParam, DataSet); + //NameField := DataSet.FieldByName('PROCEDURE_NAME'); { do not localize } + if DataSet.EOF then begin + inherited DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), Fields); + exit ; + end; + + Fields := TDAFieldCollection.Create(nil); + + {for i := 0 to DataSet.FieldCount-1 do begin + DebugServer.Wre(DataSet.Fields[i].FieldName); + end; { for } + + while not DataSet.EOF do begin + with Fields.Add() do begin + Name := DataSet.FieldByName('COLUMN_NAME').AsString; + DataType := VCLTypeToDAType(ADOTypeToFieldType(DataSet.FieldByName('DATA_TYPE').AsInteger)); + Size := DataSet.FieldByName('CHARACTER_MAXIMUM_LENGTH').AsInteger; + Description := DataSet.FieldByName('DESCRIPTION').AsString; + // NotNull := DataSet.FieldByName('IS_NULLABLE').AsBoolean; + Required := not DataSet.FieldByName('IS_NULLABLE').AsBoolean; + + { Hack: for Memo fields ADO seems to return datString, with a lenght of $7fffffff } + //if (DataType = datString) and (Size = $7FFFFFFF) then + if (DataType = datString) and (Size > $100000) then + DataType := datMemo; + if (DAtaType = datWideString) and (Size > $100000) then + DataType := datWideMemo; + + if DataSet.FieldByName('COLUMN_HASDEFAULT').AsBoolean then + begin + DefaultValue := DataSet.FieldByName('COLUMN_DEFAULT').AsString; + if not TestDefaultValue(DefaultValue, DataType) then + DefaultValue := ''; + end; + + if ADOTypeToFieldType(DataSet.FieldByName('DATA_TYPE').AsInteger) = ftGUID then begin + Size := 38; { Quickhack, until we have proper GUID support in 3.0 } + if DefaultValue = 'newid()' then DefaultValue := Unassigned; + end; + + + //more info available: + //'COLUMN_HASDEFAULT' + //'COLUMN_DEFAULT' + //'IS_NULLABLE' + //'DATA_TYPE' + //'CHARACTER_MAXIMUM_LENGTH' + end; + //List.Add(NameField.AsString); + DataSet.Next; + end; + + if (pos('.', aTableName) > 0) and (SchemaEnabled) then + fADOConnection.OpenSchema(siPrimaryKeys, VarArrayOf([Unassigned, Copy(aTableName, 1, Pos('.', aTableName)-1), Copy(aTableName, Pos('.', aTableName)+1, MaxInt)]), EmptyParam, DataSet) + else + fADOConnection.OpenSchema(siPrimaryKeys, VarArrayOf([Unassigned, Unassigned, aTableName]), EmptyParam, DataSet); + {for i := 0 to DataSet.FieldCount-1 do begin + DebugServer.Write(DataSet.Fields[i].FieldName); + end; { for } + while not DataSet.EOF do begin + lField := Fields.FieldByName(DataSet.FieldByName('COLUMN_NAME').AsString); + if Assigned(lField) then + lField.InPrimaryKey := true; + + DataSet.Next(); + end; + finally + DataSet.Free; + end; + end; +end; + +procedure TDAEADOConnection.DoGetForeignKeys(out ForeignKeys: TDADriverForeignKeyCollection); +var + //i: Integer; + DataSet: TADODataSet; + s: string; + PKSchema,FKSchema: TField; +begin + inherited; + case fProviderType of + oledb_MSSQL, oledb_MSSQL2005: MSSQL_DoGetForeignKeys(CreateCompatibleQuery, ForeignKeys, SchemaEnabled); + oledb_Postgresql: Postgres_DoGetForeignKeys(CreateCompatibleQuery, ForeignKeys); + oledb_Oracle: Oracle_DoGetForeignKeys(CreateCompatibleQuery, ForeignKeys); + else + s := UpperCase(GetProviderName); + fADOConnection.Open(); + DataSet := TADODataSet.Create(nil); + try + fADOConnection.OpenSchema(siForeignKeys, EmptyParam, EmptyParam, DataSet); + {for i := 0 to DataSet.FieldCount-1 do begin + DebugServer.Write(DataSet.Fields[i].FieldName); + end; { for } + PKSchema := DataSet.FindField('PK_TABLE_SCHEMA'); + FKSchema := DataSet.FindField('FK_TABLE_SCHEMA'); + while not DataSet.EOF do begin + {lField := Fields.FieldByName(DataSet.FieldByName('COLUMN_NAME').AsString); + if Assigned(lField) then + lField.InPrimaryKey := true;} + with ForeignKeys.Add() do begin + FKField := DataSet.FieldByName('FK_COLUMN_NAME').AsString; + PKField := DataSet.FieldByName('PK_COLUMN_NAME').AsString; + //FKTable := DataSet.FieldByName('FK_TABLE_NAME').AsString; + //PKTable := DataSet.FieldByName('PK_TABLE_NAME').AsString; + if fSchemaEnabled and (PKSchema <> nil) and not (VarIsNull(PKSchema.Value)) then + PKTable := PKSchema.AsString + '.' + DataSet.FieldByName('PK_TABLE_NAME').AsString + else + PKTable := DataSet.FieldByName('PK_TABLE_NAME').AsString; + if fSchemaEnabled and (FKSchema <> nil) and not (VarIsNull(FKSchema.Value)) then + FKTable := FKSchema.AsString + '.' + DataSet.FieldByName('FK_TABLE_NAME').AsString + else + FKTable := DataSet.FieldByName('FK_TABLE_NAME').AsString; + + end; + {DebugServer.Write(DataSet.FieldByName('FK_TABLE_NAME').AsString+'.'+DataSet.FieldByName('FK_COLUMN_NAME').AsString+' => '+ + DataSet.FieldByName('PK_COLUMN_NAME').AsString);} + + DataSet.Next(); + end; + + + finally + DataSet.Free; + end; + end; +end; + +procedure TDAEADOConnection.GetViewOrTableNames(const aType: string; const aSystemTables: boolean; List: IROStrings); +var + SchemaField, + TypeField, + NameField: TField; + TableType: string; + DataSet: TADODataSet; +begin + fADOConnection.Open(); + + DataSet := TADODataSet.Create(nil); + try + fADOConnection.OpenSchema(siTables, EmptyParam, EmptyParam, DataSet); + + TypeField := DataSet.FieldByName('TABLE_TYPE'); { do not localize } + NameField := DataSet.FieldByName('TABLE_NAME'); { do not localize } + SchemaField := DataSet.FindField('TABLE_SCHEMA'); + while not DataSet.EOF do begin + TableType := TypeField.AsString; + if (TableType = aType) or ((aType = 'TABLE') and (TableType ='ACCESS TABLE')) or (aSystemTables and (TableType = 'SYSTEM TABLE')) then + begin + if fSchemaEnabled and (SchemaField <> nil) and not (VarIsNull(SchemaField.Value)) then + List.Add(SchemaField.AsString + '.' + NameField.AsString) + else + List.Add(NameField.AsString); + end; + DataSet.Next; + end; + finally + DataSet.Free; + end; +end; + +procedure TDAEADOConnection.DoGetViewNames(out List: IROStrings); +var + Schema,NameField: TField; + DataSet: TADODataSet; + lName: string; + p: integer; +begin + inherited; + case fProviderType of + oledb_MSSQL, oledb_MSSQL2005: MSSQL_DoGetNames(CreateCompatibleQuery,List,dotView,SchemaEnabled); + oledb_Postgresql: Postgres_DoGetNames(CreateCompatibleQuery,List,dotView); + oledb_Oracle: Oracle_DoGetNames(CreateCompatibleQuery,List,dotView); + else + GetViewOrTableNames('VIEW', false, List); + fADOConnection.Open(); + DataSet := TADODataSet.Create(nil); + try + fADOConnection.OpenSchema(siProcedures, EmptyParam, EmptyParam, DataSet); + NameField := DataSet.FieldByName('PROCEDURE_NAME'); { do not localize } + Schema := DataSet.Findfield('PROCEDURE_SCHEMA'); + if List = nil then + List := NewROStrings(); + while not DataSet.EOF do begin + lName := NameField.AsString; + if (Schema <> nil) and (Schema.Value = 'sys') then begin dataset.Next; continue; end; + p := Pos(';', lName); + if p > 1 then begin + if P+1 >= length(lName) then begin + if lName[p+1] = '1' then // procedure + begin + Dataset.Next; + continue; + end; + end; + SetLength(lName, p-1); + end; + if fSchemaEnabled and (Schema <> nil) and not (VarIsNull(Schema.Value)) then + List.Add(Schema.AsString + '.' + lName) + else + List.Add(lName); + DataSet.Next; + end; + finally + DataSet.Free; + end; + end; +end; + +procedure TDAEADOConnection.DoGetTableNames(out List: IROStrings); +begin + inherited; + case fProviderType of + oledb_MSSQL, oledb_MSSQL2005: MSSQL_DoGetNames(CreateCompatibleQuery,List,dotTable,SchemaEnabled); + oledb_Postgresql: Postgres_DoGetNames(CreateCompatibleQuery,List,dotTable); + oledb_Oracle: Oracle_DoGetNames(CreateCompatibleQuery,List,dotTable); + else + GetViewOrTableNames('TABLE', false, List); + end; +end; + +procedure TDAEADOConnection.DoRollbackTransaction; +begin + fADOConnection.RollbackTrans +end; + +function TDAEADOConnection.GetQuoteChars: TDAQuoteCharArray; +begin + case fProviderType of + oledb_Oracle: Result:= Oracle_GetQuoteChars; + else + result:=MSSQL_GetQuoteChars; + end; +end; + +function TDAEADOConnection.DoGetInTransaction: boolean; +begin + result := fADOConnection.InTransaction +end; + +function TDAEADOConnection.DoGetLastAutoInc( + const GeneratorName: string): integer; +var + ds: IDADataset; +begin + case fProviderType of + oledb_MSSQL, oledb_MSSQL2005: begin + Result := MSSQL_DoGetLastAutoInc(GeneratorName,CreateCompatibleQuery); + end; + oledb_Jet: begin + ds := NewDataset('SELECT @@Identity', ''); // Returns 0 by default + ds.Open; + result := ds.Fields[0].Value; + end; + oledb_Postgresql: Result := Postgres_DoGetLastAutoInc(GeneratorName,CreateCompatibleQuery); + oledb_Oracle: Result := Oracle_DoGetLastAutoInc(GeneratorName,CreateCompatibleQuery); + else + result := inherited DoGetLastAutoInc(GeneratorName); + end; +end; + +function TDAEADOConnection.GetProviderName: string; +begin + result := fProviderName; +end; + +function TDAEADOConnection.GetProviderType: TDAOleDBProviderType; +begin + result := fProviderType; +end; + +function TDAEADOConnection.CreateMacroProcessor: TDASQLMacroProcessor; +begin + case fProviderType of + oledb_MSSQL, oledb_MSSQL2005: Result := MSSQL_CreateMacroProcessor; + oledb_Jet: result := MSSQL_CreateMacroProcessor; + oledb_Oracle: Result := Oracle_CreateMacroProcessor; + else + Result:= inherited CreateMacroProcessor; + end; +end; + +procedure TDAEADOConnection.CreateTable(aDataSet: TDADataSet; const aOverrideName: string); +var + lSQL: string; +begin + lSQL := BuildCreateTableSQL(aDataSet, aOverrideName); + with NewCommand(lSQL, stSQL) do begin + Execute(); + end; { with } +end; + +function TDAEADOConnection.BuildCreateTableSQL(aDataSet: TDADataSet; const aOverrideName: string): string; +var + lName: string; +begin + lName := aOverrideName; + if lName = '' then lName := aDataSet.Name; + result := uDAHelpers.BuildCreateStatementForTable(aDataSet, lName, self); +end; + +function TDAEADOConnection.FieldToDeclaration(aField: TDAField): string; +begin + case aField.DataType of + datUnknown: result := 'unknown'; + datString: result := Format('varchar(%d)', [aField.Size]); + datDateTime: result := 'datetime'; + datFloat: result := 'float'; + datCurrency: result := 'money'; + datAutoInc: result := 'int IDENTITY(1,1)'; + datInteger: result := 'int'; + datLargeInt: result := 'largeint'; + datBoolean: result := 'bit'; + datMemo: result := 'text'; + datBlob: result := 'image'; + //datGuid:result := 'uniqueidentifier'; + end; { case } +end; + +function TDAEADOConnection.GetDatabaseNames: IROStrings; +begin + case fProviderType of + oledb_Jet: Result := NewROStrings; + oledb_Postgresql: Result:= Postgres_GetDatabaseNames(Self); + else + Result := MSSQL_GetDatabaseNames(Self); + end; +end; + +function TDAEADOConnection.GetSPSelectSyntax( + HasArguments: Boolean): String; +begin + case fProviderType of + oledb_MSSQL, oledb_MSSQL2005: Result := MSSQL_GetSPSelectSyntax(HasArguments); + oledb_Oracle: Result := Oracle_GetSPSelectSyntax(HasArguments); + oledb_Postgresql: Result:= Postgres_GetSPSelectSyntax(HasArguments); + else + Result := inherited GetSPSelectSyntax(HasArguments); + end; +end; + +function TDAEADOConnection.GetCommandTimeout: Integer; +begin + if fADOConnection <> nil then + Result:= fADOConnection.CommandTimeout + else + Result:=0; +end; + +procedure TDAEADOConnection.SetCommandTimeout(const Value: Integer); +begin + if fADOConnection <> nil then + fADOConnection.CommandTimeout:= Value; +end; + +function TDAEADOConnection.IdentifierNeedsQuoting( + const iIdentifier: string): boolean; +begin + Result := inherited IdentifierNeedsQuoting(iIdentifier); + if not Result then + case fProviderType of + oledb_Oracle: Result:= Oracle_IdentifierNeedsQuoting(iIdentifier); + oledb_Postgresql: Result:= Postgres_IdentifierNeedsQuoting(iIdentifier); + else + Result:= MSSQL_IdentifierNeedsQuoting(iIdentifier); + end; +end; + +function TDAEADOConnection.GetFileExtensions: IROStrings; +begin + case fProviderType of + oledb_Jet: Result:=MSACCESS_GetFileExtensions; + else + result := NewROStrings; + end; +end; + +function TDAEADOConnection.QueryInterface(const IID: TGUID; + out Obj): HResult; +begin + Result := E_NOINTERFACE; + if IsEqualGUID(IID, IDAFileBasedDatabase) then begin + if not (fProviderType in [oledb_Jet]) then Exit; + end + else if IsEqualGUID(IID, IDACanQueryDatabaseNames) then begin + if (fProviderType in [oledb_Jet]) then Exit; + end + else if IsEqualGUID(IID, IDAUseGenerators) then begin + if not (fProviderType in [oledb_Oracle, oledb_Postgresql]) then Exit; + end + else if IsEqualGUID(IID, IDAOracleConnection) then begin + if (fProviderType <> oledb_Oracle) then Exit; + end; + + Result := inherited QueryInterface(IID, Obj); +end; + +function TDAEADOConnection.isAlive: Boolean; +begin + Result:=(ConnectionObject <> nil) and not (stClosed in fADOConnection.State); +end; + +constructor TDAEADOConnection.Create(aDriver: TDAEDriver; aName: string); +begin + inherited Create(aDriver, aName); + fQuery_CursorType := Default_CursorType; + fQuery_CursorLocation := Default_CursorLocation; + fQuery_ADOLockType := Default_ADOLockType; +end; + +function TDAEADOConnection.GetNextAutoinc(const GeneratorName: string): integer; +begin + case fProviderType of + oledb_Oracle: Result:=Oracle_GetNextAutoinc(GeneratorName,CreateCompatibleQuery); + oledb_Postgresql: Result := Postgres_GetNextAutoInc(GeneratorName,CreateCompatibleQuery); + else + Result:=-1; + end; +end; + +function TDAEADOConnection.CreateCompatibleQuery: IDADataset; +begin + Result := GetDatasetClass.Create(Self); + TADOQuery(Result.Dataset).CursorLocation:=clUseClient; +end; + +procedure TDAEADOConnection.DoGetStoredProcedureParams( + const aStoredProcedureName: string; out Params: TDAParamCollection); +begin + case fProviderType of + oledb_Postgresql: Postgres_DoGetStoredProcedureParams(aStoredProcedureName, CreateCompatibleQuery, Params); + oledb_Oracle: Oracle_DoGetStoredProcedureParams(aStoredProcedureName, CreateCompatibleQuery, Params); + else + inherited; + end; +end; + +destructor TDAEADOConnection.Destroy; +begin + if Assigned(fADOConnection) then TDAEADODriver(Driver).UnregisterConnection(fADOConnection); + inherited; +end; + +{ TDAEADODriver } + +function TDAEADODriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + result := [doAuxDriver, doServerName, doDatabaseName, doLogin, doCustom]; +end; + +function TDAEADODriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEADOConnection; +end; + +function TDAEADODriver.GetDefaultConnectionType( + const AuxDriver: string): string; +begin + case OleDBDriverIdToOleDBProviderType(AuxDriver) of + oledb_MSSQL, + oledb_MSSQL2005 :Result:=MSSQL_DriverType; + oledb_Jet: Result := Access_DriverType; + oledb_Oracle: Result := Oracle_DriverType; + oledb_ODBC: Result := ODBC_DriverType; + oledb_Postgresql : Result := PostgreSQL_DriverType; + oleDb_VisualFoxPro: Result := FoxPro_DriverType; + else + Result:= inherited GetDefaultConnectionType(AuxDriver); + end; +end; + +function TDAEADODriver.GetDescription: string; +begin + result := 'Borland ADOExpress Driver'; +end; + +function TDAEADODriver.GetDriverID: string; +begin + result := 'ADO'; +end; + +procedure TDAEADODriver.GetAuxDrivers(out List: IROStrings); +var + i: TDAOleDBProviderType; +begin + inherited; + for i := Low(TDAOleDBProviderType) to High(TDAOleDBProviderType) do + if (i <> oledb_Unknown) {// Redundant but safe if I change the enum later...} then List.Add(OleDBProviders[i]); +end; + +function TDAEADODriver.GetProviderDefaultCustomParameters( + Provider: string): string; +begin + if Sametext(Trim(Provider), oledb_MSSQL2005id) then Result := 'Schemas=1;Integrated Security=SSPI;' else + if SameText(Trim(Provider), oledb_MSSQLId) then Result := 'Integrated Security=SSPI;'; +end; + +procedure TDAEADODriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +begin + inherited; + if Sametext(Trim(AuxDriver), oledb_MSSQL2005id) or SameText(Trim(AuxDriver), oledb_MSSQLId) then + MSSQL_GetAuxParams(List); + List.Add('CursorLocation=(clUseServer,clUseClient)'); + List.Add('CursorType=(ctUnspecified,ctOpenForwardOnly,ctKeyset,ctDynamic,ctStatic)'); + List.Add('LockType=(ltUnspecified,ltReadOnly,ltPessimistic,ltOptimistic,ltBatchOptimistic)'); + List.Add(''); + List.Add('You can pass any parameters directly to driver. Use the prefix ''@'' for this, e.g.:'); + List.Add('CursorLocation=clUseServer;@Mode=Read'); +end; + +procedure TDAEADODriver.CustomizeConnectionObject( + aConnection: TDAEConnection); +begin + inherited; + if Assigned(FMonitor) then fMonitor.AssignEvents(TDAEADOConnection(aConnection).fADOConnection); +end; + +constructor TDAEADODriver.Create(AOwner: TComponent); +begin + FConnectionList:= TThreadList.Create; + inherited; +end; + +destructor TDAEADODriver.Destroy; +begin + inherited; + FConnectionList.Free; +end; + +procedure TDAEADODriver.DoSetTraceOptions(TraceActive: boolean; + TraceFlags: TDATraceOptions; Callback: TDALogTraceEvent); +begin + inherited; + if TraceActive then begin + if (FMonitor = nil) then fMonitor := TDAADOMonitor.Create(Self); + fMonitor.Enabled := FALSE; + fMonitor.TraceFlags := TraceFlags; + FMonitor.OnCallback := Callback; + fMonitor.Enabled := TRUE; + end + else begin + if (FMonitor <> nil) then begin + fMonitor.Enabled:=False; + FreeAndNIL(fMonitor); + end; + end; +end; + +procedure TDAEADODriver.RegisterConnection(AConnection: TADOConnection); +begin + FConnectionList.Add(AConnection); + if FMonitor <> nil then FMonitor.AssignEvents(AConnection); +end; + +procedure TDAEADODriver.UnregisterConnection(AConnection: TADOConnection); +begin + FConnectionList.Remove(AConnection); + if FMonitor <> nil then FMonitor.UnAssignEvents(AConnection); +end; + +{ TDAEADOQuery } + +procedure TDAEADOQuery.ClearParams; +begin + inherited; + TADOQuery(Dataset).Parameters.Clear; +end; + +function TDAEADOQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TADOQuery.Create(nil); + + TADOQuery(result).LockType := TDAEADOConnection(aConnection).fQuery_ADOLockType;// ltReadOnly; + TADOQuery(result).CursorLocation :=TDAEADOConnection(aConnection).fQuery_CursorLocation; // clUseClient; + TADOQuery(result).CursorType := TDAEADOConnection(aConnection).fQuery_CursorType; //ctOpenForwardOnly; + TADOQuery(result).Connection := TDAEADOConnection(aConnection).fADOConnection; + TADOQuery(result).EnableBCD := False; + TADOQuery(result).CacheSize := 25; +// TADOQuery(result).Prepared := TRUE; + if TADOQuery(result).Connection <> nil then + TADOQuery(result).CommandTimeout := TADOQuery(result).Connection.CommandTimeout; +end; + +function TDAEADOQuery.DoExecute: integer; +begin + result := TADOQuery(Dataset).ExecSQL; + if TADOQuery(Dataset).Connection.Errors.Count>0 then + raise Exception.Create(TADOQuery(Dataset).Connection.Errors.Item[0].Description); +end; + +function TDAEADOQuery.DoGetSQL: string; +begin + result := TADOQuery(Dataset).SQL.Text; +end; + +procedure TDAEADOQuery.DoSetSQL(const Value: string); +begin + TADOQuery(Dataset).SQL.Text := Value; +end; + +procedure TDAEADOQuery.GetParamValues(Params: TDAParamCollection); +var + i: integer; + par: TDAParam; + inpar: TParameter; + ds: TADOQuery; +begin + ds := TADOQuery(Dataset); + if not Assigned(ds.Parameters) then + Exit; + + for i := 0 to (ds.Parameters.Count - 1) do begin + inpar := ds.Parameters[i]; + + par := Params.ParamByName(inpar.Name); + if par.ParamType in [daptOutput, daptInputOutput, daptResult] then begin + if inpar.DataType = ftLargeint then + par.Value := DecimalToInt64(inpar.Value) + else + par.Value := inpar.Value; + end; + end; +end; + +procedure TDAEADOQuery.RefreshParams; +var + i: Integer; + par: TDAParam; + outpar: TParameter; + ds: TADOQuery; +begin + inherited; + ds := TADOQuery(Dataset); + if not Assigned(ds.Parameters) then + Exit; + for i := 0 to ds.Parameters.Count -1 do begin + outpar := ds.Parameters[i]; + + par := self.ParamByName(outpar.Name); + + if outpar.DataType <> ftUnknown then begin + par.DataType := VCLTypeToDAType(outpar.DataType); + par.Size := outpar.Size; + par.DecimalPrecision := outpar.Precision; + par.DecimalScale := outpar.NumericScale; + case outpar.Direction of + pdInput: par.ParamType := daptInput; + pdOutput: par.ParamType := daptOutput; + pdInputOutput: par.ParamType := daptInputOutput; + pdReturnValue: par.ParamType := daptResult; + end; + end; + end; +end; + +procedure TDAEADOQuery.SetParamValues(Params: TDAParamCollection); +var + i: integer; + par: TDAParam; + outpar: TParameter; + ds: TADOQuery; + ft: TFieldType; +begin + ds := TADOQuery(Dataset); + if not Assigned(ds.Parameters) then + Exit; + + for i := 0 to (ds.Parameters.Count - 1) do begin + outpar := ds.Parameters[i]; + + par := Params.ParamByName(outpar.Name); + ft := DATypeToVCLType(par.DataType); + case par.ParamType of + daptInput: outpar.Direction := pdInput; + daptOutput: outpar.Direction := pdOutput; + daptInputOutput: outpar.Direction := pdInputOutput; + daptResult: outpar.Direction := pdReturnValue; + end; + + if par.DataType = datBlob then begin + outpar.DataType := ftBlob; + if not (par.ParamType in [daptOutput, daptResult]) then begin + if VarIsEmpty(par.Value) or VarIsNull(par.Value) + then outpar.Value := NULL + else outpar.Value := VariantBinaryToString(par.Value); + end; + end + else begin + if (outpar.DataType <> ft) and (ft <> ftUnknown) then + outpar.DataType := ft; + if not (par.ParamType in [daptOutput, daptResult]) then begin + if outpar.DataType = ftLargeint then + Outpar.Value := Int64ToDecimal(par.Value) + else + outpar.Value := par.Value; + end; + end; + if (VarIsEmpty(par.Value) or VarIsNull(par.Value)) and + (par.DataType <> datUnknown) then begin + if (outpar.DataType <> ft) and (ft <> ftUnknown) then + outpar.DataType := ft; + end; + end; +end; + +{ TDAEADOStoredProcedure } + +function TDAEADOStoredProcedure.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TADOStoredProc.Create(nil); + TADOStoredProc(result).Connection := TDAEADOConnection(aConnection).fADOConnection; + if TADOStoredProc(result).Connection <> nil then + TADOStoredProc(result).CommandTimeout := TADOStoredProc(result).Connection.CommandTimeout; +end; + +procedure TDAEADOStoredProcedure.SetParamValues(Params: TDAParamCollection); +var + i: integer; + par: TDAParam; + outpar: TParameter; + ds: TADOStoredProc; + ft: TFieldType; +begin + ds := TADOStoredProc(Dataset); + if not Assigned(ds.Parameters) then + Exit; + + for i := 0 to (ds.Parameters.Count - 1) do begin + outpar := ds.Parameters[i]; + + par := Params.ParamByName(outpar.Name); + ft := DATypeToVCLType(par.DataType); + case par.ParamType of + daptInput: outpar.Direction := pdInput; + daptOutput: outpar.Direction := pdOutput; + daptInputOutput: outpar.Direction := pdInputOutput; + daptResult: outpar.Direction := pdReturnValue; + end; + + if par.DataType = datBlob then begin + outpar.DataType := ftBlob; + if not (par.ParamType in [daptOutput, daptResult]) then begin + if VarIsEmpty(par.Value) or VarIsNull(par.Value) + then outpar.Value := NULL + else outpar.Value := VariantBinaryToString(par.Value); + end; + end + else begin + if (outpar.DataType <> ft) and (ft <> ftUnknown) then + outpar.DataType := ft; + if not (par.ParamType in [daptOutput, daptResult]) then begin + if outpar.DataType = ftLargeint then + Outpar.Value := Int64ToDecimal(par.Value) + else + outpar.Value := par.Value; + end; + end; + if (VarIsEmpty(par.Value) or VarIsNull(par.Value)) and + (par.DataType <> datUnknown) then begin + if (outpar.DataType <> ft) and (ft <> ftUnknown) then + outpar.DataType := ft; + end; + end; +end; + +procedure TDAEADOStoredProcedure.GetParamValues(Params: TDAParamCollection); +var + i: integer; + par: TDAParam; + inpar: TParameter; + ds: TADOQuery; +begin + ds := TADOQuery(Dataset); + if not Assigned(ds.Parameters) then + Exit; + + for i := 0 to (ds.Parameters.Count - 1) do begin + inpar := ds.Parameters[i]; + + par := Params.ParamByName(inpar.Name); + if par.ParamType in [daptOutput, daptInputOutput, daptResult] then begin + if inpar.DataType = ftLargeint then + par.Value := DecimalToInt64(inpar.Value) + else + par.Value := inpar.Value; + end; + end; +end; + + +type + TADOStoredProcHack = class(TADOStoredProc); + +function TDAEADOStoredProcedure.Execute: integer; +var + i: integer; + pstr: string; + params: TDAParamCollection; + ds: TADOStoredProc; + lParam: TParameter; +begin + params := GetParams; + if (Connection as TDAEADOConnection).fProviderType = oledb_Oracle then pstr := '' else pstr := '@'; + + ds := TADOStoredProc(Dataset); + + for i := ds.Parameters.Count -1 downto 0 do + begin + if (ds.Parameters[i].DataType = ftInterface) and (ds.Parameters[i].Direction in [pdOutput, pdInputOutput, pdReturnValue]) then + ds.Parameters.Delete(i); + end; + + if (ds.Parameters.Count<>Params.Count) then begin + ds.Parameters.Refresh; + end; + + {for i := 0 to (Parameters.Count - 1) do + if (Parameters[i].Direction in [pdInput, pdInputOutput]) + then Parameters.ParamByName('@'+params[i].Name) [i].Value := params[i].Value;} + + for i := 0 to (params.Count-1) do + begin + lParam:= ds.Parameters.ParamByName(pstr+params[i].Name); + if (params[i].ParamType = daptOutput) and (lParam.Direction <> pdOutput) then + lParam.Direction := pdOutput // ado sometimes doesn't set the direction properly + else if (params[i].ParamType in [daptInput, daptInputOutput]) then + lParam.Value := params[i].Value; + end; + + Result := DoExecute; + + {TADOStoredProcHack(Dataset).InitializeMasterFields(Self); + Command.Execute;} + + {for i := 0 to (Parameters.Count - 1) do + if (Parameters[i].Direction in [pdOutput, pdInputOutput, pdReturnValue]) + then params[i].Value := Parameters[i].Value;} + + for i := 0 to (params.Count-1) do + if (params[i].ParamType in [daptOutput, daptInputOutput, daptResult]) + then params[i].Value := ds.Parameters.ParamByName(pstr+params[i].Name).Value; +end; + +function TDAEADOStoredProcedure.GetStoredProcedureName: string; +begin + result := TADOStoredProc(Dataset).ProcedureName; +end; + +procedure TDAEADOStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TADOStoredProc(Dataset).ProcedureName := Name; +end; + +procedure TDAEADOStoredProcedure.RefreshParams; +var + dsparams: TParameters; + dPar: TParameter; + i: integer; + par: TDAParam; + params: TDAParamCollection; + nme: string; +begin + dsparams := TADOStoredProc(Dataset).Parameters; + + dsparams.Refresh; + params := GetParams; + params.Clear; + + for i := 0 to (dsparams.Count - 1) do begin + par := params.Add; + dPar:=dsparams[i]; + nme := dPar.Name; + if Pos('@', nme) > 0 then + System.Delete(nme, Pos('@', nme), 1); + par.Name := nme; + + if (dPar.DataType = ftInterface) then + par.DataType := datUnknown + else + par.DataType := VCLTypeToDAType(dPar.DataType); + par.ParamType := TDAParamType(dPar.Direction); + par.Size := dPar.Size; + end; +end; + +exports + GetDriverObject name func_GetDriverObject; + + +function TDAEADOStoredProcedure.DoExecute: integer; +begin + TADOStoredProcHack(TADOStoredProc(Dataset)).Command.Execute(result, EmptyParam); + + if TADOStoredProc(Dataset).Connection.Errors.Count >0 then + raise Exception.Create(TADOStoredProc(Dataset).Connection.Errors.Item[0].Description); +end; + +{ TDAADOMonitor } + +function ParseError(const AError: Error):string; +begin + if aError = nil then begin + Result:='' + end + else begin + Result:= + 'Error.Number: ' + IntToStr(AError.Number) + sLineBreak + + 'Error.NativeError: ' + IntToStr(AError.NativeError) + sLineBreak + + 'Error.Source: ' + AError.Source+sLineBreak + + 'Error.Description: ' + AError.Description + sLineBreak + + 'Error.SQLState: ' + AError.SQLState + sLineBreak; + end; +end; + +function ParseCommand(Const Command: _Command): string; +var + i: integer; + {$IFDEF ADOMONITOR_SHOWPARAMVALUES} + v: Variant; + {$ENDIF} + lItem: _Parameter; + s: String; +begin + if Command = nil then begin + Result:=sLineBreak; + end + else begin + s:= PWideChar(Command.CommandText); + Result:= + 'Command.CommandText: ' + StringReplace(s, sLineBreak,' ',[rfReplaceAll]) + sLineBreak + + 'Command.Parameters.Count: ' + IntToStr(Command.Parameters.Count) + sLineBreak; + for i:= 0 to Command.Parameters.Count-1 do begin + lItem:=Command.Parameters.Item[i]; + Result := Result + 'Command.Parameters['+intToStr(i)+ ']: '+ lItem.Name; + {$IFDEF ADOMONITOR_SHOWPARAMVALUES} + Result:= Result + ' = '; + v:=lItem.Value; + if VarIsNull(v) then Result := Result+ '' + else if VarIsEmpty(v) then Result := Result+ '' + else if lItem.Type_ in [adBinary, adVarBinary, adLongVarBinary, adLongVarChar] then Result:= Result + '' + else Result:= Result + VarToStr(v); + {$ENDIF} + Result:=Result+sLineBreak; + end; + Result:=Result+sLineBreak; + end; +end; + +function ParseEventStatus(const EventStatus: TEventStatus): string; +begin + Result := 'EventStatus: ' + TEventStatusStr[EventStatus]+sLineBreak; +end; + +procedure TDAADOMonitor.ADOConnectionBeginTransComplete( + Connection: TADOConnection; TransactionLevel: Integer; + const Error: Error; var EventStatus: TEventStatus); +begin + if Assigned(FOnCallback) then FOnCallback(Self, + 'Begin transaction'+sLineBreak+ + '-----------------'+sLineBreak+ + 'TransactionLevel: ' +IntToStr(TransactionLevel)+sLineBreak+ + ParseError(Error)+ + ParseEventStatus(EventStatus), + 0); +end; + +procedure TDAADOMonitor.ADOConnectionCommitTransComplete( + Connection: TADOConnection; const Error: Error; + var EventStatus: TEventStatus); +begin + if Assigned(FOnCallback) then FOnCallback(Self, + 'Commit transaction'+sLineBreak+ + '------------------'+sLineBreak+ + ParseError(Error)+ + ParseEventStatus(EventStatus), + 0); +end; + +procedure TDAADOMonitor.ADOConnectionConnectComplete( + Connection: TADOConnection; const Error: Error; + var EventStatus: TEventStatus); +begin + if Assigned(FOnCallback) then FOnCallback(Self, + 'Connect'+sLineBreak+ + '-------'+sLineBreak+ + ParseError(Error)+ + ParseEventStatus(EventStatus), + 0); +end; + +procedure TDAADOMonitor.ADOConnectionDisconnect(Connection: TADOConnection; + var EventStatus: TEventStatus); +begin + if Assigned(FOnCallback) then FOnCallback(Self, + 'Disconnect'+sLineBreak+ + '----------'+sLineBreak+ + ParseEventStatus(EventStatus), + 0); +end; + +procedure TDAADOMonitor.ADOConnectionExecuteComplete( + Connection: TADOConnection; RecordsAffected: Integer; const Error: Error; + var EventStatus: TEventStatus; const Command: _Command; + const Recordset: _Recordset); +begin + if Assigned(FOnCallback) then FOnCallback(Self, + 'Execute'+sLineBreak+ + '-------'+sLineBreak+ + 'RecordsAffected: ' +IntToStr(RecordsAffected)+sLineBreak+ + ParseError(Error)+ + ParseEventStatus(EventStatus)+ + ParseCommand(Command), + 0); +end; + +procedure TDAADOMonitor.ADOConnectionInfoMessage( + Connection: TADOConnection; const Error: Error; + var EventStatus: TEventStatus); +begin + if Assigned(FOnCallback) then FOnCallback(Self, + 'Info message'+sLineBreak+ + '------------'+sLineBreak+ + ParseError(Error)+ + ParseEventStatus(EventStatus), + 0); +end; + +procedure TDAADOMonitor.ADOConnectionRollbackTransComplete( + Connection: TADOConnection; const Error: Error; + var EventStatus: TEventStatus); +begin + if Assigned(FOnCallback) then FOnCallback(Self, + 'Rollback transaction'+sLineBreak+ + '-------------------'+sLineBreak+ + ParseError(Error)+ + ParseEventStatus(EventStatus), + 0); +end; + +procedure TDAADOMonitor.ADOConnectionWillConnect( + Connection: TADOConnection; var ConnectionString, UserID, + Password: WideString; var ConnectOptions: TConnectOption; + var EventStatus: TEventStatus); +begin + if Assigned(FOnCallback) then FOnCallback(Self, + 'Will connect'+sLineBreak+ + '------------'+sLineBreak+ + 'Connection string: ' + ConnectionString +sLineBreak+ + 'UserID: ' + UserID +sLineBreak+ + 'Password: ' + Password +sLineBreak+ + 'ConnectOptions: ' + TConnectOptionStr[ConnectOptions]+sLineBreak+ + ParseEventStatus(EventStatus), + 0); +end; + +function getExecuteOptionStr(const ExecuteOptions: TExecuteOptions): string; +var + i: TExecuteOption; +begin + Result:=''; + for i:= low(TExecuteOption) to High(TExecuteOption) do + if i in ExecuteOptions then Result:= Result + TExecuteOptionStr[i]+','; + if Length(Result) > 0 then SetLength(Result, Length(Result)-1); +end; + +procedure TDAADOMonitor.ADOConnectionWillExecute( + Connection: TADOConnection; var CommandText: WideString; + var CursorType: TCursorType; var LockType: TADOLockType; + var CommandType: TCommandType; var ExecuteOptions: TExecuteOptions; + var EventStatus: TEventStatus; const Command: _Command; + const Recordset: _Recordset); +begin + if Assigned(FOnCallback) then FOnCallback(Self, + 'Will execute' + sLineBreak+ + '------------' + sLineBreak+ + 'CommandText: ' + CommandText + sLineBreak+ + 'CursorType: ' + TCursorTypeStr[CursorType] + sLineBreak + + 'LockType: ' + TADOLockTypeStr[LockType] + sLineBreak + + 'CommandType: ' + TCommandTypeStr[CommandType] + sLineBreak + + 'ExecuteOptions: ' + getExecuteOptionStr(ExecuteOptions) + sLineBreak + + ParseEventStatus(EventStatus)+ + ParseCommand(Command), + 0); +end; + +procedure TDAADOMonitor.AssignEvents(AConnection: TADOConnection); +begin + if (AConnection <> nil) and FEnabled and Assigned(FOnCallback) then begin + // if toPrepare in FTraceFlags then AConnection. + if toExecute in FTraceFlags then begin + AConnection.OnExecuteComplete := ADOConnectionExecuteComplete; + AConnection.OnWillExecute := ADOConnectionWillExecute; + end; + // if toFetch in FTraceFlags then AConnection. + if toError in FTraceFlags then begin + AConnection.OnInfoMessage := ADOConnectionInfoMessage; + end; + // if toStmt in FTraceFlags then AConnection. + if toConnect in FTraceFlags then begin + AConnection.OnConnectComplete := ADOConnectionConnectComplete; + AConnection.OnWillConnect := ADOConnectionWillConnect; + AConnection.OnDisconnect := ADOConnectionDisconnect; + end; + if toTransact in FTraceFlags then begin + AConnection.OnBeginTransComplete := ADOConnectionBeginTransComplete; + AConnection.OnCommitTransComplete := ADOConnectionCommitTransComplete; + AConnection.OnRollbackTransComplete := ADOConnectionRollbackTransComplete; + end; + // if toBlob in FTraceFlags then AConnection. + // if toService in FTraceFlags then AConnection. + // if toMisc in FTraceFlags then AConnection. + // if toParams in FTraceFlags then AConnection. + end; +end; + +constructor TDAADOMonitor.Create(ADriver: TDAEADODriver); +begin + inherited Create; + FDriver := ADriver; + FEnabled := False; +end; + +procedure TDAADOMonitor.ReAssignEvents; +var + i: integer; + lmode: boolean; +begin + lMode:=FEnabled and (fTraceFlags <> []) and Assigned(FOnCallback); + with FDriver.FConnectionList.LockList do try + for i:= 0 to Count-1 do + if lMode then + AssignEvents(TADOConnection(Items[i])) + else + UnAssignEvents(TADOConnection(Items[i])); + finally + FDriver.FConnectionList.UnLockList; + end; +end; + +procedure TDAADOMonitor.SetEnabled(const Value: Boolean); +begin + if FEnabled <> Value then begin + FEnabled := Value; + if FEnabled and (fTraceFlags <> []) and Assigned(FOnCallback) then ReAssignEvents; + end; +end; + +procedure TDAADOMonitor.SetOnCallback(const Value: TDALogTraceEvent); +begin + if @fOnCallback <> @Value then begin + FOnCallback := Value; + if FEnabled and (fTraceFlags <> []) and Assigned(FOnCallback) then ReAssignEvents; + end; +end; + +procedure TDAADOMonitor.SetTraceFlags(const Value: TDATraceOptions); +begin + if FTraceFlags <> Value then begin + FTraceFlags := Value; + if FEnabled and (fTraceFlags <> []) and Assigned(FOnCallback) then ReAssignEvents; + end; +end; + +procedure TDAADOMonitor.UnAssignEvents(AConnection: TADOConnection); +begin + if AConnection <> nil then begin + // toTransact + AConnection.OnBeginTransComplete := nil; + AConnection.OnCommitTransComplete := nil; + AConnection.OnRollbackTransComplete := nil; + + //toConnect + AConnection.OnConnectComplete := nil; + AConnection.OnWillConnect := nil; + AConnection.OnDisconnect := nil; + + //toExecute + AConnection.OnExecuteComplete := nil; + AConnection.OnWillExecute := nil; + + //toError + AConnection.OnInfoMessage := nil; + end; +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAAnyDACDriver.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAAnyDACDriver.pas new file mode 100644 index 0000000..97220e5 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAAnyDACDriver.pas @@ -0,0 +1,2709 @@ +{-------------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library } +{ } +{ compiler: Delphi 6 and up } +{ platform: Win32 } +{ } +{ (c)opyright RemObjects Software. all rights reserved. } +{ } +{ Using this code requires a valid license of the Data Abstract } +{ which can be obtained at http://www.remobjects.com. } +{ } +{ Based on AnyDAC Driver by Dmitry Arefiev (www.da-soft.com) } +{-------------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} + {$I ..\DataAbstract.inc} +{$ENDIF MSWINDOWS} +{$IFDEF LINUX} + {$I ../DataAbstract.inc} +{$ENDIF LINUX} + +{$I uAD.inc} +{$IFNDEF DataAbstract_SchemaModelerOnly} + {$DEFINE ANYDAC_DEBUGMODE} +{$ENDIF} + +unit uDAAnyDACDriver; + +interface + +uses + DB, Classes, + uROClasses, + uDAEngine, uDAInterfaces, uDAInterfacesEx, uDAUtils, uDAOracleInterfaces, + uDAMySQLInterfaces, uDAADOInterfaces, uDAIBInterfaces, uDADB2Interfaces, + uDASybaseInterfaces, + uADStanIntf, uADStanOption, uADDatSManager, uADPhysIntf, uADCompClient +{$IFDEF AnyDAC_MONITOR} + ,uADMoniBase, uADMoniCustom +{$ENDIF} + ; + +type + TDAAnyDACDriverType = TADRDBMSKind; + + { TDAAnyDACDriver } + TDAAnyDACDriver = class(TDADriverReference) + end; + + { TDAEAnyDACDriver } + TDAEAnyDACDriver = class(TDAEDriver, IDADriver40) + private + FConnectionDefs: TStringList; + FConnectionDefIndex: Integer; +{$IFDEF AnyDAC_MONITOR} + FMonitor: TADMoniCustomClientLink; + FTraceCallback: TDALogTraceEvent; + procedure DoTrace(ASender: TADMoniClientLinkBase; const AClassName, AObjName, AMessage: String); +{$ENDIF AnyDAC_MONITOR} + function LookupConnectionString(const AConnectionString: String; AParsedParams: TStringList): String; + protected +{$IFDEF AnyDAC_MONITOR} + procedure DoSetTraceOptions(TraceActive: Boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); override; +{$ENDIF AnyDAC_MONITOR} + function GetConnectionClass: TDAEConnectionClass; override; + // IDADriver + procedure Initialize; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure Finalize; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetDriverID: string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetDescription: string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetAuxDrivers(out List: IROStrings); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetDefaultConnectionType(const AuxDriver: string): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // IDADriver40 + function GetProviderDefaultCustomParameters(Provider: string): string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + + { TDAEAnyDACConnection } + TDAEAnyDACConnection = class(TDAEConnection, IDAConnection, + IDAADOConnection, + IDAInterbaseConnection, + IDAIBTransactionAccess, + IDAIBConnectionProperties, + IDAOracleConnection, + IDAMySQLConnection, + IDADB2Connection, + IDASybaseConnection, + IDAConnectionModelling, + IDACanQueryDatabaseNames, + IDAFileBasedDatabase, + IDAUseGenerators, + IDACanQueryGeneratorsNames, + IDATestableObject) + private + FADConnection: TADConnection; + fDriverType: TDAAnyDACDriverType; + fMSSQLSchemaEnabled: Boolean; + fBiDirectionalDataSets: Boolean; + fDirectMode: Boolean; + FDataTypeSchema: String; + procedure DoGetNames(AList: IROStrings; AObjectType: TDAObjecttype); + procedure Native_DoGetTableFields(aTableName: string; out Fields: TDAFieldCollection); + procedure Native_DoGetForeignKeys(ForeignKeys: TDADriverForeignKeyCollection); + function Native_DoGetLastAutoInc(const GeneratorName: string): integer; + function Native_GetQuoteChars: TDAQuoteCharArray; + function GetAnyDACPhysConnection:IADPhysConnection; + procedure MapAsFIB; + protected + // IInterface + function QueryInterface(const IID: TGUID; out Obj): HResult; override; stdcall; + // TDAEConnection + function CreateCustomConnection: TCustomConnection; override; + function CreateMacroProcessor: TDASQLMacroProcessor; override; + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); override; + procedure SetupDataset(ADataSet: TADRdbmsDataSet; AFetchMeta: Boolean); + procedure SetupOptions(AOptions: IADStanOptions; AFetchMeta: Boolean); + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + procedure DoGetTableNames(out List: IROStrings); override; + procedure DoGetViewNames(out List: IROStrings); override; + procedure DoGetStoredProcedureNames(out List: IROStrings); override; + procedure DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection); override; + procedure DoGetStoredProcedureParams(const aStoredProcedureName: string; out Params: TDAParamCollection); override; + procedure DoGetForeignKeys(out ForeignKeys: TDADriverForeignKeyCollection); override; + function DoGetLastAutoInc(const GeneratorName: string): integer; override; + // IDATestObject + // nothing + // IDAConnection + function GetSPSelectSyntax(AHasArguments: Boolean): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetQuoteChars: TDAQuoteCharArray; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function IdentifierNeedsQuoting(const AIdentifier: string): boolean; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // IDAADOConnection + function GetProviderName: string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetProviderType: TDAOleDBProviderType; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetCommandTimeout: Integer; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetCommandTimeout(const Value: Integer); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // IDAInterbaseConnection + // nothing + // IDAIBTransactionAccess + function GetTransaction: TObject; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // IDAIBConnectionProperties + function GetRole: string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetRole(const Value: string); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetSQLDialect: integer; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetSQLDialect(Value: integer); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetCharset: string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetCharset(const Value: string); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure Commit; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure CommitRetaining; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure Rollback; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure RollbackRetaining; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // IDAOracleConnection + // nothing + // IDAConnectionModelling + function FieldToDeclaration(aField: TDAField): string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function BuildCreateTableSQL(aDataSet: TDADataSet; const aOverrideName: string = ''): string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure CreateTable(aDataSet: TDADataSet; const aOverrideName: string = ''); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // IDACanQueryDatabaseNames + function GetDatabaseNames: IROStrings; + // IDAFileBasedDatabase + function GetFileExtensions: IROStrings; + // IDADirectoryBasedDatabase + // nothing + // IDAUseGenerators + function GetNextAutoinc(const GeneratorName: string): integer; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // IDACanQueryGeneratorsNames + function GetGeneratorNames: IROStrings; + end; + + { TDAEAnyDACQuery } + TDAEAnyDACQuery = class(TDAEDataset, IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + // TDAEDataset + procedure DoPrepare(AValue: boolean); override; + function DoExecute: integer; override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function DoGetSQL: string; override; + procedure DoSetSQL(const AValue: string); override; + procedure ClearParams; override; + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + + { TDAEAnyDACStoredProcedure } + TDAEAnyDACStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + // TDAEDataset + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function Execute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + + { TDAEAnyDACNativeField } + TDAEAnyDACNativeField = class(TInterfacedObject, IDANativeField) + private + FCol: TADDatSColumn; + FCmd: IADPhysCommand; + protected + function GetNativeObject: TObject; + function isTFieldCompatible: Boolean; + function GetFieldName: string; + function GetDataType: TFieldType; + function GetSize: integer; + function GetDecimalPrecision: Integer; + procedure SetDecimalPrecision(Value: integer); + function GetDecimalScale: Integer; + procedure SetDecimalScale(Value: integer); + procedure SetDataType(Value: TFieldType); + public + constructor Create(ACol: TADDatSColumn; const ACmd: IADPhysCommand); + end; + + { TDAEAnyDACNativeDatabaseAccess } + TDAEAnyDACNativeDatabaseAccessFlags = set of (nfActive, nfBOF, nfEOF); + TDAEAnyDACNativeDatabaseAccess = class(TObject, IInterface, IDANativeDatabaseAccess) + private + FCmd: IADPhysCommand; + FTab: TADDatSTable; + FFlags: TDAEAnyDACNativeDatabaseAccessFlags; + FRowIndex: Integer; + FRowsPurged: Integer; + FBuffs: array of Pointer; + procedure First; + procedure CheckActive; + procedure CheckBidir; + function LocateRecord(const KeyFields: string; const KeyValues: Variant; + Options: TLocateOptions; AChangePos: Boolean): Integer; + protected + // IInterface + function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall; + function _AddRef: Integer; stdcall; + function _Release: Integer; stdcall; + // IDANativeDatabaseAccess + procedure ClearFieldDefs; + function GetRecordCount: Integer; + function GetBOF: Boolean; + function GetEOF: Boolean; + function GetActive: Boolean; + procedure SetActive(const aValue: Boolean); + procedure Next; + function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; + function Lookup(const KeyFields: string; const KeyValues: Variant; const ResultFields: string): Variant; + function GetFieldName(Index: Integer): string; + procedure DisableControls; + procedure EnableControls; + function GetIsEmpty: boolean; + procedure FreeBookmark(Bookmark: TBookmark); + function GetBookMark: pointer; + procedure GotoBookmark(Bookmark: TBookmark); + function GetState: TDatasetState; + function ControlsDisabled: Boolean; + procedure Prepare(const AValue: Boolean); + function GetFields(Index: integer): IDANativeField; + function FieldCount: Integer; + function FindField(const FieldName: string): IDANativeField; + function IsTDatasetCompatible: Boolean; + function GetNativeFieldData(Index: Integer; var Data: pointer; var DataSize: cardinal):Boolean; + function GetNativeFieldValue(Index: Integer): Variant; + function CanFreeNativeFieldData: Boolean; + public + Constructor Create(ADAEConnection: TDAEAnyDACConnection); + destructor Destroy; override; + end; + + { TDAEAnyDACQueryNative } + TDAEAnyDACQueryNative = class(TDAEDataset, IDAMustSetParams) + private + function GetNativeObject: TDAEAnyDACNativeDatabaseAccess; + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + function CreateNativeObject(aConnection: TDAEConnection): TObject; override; + function CreateNativeDatabaseAccess: IDANativeDatabaseAccess; override; + // TDAEDataset + procedure DoPrepare(AValue: boolean); override; + function DoExecute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function DoGetSQL: string; override; + procedure DoSetSQL(const AValue: string); override; + procedure ClearParams; override; + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + property NativeObject: TDAEAnyDACNativeDatabaseAccess read GetNativeObject; + end; + + { TDAEAnyDACStoredProcedureNative } + TDAEAnyDACStoredProcedureNative = class(TDAEStoredProcedure, IDAMustSetParams) + private + function GetNativeObject: TDAEAnyDACNativeDatabaseAccess; + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + function CreateNativeObject(aConnection: TDAEConnection): TObject; override; + function CreateNativeDatabaseAccess: IDANativeDatabaseAccess; override; + // TDAEDataset + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function Execute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + property NativeObject: TDAEAnyDACNativeDatabaseAccess read GetNativeObject; + end; + +procedure Register; +function GetDriverObject: IDADriver; stdcall; +function AnyDACDriverIdToAnyDACDriverType(Provider: string): TDAAnyDACDriverType; + +implementation + +uses + {$IFDEF FPC} LResources, {$ENDIF} + {$IFDEF MSWINDOWS} Windows, {$ENDIF} + SysUtils, Variants, FmtBCD, + uDADriverManager, uDARes, uDAHelpers, uROBinaryHelpers, + uADStanParam, uADStanConst, uADStanFactory, uADGUIxConsoleWait, uADPhysManager, + uADPhysODBC, uADPhysOracl, uADPhysMySQL, uADPhysMSSQL, uADPhysMSAcc, uADPhysDB2, + uADPhysASA, uADPhysIB, uADPhysADS, uADStanUtil +{$IFDEF AnyDAC_D11} + , uADPhysTDBX +{$ELSE} + {$IFDEF AnyDAC_D6} + , uADPhysDbExp + {$ENDIF} +{$ENDIF}; + +{$IFNDEF FPC} + {$R DataAbstract_AnyDACDriver_Glyphs.res} +{$ENDIF} + +{$IFDEF DataAbstract_SchemaModelerOnly} + {$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +{------------------------------------------------------------------------------} +{ Generic procedures } +{------------------------------------------------------------------------------} +function AnyDACDriverIdToAnyDACDriverType(Provider: string): TDAAnyDACDriverType; +var + FConnectionIntf: IADPhysConnection; + oConMeta: IADPhysConnectionMetadata; +begin + Result := mkUnknown; + if Provider = '' then + Exit; + try + with TADConnection.Create(nil) do + try + ResultConnectionDef.DriverID := Provider; + ADPhysManager.CreateConnection(ResultConnectionDef, FConnectionIntf); + if FConnectionIntf <> nil then begin + FConnectionIntf.CreateMetadata(oConMeta); + Result := oConMeta.Kind; + end; + finally + Free; + end; + except + // hide an exception + end; +end; + +{------------------------------------------------------------------------------} +procedure SetADParamValuesFromDA(ADAParams: TDAParamCollection; + AADParams: TADParams; ASetType: Boolean); +var + i: integer; + oDAPar: TDAParam; + oADPar: TADParam; +begin + for i := 0 to AADParams.Count - 1 do begin + oADPar := AADParams[i]; + oDAPar := ADAParams.ParamByName(oADPar.Name); + oADPar.ParamType := TParamType(oDAPar.ParamType); + if oDAPar.ParamType in [daptInput, daptInputOutput, daptUnknown] then + if oDAPar.DataType in [datBlob, datMemo, datWideMemo] then begin + if ASetType then + if oDAPar.BlobType = dabtUnknown then + case oDAPar.DataType of + datMemo: oADPar.DataType := ftMemo; + datBlob: oADPar.DataType := ftBlob; + datWideMemo: oADPar.DataType := {$IFDEF AnyDAC_D10} ftWideMemo {$ELSE} ftFmtMemo {$ENDIF}; + end + else + oADPar.DataType := BlobTypeMappings[oDAPar.BlobType]; + if VarIsEmpty(oDAPar.Value) or VarIsNull(oDAPar.Value) then + oADPar.Clear + else + oADPar.AsBlob := VariantBinaryToString(oDAPar.Value); + end + else begin + if ASetType then + oADPar.DataType := DATypeToVCLType(oDAPar.DataType); + if VarIsEmpty(oDAPar.Value) or VarIsNull(oDAPar.Value) then + oADPar.Clear + else + oADPar.Value := oDAPar.Value; + end + else + if ASetType then begin + oADPar.DataType := DATypeToVCLType(oDAPar.DataType); + oADPar.Size := oDAPar.Size; + oADPar.Precision := oDAPar.DecimalPrecision; + oADPar.NumericScale := oDAPar.DecimalScale; + end; + end; +end; + +{------------------------------------------------------------------------------} +procedure GetDAParamValuesFromAD(Params: TDAParamCollection; AADParams: TADParams); +var + i: integer; + oDAPar: TDAParam; + oADPar: TADParam; +begin + if not Assigned(AADParams) then + Exit; + for i := 0 to AADParams.Count - 1 do begin + oADPar := AADParams[i]; + oDAPar := Params.ParamByName(oADPar.Name); + if oDAPar.ParamType in [daptOutput, daptInputOutput, daptResult] then + oDAPar.Value := oADPar.Value; + end; +end; + +{------------------------------------------------------------------------------} +function MapAD2DADataType(AADDataType: TADDataType; out ABlobType: TDABlobType): TDADataType; +begin + ABlobType := dabtUnknown; + case AADDataType of + dtUnknown: Result := datUnknown; + dtBoolean: Result := datBoolean; + dtSByte: Result := datShortInt; + dtInt16: Result := datSmallInt; + dtInt32: Result := datInteger; + dtInt64: Result := datLargeInt; + dtByte: Result := datByte; + dtUInt16: Result := datWord; + dtUInt32: Result := datCardinal; + dtUInt64: Result := datLargeUInt; + dtDouble: Result := datFloat; + dtCurrency: Result := datFloat; // Double + dtBCD: Result := datCurrency; // Currency + dtFmtBCD: Result := datDecimal; // TBcd + dtDateTime: Result := datDateTime; + dtTime: Result := datDateTime; + dtDate: Result := datDateTime; + dtDateTimeStamp: Result := datDateTime; + dtAnsiString: Result := datString; + dtWideString: Result := datWideString; + dtByteString: Result := datString; + dtBlob: begin Result := datBlob; ABlobType := dabtBlob; end; + dtMemo: begin Result := datMemo; ABlobType := dabtMemo; end; + dtWideMemo: begin Result := datWideMemo; ABlobType := dabtMemo; end; + dtHBlob: begin Result := datBlob; ABlobType := dabtOraBlob; end; + dtHMemo: begin Result := datMemo; ABlobType := dabtOraClob; end; + dtWideHMemo: begin Result := datWideMemo; ABlobType := dabtOraClob; end; + dtHBFile: begin Result := datBlob; ABlobType := dabtOraBlob; end; + dtGUID: Result := datGuid; + else raise Exception.CreateFmt('AnyDAC data type [%s] is not supported by DataAbstract', + [C_AD_DataTypeNames[AADDataType]]); + end; +end; + +{------------------------------------------------------------------------------} +{ TDAEAnyDACDriver } +{------------------------------------------------------------------------------} +function TDAEAnyDACDriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + result := [doAuxDriver, doServerName, doDatabaseName, doLogin, doCustom]; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEAnyDACConnection; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACDriver.GetDescription: string; +begin + result := 'RemObjects AnyDAC Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACDriver.GetDriverID: string; +begin + result := 'AnyDAC'; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACDriver.GetAuxDrivers(out List: IROStrings); +begin + List := NewROStrings; + ADManager.GetDriverNames(List.Strings); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACDriver.GetProviderDefaultCustomParameters(Provider: string): string; +begin + Result := ''; + case AnyDACDriverIdToAnyDACDriverType(Provider) of + mkOracle: Result := S_AD_ConnParam_Common_OSAuthent + '=No;'; + mkMSSQL: Result := 'Schemas=1;Integrated Security=SSPI;'; + mkMySQL: Result := MYSQL_GetDefaultCustomParameters; + mkInterbase: Result := S_AD_ConnParam_IB_Protocol + '=TCPIP;'; + end; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACDriver.GetDefaultConnectionType(const AuxDriver: string): string; +begin + case AnyDACDriverIdToAnyDACDriverType(AuxDriver) of + mkOracle: Result := Oracle_DriverType; + mkMSSQL: Result := MSSQL_DriverType; + mkMSAccess: Result := Access_DriverType; + mkMySQL: Result := MySQL_DriverType; + mkDB2: Result := DB2_DriverType; + mkASA: Result := ASA_DriverType; + mkInterbase: Result := IB_DriverType; + else + Result := inherited GetDefaultConnectionType(AuxDriver); + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACDriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +const + C_Line: String = '-----------------------------'; +begin + inherited; + + List.Add('AnyDAC Driver parameters'); + List.Add(C_Line); + case AnyDACDriverIdToAnyDACDriverType(AuxDriver) of + mkOracle: + ; + mkMSSQL: + MSSQL_GetAuxParams(List); + mkMSAccess: + ; + mkMySQL: + MYSQL_GetAuxParams(List); + mkDB2: + ; + mkASA: + ; + mkInterbase: + begin + AddIBAuxParams(List); + List.Add('DataTypeSchema='); + end; + end; + List.Add('ConnectionDefName='); + List.Add('BiDirectionalDataSets=0,1'); + List.Add('DirectMode=0,1'); + List.Add(''); + + case AnyDACDriverIdToAnyDACDriverType(AuxDriver) of + mkOracle: + begin + List.Add('Oracle AuxDriver parameters'); + List.Add(C_Line); + List.Add('You can pass any parameters directly to aux driver. Use the prefix ''@'' for this, e.g.:'); + List.Add('@SQLTrace=True;@Pooled=True'); + List.Add(''); + List.Add('Detailed description of aux driver parameters you can find at:'); + List.Add('http://wiki.remobjects.com/wiki/Connect_to_Oracle_Server_%28AnyDAC%29'); + end; + mkMSSQL: + begin + List.Add('MSSQL AuxDriver parameters'); + List.Add(C_Line); + List.Add(''); + List.Add('You can pass any parameters directly to aux driver. Use the prefix ''@'' for this, e.g.:'); + List.Add('@App=My DA Server;@Pooled=True'); + List.Add(''); + List.Add('Detailed description of aux driver parameters you can find at:'); + List.Add('http://wiki.remobjects.com/wiki/Connect_to_Microsoft_SQL_Server_%28AnyDAC%29'); + end; + mkMSAccess: + begin + List.Add('MSAccess AuxDriver parameters'); + List.Add(C_Line); + List.Add('You can pass any parameters directly to aux driver. Use the prefix ''@'' for this, e.g.:'); + List.Add('@ReadOnly=True;@Pooled=True'); + List.Add(''); + List.Add('Detailed description of aux driver parameters you can find at:'); + List.Add('http://wiki.remobjects.com/wiki/Connect_to_MS_Access_database_%28AnyDAC%29'); + end; + mkMySQL: + begin + List.Add('MySQL AuxDriver parameters'); + List.Add(C_Line); + List.Add('You can pass any parameters directly to aux driver. Use the prefix ''@'' for this, e.g.:'); + List.Add('@CharacterSet=utf8;@Pooled=True'); + List.Add(''); + List.Add('Detailed description of aux driver parameters you can find at:'); + List.Add('http://wiki.remobjects.com/wiki/Connect_to_MySQL_Server_%28AnyDAC%29'); + end; + mkDB2: + begin + List.Add('DB2 AuxDriver parameters'); + List.Add(C_Line); + List.Add('You can pass any parameters directly to aux driver. Use the prefix ''@'' for this, e.g.:'); + List.Add('@Alias=MyDB;@Pooled=True'); + List.Add(''); + List.Add('Detailed description of aux driver parameters you can find at:'); + List.Add('http://wiki.remobjects.com/wiki/Connect_to_IBM_DB2_Server_%28AnyDAC%29'); + end; + mkASA: + begin + List.Add('ASA AuxDriver parameters'); + List.Add(C_Line); + List.Add('You can pass any parameters directly to aux driver. Use the prefix ''@'' for this, e.g.:'); + List.Add('@ODBCAdvanced=AutoStart=Yes;@DatabaseFile=C:\sybase\addemo_asa10.db;@Pooled=True'); + List.Add(''); + List.Add('Detailed description of aux driver parameters you can find at:'); + List.Add('http://wiki.remobjects.com/wiki/Connect_to_Sybase_SQL_Anywhere_%28AnyDAC%29'); + end; + mkInterBase: + begin + List.Add('IB/FB AuxDriver parameters'); + List.Add(C_Line); + List.Add('You can pass any parameters directly to aux driver. Use the prefix ''@'' for this, e.g.:'); + List.Add('@Protocol=TCPIP;@CharacterSet=win1251;@Pooled=True'); + List.Add(''); + List.Add('Detailed description of aux driver parameters you can find at:'); + List.Add('http://wiki.remobjects.com/wiki/Connect_to_Interbase_or_Firebird_Server_%28AnyDAC%29'); + end; + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACDriver.Initialize; +begin + FConnectionDefs := TStringList.Create; + FConnectionDefs.Sorted := True; + FConnectionDefIndex := 0; + ADManager.Open; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACDriver.Finalize; +begin + ADManager.Close; +{$IFDEF AnyDAC_MONITOR} + FreeAndNil(FMonitor); +{$ENDIF AnyDAC_MONITOR} +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACDriver.LookupConnectionString(const AConnectionString: String; + AParsedParams: TStringList): String; +var + i: Integer; +begin + i := FConnectionDefs.IndexOf(AConnectionString); + if i = -1 then begin + Inc(FConnectionDefIndex); + FConnectionDefs.AddObject(AConnectionString, TObject(FConnectionDefIndex)); + with ADManager.ConnectionDefs.AddConnectionDef do begin + Name := Format('__DACD_%d', [FConnectionDefIndex]); + Params.AddStrings(AParsedParams); + Result := Name; + end; + end + else + Result := Format('__DACD_%d', [Integer(FConnectionDefs.Objects[i])]); +end; + +{------------------------------------------------------------------------------} +{$IFDEF AnyDAC_MONITOR} +procedure TDAEAnyDACDriver.DoTrace(ASender: TADMoniClientLinkBase; + const AClassName, AObjName, AMessage: String); +begin + if Assigned(FTraceCallback) then + FTraceCallback(ASender, AMessage, 0); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACDriver.DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); +var + eKinds: TADMoniEventKinds; +begin + inherited; + if TraceActive then begin + FTraceCallBack := Callback; + eKinds := []; + if toPrepare in TraceOptions then eKinds := eKinds + [ekCmdPrepare]; + if toExecute in TraceOptions then eKinds := eKinds + [ekCmdExecute]; + if toFetch in TraceOptions then eKinds := eKinds + [ekCmdDataIn]; + if toError in TraceOptions then eKinds := eKinds + [ekError]; + // if toStmt in TraceOptions then eKinds := eKinds + [tfStmt]; + if toConnect in TraceOptions then eKinds := eKinds + [ekConnConnect]; + if toTransact in TraceOptions then eKinds := eKinds + [ekConnTransact]; + // if toBlob in TraceOptions then eKinds := eKinds + [tfBlob]; + if toService in TraceOptions then eKinds := eKinds + [ekVendor]; + if toMisc in TraceOptions then eKinds := eKinds + [ekConnService, ekLiveCycle, ekAdaptUpdate]; + if toParams in TraceOptions then eKinds := eKinds + [ekCmdDataIn, ekCmdDataOut]; + if FMonitor = nil then FMonitor := TADMoniCustomClientLink.Create(Self); + FMonitor.Tracing := False; + FMonitor.OnOutput := DoTrace; + FMonitor.EventKinds := eKinds; + FMonitor.Tracing := True; + end + else begin + if FMonitor <> nil then + FMonitor.Tracing := False; + FTraceCallback := nil; + end; +end; +{$ENDIF AnyDAC_MONITOR} + +{------------------------------------------------------------------------------} +{ TDAEAnyDACConnection } +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.QueryInterface(const IID: TGUID; out Obj): HResult; +begin + Result := E_NOINTERFACE; + if IsEqualGUID(IID, IDAADOConnection) then begin + if fDriverType <> mkMSSQL then Exit; + end else if IsEqualGUID(IID, IDAInterbaseConnection) then begin + if fDriverType <> mkInterbase then Exit; + end else if IsEqualGUID(IID, IDAIBTransactionAccess) then begin + if fDriverType <> mkInterbase then Exit; + end else if IsEqualGUID(IID, IDAIBConnectionProperties) then begin + if fDriverType <> mkInterbase then Exit; + end else if IsEqualGUID(IID, IDAOracleConnection) then begin + if fDriverType <> mkOracle then Exit; + end else if IsEqualGUID(IID, IDADB2Connection) then begin + if fDriverType <> mkDB2 then Exit; + end else if IsEqualGUID(IID, IDASybaseConnection) then begin + if not (fDriverType in [mkASA, mkADS]) then Exit; + end else if IsEqualGUID(IID, IDAMySQLConnection) then begin + if fDriverType <> mkMySQL then Exit; + end else if IsEqualGUID(IID, IDACanQueryDatabaseNames) then begin + if (fDriverType in [mkInterBase, mkMSAccess]) then Exit; + end else if IsEqualGUID(IID, IDAFileBasedDatabase) then begin + if not (fDriverType in [mkInterBase,mkMSAccess]) then Exit; + end else if IsEqualGUID(IID, IDAUseGenerators) then begin + if not (fDriverType in [mkInterBase, mkOracle]) then Exit; + end else if IsEqualGUID(IID, IDACanQueryGeneratorsNames) then begin + if not (fDriverType in [mkInterBase]) then Exit; + end + // else if IsEqualGUID(IID, IDAConnectionModelling) then + ; + Result := inherited QueryInterface(IID, Obj); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.GetDatasetClass: TDAEDatasetClass; +begin + if FDirectMode then + result := TDAEAnyDACQueryNative + else + result := TDAEAnyDACQuery; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + if FDirectMode then + result := TDAEAnyDACStoredProcedureNative + else + result := TDAEAnyDACStoredProcedure; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.CreateCustomConnection: TCustomConnection; +begin + fDriverType := mkUnknown; + FADConnection := TADConnection.Create(nil); + FADConnection.LoginPrompt := False; + result := FADConnection; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.GetAnyDACPhysConnection: IADPhysConnection; +begin + Result := FADConnection.ConnectionIntf; + if Result = nil then + ADPhysManager.CreateConnection(FADConnection.ConnectionDefName, Result); +end; + +{------------------------------------------------------------------------------} + +{ +Database= S_AD_ConnParam_Common_Database +User_Name= S_AD_ConnParam_Common_UserName +Password= S_AD_ConnParam_Common_Password + +Oracle +====== +OSAuthent= S_AD_ConnParam_Common_OSAuthent +DriverID=Ora + +MSAccess +======== +SystemDB= S_AD_ConnParam_MSAcc_SysDB +DriverID=MSAcc + +DB2 +=== +Alias= S_AD_ConnParam_DB2_Alias +Server= S_AD_ConnParam_Common_Server +Port= S_AD_ConnParam_Common_Port +Protocol= S_AD_ConnParam_DB2_Protocol +DriverID=DB2 + +ASA +=== +Server= S_AD_ConnParam_Common_Server +DatabaseFile= S_AD_ConnParam_ASA_DatabaseFile +OSAuthent= S_AD_ConnParam_Common_OSAuthent +App= S_AD_ConnParam_ASA_App +Compress= S_AD_ConnParam_ASA_Compress +Encrypt= S_AD_ConnParam_ASA_Encrypt +DriverID=ASA + +ADS +=== +DefaultType= +ServerTypes= +DriverID=ADS + +MSSQL +===== +Server= S_AD_ConnParam_Common_Server +Network= S_AD_ConnParam_MSSQL_Network +Address= S_AD_ConnParam_MSSQL_Address +OSAuthent= S_AD_ConnParam_Common_OSAuthent +Workstation= S_AD_ConnParam_MSSQL_Workstation +App= S_AD_ConnParam_MSSQL_App +Encrypt= S_AD_ConnParam_MSSQL_Encrypt +Language= S_AD_ConnParam_MSSQL_Language +DriverID=MSSQL + +MySQL +===== +CharacterSet= S_AD_ConnParam_Common_CharacterSet +Server= S_AD_ConnParam_Common_Server +Port= S_AD_ConnParam_Common_Port +DriverID=MySQL + +IB +== +Protocol= S_AD_ConnParam_IB_Protocol +Server= S_AD_ConnParam_Common_Server +InstanceName= S_AD_ConnParam_IB_InstanceName +CharacterSet= S_AD_ConnParam_Common_CharacterSet +RoleName= S_AD_ConnParam_IB_RoleName +SQLDialect= S_AD_ConnParam_IB_SQLDialect +DriverID=IB + +Other +===== +ODBCDriver= +DataSource= +RDBMS= +ODBCAdvanced= +DriverID=ODBC +} + +procedure TDAEAnyDACConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +var + sName, sValue: string; + i: integer; + oParams: TStringList; +begin + fDriverType := mkUnknown; + FDataTypeSchema := ''; + fMSSQLSchemaEnabled := False; + fBiDirectionalDataSets := False; + fDirectMode := False; + + inherited DoApplyConnectionString(aConnStrParser, aConnectionObject); + oParams := TStringList.Create; + try + with aConnStrParser do begin + oParams.Values[S_AD_ConnParam_Common_DriverID] := AuxDriver; + fDriverType := AnyDACDriverIdToAnyDACDriverType(AuxDriver); + + if (Self.UserID <> '') then + oParams.Values[S_AD_ConnParam_Common_UserName] := Self.UserID + else if (UserID <> '') then + oParams.Values[S_AD_ConnParam_Common_UserName] := UserID; + + if (Self.Password <> '') then + oParams.Values[S_AD_ConnParam_Common_Password] := Self.Password + else if (Password <> '') then + oParams.Values[S_AD_ConnParam_Common_Password] := Password; + + if Database <> '' then + oParams.Values[S_AD_ConnParam_Common_Database] := Database; + + if Server <> '' then + oParams.Values[S_AD_ConnParam_Common_Server] := Server; + + for i := 0 to AuxParamsCount - 1 do begin + sName := AuxParamNames[i]; + if sName = '' then Continue; + sValue := AuxParams[AuxParamNames[i]]; + if SameText(sName, 'Schemas') then begin + fMSSQLSchemaEnabled := sValue = '1'; + Continue; + end + else if SameText(sName, 'Dialect') then begin + if fDriverType = mkInterBase then + sName := S_AD_ConnParam_IB_SQLDialect; + end + else if SameText(sName, 'Role') then begin + if fDriverType = mkInterBase then + sName := S_AD_ConnParam_IB_RoleName; + end + else if SameText(sName, 'Charset') then begin + if fDriverType = mkInterBase then + sName := S_AD_ConnParam_Common_CharacterSet; + end + else if SameText(sName, 'Port') then begin + if StrToIntDef(sValue, -1) <> -1 then + sName := S_AD_ConnParam_Common_Port; + end + else if SameText(sName, 'ConnectionDefName') then + sName := S_AD_DefinitionParam_Common_ConnectionDef + else if SameText(sName, 'DataTypeSchema') then begin + if fDriverType = mkInterBase then + FDataTypeSchema := UpperCase(sValue); + end + else if SameText(sName, 'Integrated Security') then begin + if (fDriverType = mkMSSQL) and (sValue = 'SSPI') then begin + sName := S_AD_ConnParam_Common_OSAuthent; + sValue := 'Yes'; + end + else + Continue; + end + else if SameText(sName, 'BiDirectionalDataSets') then begin + fBiDirectionalDataSets := sValue = '1'; + Continue; + end + else if SameText(sName, 'DirectMode') then begin + fDirectMode := sValue = '1'; + Continue; + end + else + if sName[1] = '@' then + sName := Pchar(sName) + 1; + oParams.Values[sName] := sValue; + end; + end; + + FADConnection.ConnectionDefName := + TDAEAnyDACDriver(Driver).LookupConnectionString(GetConnectionString, oParams); + + if FDataTypeSchema = 'FIB' then + MapAsFIB; + finally + oParams.Free; + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.MapAsFIB; +begin + with FADConnection.FormatOptions do begin + OwnMapRules := True; + MapRules.Clear; + with MapRules.Add do begin + SourceDataType := dtFmtBCD; + TargetDataType := dtDouble; + end; + with MapRules.Add do begin + SourceDataType := dtCurrency; + TargetDataType := dtDouble; + end; + with MapRules.Add do begin + SourceDataType := dtBCD; + TargetDataType := dtBCD; + end; + with MapRules.Add do begin + SourceDataType := dtInt64; + TargetDataType := dtBCD; + end; + end; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.DoBeginTransaction: integer; +begin + Result := 0; + FADConnection.StartTransaction; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.DoCommitTransaction; +begin + FADConnection.Commit; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.DoRollbackTransaction; +begin + FADConnection.Rollback; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.DoGetInTransaction: boolean; +begin + result := FADConnection.InTransaction; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.Native_DoGetLastAutoInc(const GeneratorName: string): integer; +var + v: Variant; +begin + v := FADConnection.GetLastAutoGenValue(GeneratorName); + if VarIsNull(v) then + Result := -1 + else + Result := v; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.DoGetLastAutoInc(const GeneratorName: string): integer; +begin + case fDriverType of + mkOracle: Result := Oracle_DoGetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + mkMSSQL: Result := MSSQL_DoGetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + mkMySQL: Result := MySQL_GetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + mkInterBase: Result := IB_GetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + else + Result := Native_DoGetLastAutoInc(GeneratorName); + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.DoGetStoredProcedureNames(out List: IROStrings); +begin + inherited; + case fDriverType of + mkOracle: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure); + mkMSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure, fMSSQLSchemaEnabled); + mkMySQL: MYSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure, FADConnection.ResultConnectionDef.Database); + mkInterbase: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotProcedure); + else + DoGetNames(List, dotProcedure); + end +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.DoGetViewNames(out List: IROStrings); +begin + inherited; + case fDriverType of + mkOracle: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotView); + mkMSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotView, fMSSQLSchemaEnabled); + mkMySQL: MYSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotView, FADConnection.ResultConnectionDef.Database); + mkInterbase: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotView); + else + DoGetNames(List, dotView); + end +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.DoGetTableNames(out List: IROStrings); +begin + inherited; + case fDriverType of + mkOracle: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotTable); + mkMSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotTable, fMSSQLSchemaEnabled); + mkMySQL: MYSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotTable, FADConnection.ResultConnectionDef.Database); + mkInterbase: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotTable); + else + DoGetNames(List, dotTable); + end +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.Native_DoGetTableFields(aTableName: string; out Fields: TDAFieldCollection); +var + oMIQ: TADMetaInfoQuery; + eAttrs: TADDataAttributes; + eBlobType: TDABlobType; + lUseROWIDAsPK: Boolean; + oFld: TDAField; +begin + aTableName := QuoteIdentifierIfNeeded(aTableName); + Fields := TDAFieldCollection.Create(nil); + lUseROWIDAsPK := False; + oMIQ := TADMetaInfoQuery.Create(nil); + try + oMIQ.Connection := FADConnection; + oMIQ.ObjectName := aTableName; + oMIQ.MetaInfoKind := mkTableFields; + oMIQ.Open; + while not oMIQ.Eof do begin + with Fields.Add do begin + Name := oMIQ.FieldByName('COLUMN_NAME').AsString; + Size := oMIQ.FieldByName('COLUMN_LENGTH').AsInteger; + eAttrs := TADDataAttributes({$IFDEF FPC}ord{$ELSE}Word{$ENDIF}(oMIQ.FieldByName('COLUMN_ATTRIBUTES').AsInteger)); + DataType := MapAD2DADataType(TADDataType(oMIQ.FieldByName('COLUMN_DATATYPE').AsInteger), eBlobType); + if eBlobType <> dabtUnknown then + BlobType := eBlobType; + if (DataType = datInteger) and (caAutoInc in eAttrs) then + DataType := datAutoInc; + Required := not (caAllowNull in eAttrs); + ReadOnly := caReadOnly in eAttrs; + if caROWID in eAttrs then begin + InPrimaryKey := True; + lUseROWIDAsPK := True; + end; + // DefaultValue + // ServerAutoRefresh + end; + oMIQ.Next; + end; + + if not lUseROWIDAsPK then begin + oMIQ.Close; + oMIQ.BaseObjectName := oMIQ.ObjectName; + oMIQ.ObjectName := ''; + oMIQ.MetaInfoKind := mkPrimaryKeyFields; + oMIQ.Open; + while not oMIQ.Eof do begin + oFld := Fields.FindField(oMIQ.FieldByName('COLUMN_NAME').AsString); + if oFld <> nil then + oFld.InPrimaryKey := True; + oMIQ.Next; + end; + end; + + finally + oMIQ.Free; + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.Native_DoGetForeignKeys(ForeignKeys: TDADriverForeignKeyCollection); +var + oTabs, oFKeys, oFKeyFields: TADMetaInfoQuery; + sFKFields, sPKFields: String; + oConnMeta: IADPhysConnectionMetadata; + + function QuoteName(const AName: String): String; + begin + if AName = '' then + Result := '' + else + Result := oConnMeta.NameQuotaChar1 + AName + oConnMeta.NameQuotaChar2; + end; + +begin + GetAnyDACPhysConnection.CreateMetadata(oConnMeta); + ForeignKeys := TDADriverForeignKeyCollection.Create(nil); + oTabs := TADMetaInfoQuery.Create(nil); + oFKeys := TADMetaInfoQuery.Create(nil); + oFKeyFields := TADMetaInfoQuery.Create(nil); + try + oTabs.Connection := FADConnection; + oTabs.MetaInfoKind := mkTables; + oTabs.TableKinds := [tkTable, tkTempTable, tkLocalTable]; + oFKeys.MetaInfoKind := mkForeignKeys; + oFKeys.Connection := FADConnection; + oFKeys.MetaInfoKind := mkForeignKeys; + oFKeyFields.Connection := FADConnection; + oFKeyFields.MetaInfoKind := mkForeignKeyFields; + oTabs.Open; + while not oTabs.Eof do begin + oFKeys.Close; + oFKeys.CatalogName := QuoteName(oTabs.Fields[1].AsString); + oFKeys.SchemaName := QuoteName(oTabs.Fields[2].AsString); + oFKeys.ObjectName := QuoteName(oTabs.Fields[3].AsString); + oFKeys.Open; + while not oFKeys.Eof do begin + oFKeyFields.Close; + oFKeyFields.CatalogName := QuoteName(oFKeys.Fields[1].AsString); + oFKeyFields.SchemaName := QuoteName(oFKeys.Fields[2].AsString); + oFKeyFields.BaseObjectName := QuoteName(oFKeys.Fields[3].AsString); + oFKeyFields.ObjectName := QuoteName(oFKeys.Fields[4].AsString); + oFKeyFields.Open; + sPKFields := ''; + sFKFields := ''; + while not oFKeyFields.Eof do begin + if sPKFields <> '' then + sPKFields := sPKFields + ','; + sPKFields := sPKFields + oFKeyFields.Fields[6].AsString; + if sFKFields <> '' then + sFKFields := sFKFields + ','; + sFKFields := sFKFields + oFKeyFields.Fields[5].AsString; + oFKeyFields.Next; + end; + with ForeignKeys.Add do begin + PKTable := FADConnection.EncodeObjectName(oFKeys.Fields[5].AsString, + oFKeys.Fields[6].AsString, '', oFKeys.Fields[7].AsString); + PKField := sPKFields; + FKTable := FADConnection.EncodeObjectName(oFKeys.Fields[1].AsString, + oFKeys.Fields[2].AsString, '', oFKeys.Fields[3].AsString); + FKField := sFKFields; + end; + oFKeys.Next; + end; + oTabs.Next; + end; + finally + oTabs.Free; + oFKeys.Free; + oFKeyFields.Free; + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.DoGetNames(AList: IROStrings; AObjectType: TDAObjecttype); +begin + case AObjectType of + dotTable: FADConnection.GetTableNames('', '', '', AList.Strings, [osMy], [tkTable]); + dotProcedure: FADConnection.GetStoredProcNames('', '', '', '', AList.Strings, [osMy]); + dotView: FADConnection.GetTableNames('', '', '', AList.Strings, [osMy], [tkView]); + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.DoGetTableFields(const aTableName: string; + out Fields: TDAFieldCollection); +begin + case fDriverType of + mkOracle: Oracle_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + mkMSSQL: MSSQL_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + mkMySQL: MYSQL_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName),GetDatasetClass.Create(Self),Fields, FADConnection.ResultConnectionDef.Database); + mkInterBase: IB_GetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + else + Native_DoGetTableFields(aTableName,Fields); + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.DoGetStoredProcedureParams( + const aStoredProcedureName: string; out Params: TDAParamCollection); +begin + case fDriverType of + mkMySQL: MYSQL_DoGetStoredProcedureParams(aStoredProcedureName, GetDatasetClass.Create(Self), Params, FADConnection.ResultConnectionDef.Database); + mkOracle: Oracle_DoGetStoredProcedureParams(aStoredProcedureName, GetDatasetClass.Create(Self), Params); + else + inherited; + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.DoGetForeignKeys( + out ForeignKeys: TDADriverForeignKeyCollection); +begin + inherited; + case fDriverType of + mkOracle: Oracle_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys); + mkMSSQL: MSSQL_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys, fMSSQLSchemaEnabled); + mkMySQL: MYSQL_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys, FADConnection.ResultConnectionDef.Database); + mkInterBase: IB_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys); + else + Native_DoGetForeignKeys(ForeignKeys); + end; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.CreateMacroProcessor: TDASQLMacroProcessor; +begin + case fDriverType of + mkOracle: Result := Oracle_CreateMacroProcessor; + mkMSSQL,mkMSAccess: Result := MSSQL_CreateMacroProcessor; + mkInterBase: Result := IB_CreateMacroProcessor; + else + Result := inherited CreateMacroProcessor; + end; +end; + +{------------------------------------------------------------------------------} +// IDAConnection + +function TDAEAnyDACConnection.GetSPSelectSyntax(AHasArguments: Boolean): string; +begin + case fDriverType of + mkOracle: Result := Oracle_GetSPSelectSyntax(AHasArguments); + mkMSSQL: Result := MSSQL_GetSPSelectSyntax(AHasArguments); + mkInterBase: Result := IB_GetSPSelectSyntax(AHasArguments); + else + Result := inherited GetSPSelectSyntax(AHasArguments); + end; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.Native_GetQuoteChars: TDAQuoteCharArray; +var + oConnMeta: IADPhysConnectionMetadata; +begin + GetAnyDACPhysConnection.CreateMetadata(oConnMeta); + result[0] := oConnMeta.NameQuotaChar1; + result[1] := oConnMeta.NameQuotaChar2; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.GetQuoteChars: TDAQuoteCharArray; +begin + case fDriverType of + mkMSSQL: Result := MSSQL_GetQuoteChars; + mkOracle: Result := Oracle_GetQuoteChars; + else + Result := Native_GetQuoteChars; + end; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.IdentifierNeedsQuoting(const AIdentifier: string): boolean; +begin + Result := inherited IdentifierNeedsQuoting(AIdentifier); + if not Result then + case fDriverType of + mkORACLE: Result := Oracle_IdentifierNeedsQuoting(AIdentifier); + mkMSSQL: Result := MSSQL_IdentifierNeedsQuoting(AIdentifier); + mkMySQL: Result := MYSQL_IdentifierNeedsQuoting(AIdentifier); + mkInterBase: Result := IB_IdentifierNeedsQuoting(AIdentifier, GetSQLDialect); + mkDB2: Result := DB2_IdentifierNeedsQuoting(AIdentifier); + mkASA,mkADS: Result := Sybase_IdentifierNeedsQuoting(AIdentifier); + else + end; +end; + +{------------------------------------------------------------------------------} +// IDAADOConnection + +function TDAEAnyDACConnection.GetCommandTimeout: Integer; +begin + Result := Integer(FADConnection.ResourceOptions.CmdExecTimeout); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.SetCommandTimeout(const Value: Integer); +begin + FADConnection.ResourceOptions.CmdExecTimeout := Value; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.GetProviderName: string; +begin + Result := FADConnection.ResultConnectionDef.DriverID; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.GetProviderType: TDAOleDBProviderType; +var + s: String; +begin + s := GetProviderName; + if SameText(s, S_AD_MSSQLId) then + Result := oledb_MSSQL + else if SameText(s, S_AD_MSAccId) then + Result := oledb_Jet + else if SameText(s, S_AD_OraId) then + Result := oledb_Oracle + else if SameText(s, S_AD_ODBCId) then + Result := oledb_ODBC + else + Result := oledb_Unknown; + // oledb_MSSQL2005 + // oledb_Postgresql + // oleDb_VisualFoxPro +end; + +{------------------------------------------------------------------------------} +// IDAIBTransactionAccess + +function TDAEAnyDACConnection.GetTransaction: TObject; +begin + Result := FADConnection.Transaction; +end; + +{------------------------------------------------------------------------------} +// IDAIBConnectionProperties + +function TDAEAnyDACConnection.GetSQLDialect: integer; +begin + Result := StrToIntDef(FADConnection.Params.Values[S_AD_ConnParam_IB_SQLDialect],3); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.SetSQLDialect(Value: integer); +begin + FADConnection.Params.Values[S_AD_ConnParam_IB_SQLDialect] := IntToStr(Value); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.GetCharset: string; +begin + Result := FADConnection.Params.Values[S_AD_ConnParam_Common_CharacterSet]; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.SetCharset(const Value: string); +begin + FADConnection.Params.Values[S_AD_ConnParam_Common_CharacterSet] := Value; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.GetRole: string; +begin + Result := FADConnection.Params.Values[S_AD_ConnParam_IB_RoleName]; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.SetRole(const Value: string); +begin + FADConnection.Params.Values[S_AD_ConnParam_IB_RoleName] := Value; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.Commit; +begin + Self.DoCommitTransaction; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.Rollback; +begin + Self.DoRollbackTransaction; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.CommitRetaining; +begin + FADConnection.CommitRetaining; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.RollbackRetaining; +begin + FADConnection.RollbackRetaining; +end; + +{------------------------------------------------------------------------------} +// IDAConnectionModelling + +function TDAEAnyDACConnection.FieldToDeclaration(aField: TDAField): string; +begin + Result := ''; + case fDriverType of + mkMSSQL: + case aField.DataType of + datString: result := Format('varchar(%d)', [aField.Size]); + datDateTime: result := 'datetime'; + datFloat: result := 'float'; + datCurrency: result := 'money'; + datAutoInc: result := 'int IDENTITY(1,1)'; + datInteger: result := 'int'; + datLargeInt: result := 'bigint'; + datBoolean: result := 'bit'; + datMemo: result := 'text'; + datBlob: result := 'image'; + datWideString: result := Format('nvarchar(%d)', [aField.Size]); + datWideMemo: result := 'ntext'; + datLargeAutoInc: result := 'bigint IDENTITY(1,1)'; + datByte: result := 'smallint'; + datShortInt: result := 'smallint'; + datWord: result := 'int'; + datSmallInt: result := 'smallint'; + datCardinal: result := 'bigint'; + datLargeUInt: result := 'bigint'; + datGuid: result := 'uniqueidentifier'; + datXml: result := 'ntext'; + datDecimal: result := 'decimal'; + datSingleFloat: result := 'real'; + end; + + mkOracle: + case aField.DataType of + datString: result := Format('varchar2(%d)', [aField.Size]); + datDateTime: result := 'date'; + datFloat: result := 'float'; + datCurrency: result := 'number(19,4)'; + datAutoInc: result := 'number(10,0)'; + datInteger: result := 'number(10,0)'; + datLargeInt: result := 'number(19,0)'; + datBoolean: result := 'number(1)'; + datMemo, + datBlob: + case aField.BlobType of + dabtBlob: result := 'long raw'; + dabtMemo: result := 'long'; + dabtOraBlob: result := 'blob'; + dabtOraClob: result := 'clob'; + else if aField.DataType = datMemo then result := 'long' else result := 'long raw'; + end; + datWideString: result := Format('nvarchar2(%d)', [aField.Size]); + datWideMemo: result := 'nclob'; + datLargeAutoInc: result := 'number(19,0)'; + datByte: result := 'number(3,0)'; + datShortInt: result := 'number(3,0)'; + datWord: result := 'number(5,0)'; + datSmallInt: result := 'number(5,0)'; + datCardinal: result := 'number(10,0)'; + datLargeUInt: result := 'number(19,0)'; + datGuid: result := 'varchar2(38)'; + datXml: result := 'XMLType'; + datDecimal: result := 'number'; + datSingleFloat: result := 'float'; + end; + + mkMySQL: + case aField.DataType of + datString: result := Format('varchar(%d)', [aField.Size]); + datDateTime: result := 'datetime'; + datFloat: result := 'double'; + datCurrency: result := 'decimal(19,4)'; + datAutoInc: result := 'int auto_increment'; + datInteger: result := 'int'; + datLargeInt: result := 'bigint'; + datBoolean: result := 'bool'; + datMemo: result := 'longtext'; + datBlob: result := 'longblob'; + datWideString: result := Format('varchar(%d) character set utf8', [aField.Size]); + datWideMemo: result := 'longtext character set utf8'; + datLargeAutoInc: result := 'bigint auto_increment'; + datByte: result := 'tinyint unsigned'; + datShortInt: result := 'tinyint'; + datWord: result := 'smallint unsigned'; + datSmallInt: result := 'smallint'; + datCardinal: result := 'int unsigned'; + datLargeUInt: result := 'bigint unsigned'; + datGuid: result := 'varchar(38)'; + datXml: result := 'longtext'; + datDecimal: result := 'decimal'; + datSingleFloat: result := 'float'; + end; + + mkMSAccess: + case aField.DataType of + datString: result := Format('varchar(%d)', [aField.Size]); + datDateTime: result := 'datetime'; + datFloat: result := 'float'; + datCurrency: result := 'currency'; + datAutoInc: result := 'IDENTITY(1,1)'; + datInteger: result := 'integer'; + datLargeInt: result := 'decimal(19,0)'; + datBoolean: result := 'boolean'; + datMemo: result := 'memo'; + datBlob: result := 'image'; + datWideString: result := Format('nchar(%d)', [aField.Size]); + datWideMemo: result := 'ntext'; + datLargeAutoInc: result := 'IDENTITY(1,1)'; + datByte: result := 'byte'; + datShortInt: result := 'tinyint'; + datWord: result := 'smallint'; + datSmallInt: result := 'smallint'; + datCardinal: result := 'integer'; + datLargeUInt: result := 'decimal(19,0)'; + datGuid: result := 'varchar(38)'; + datXml: result := 'ntext'; + datDecimal: result := 'decimal'; + datSingleFloat: result := 'real'; + end; + + mkDB2: + case aField.DataType of + datString: result := Format('varchar(%d)', [aField.Size]); + datDateTime: result := 'timestamp'; + datFloat: result := 'real'; + datCurrency: result := 'decimal(19,4)'; + datAutoInc: result := 'integer not null generated always as identity (start with 1, increment by 1, no cache)'; + datInteger: result := 'integer'; + datLargeInt: result := 'bigint'; // >= 9.1 + datBoolean: result := 'smallint'; + datMemo, + datBlob: + case aField.BlobType of + dabtBlob: result := 'long varchar for bit data'; + dabtMemo: result := 'long varchar '; + dabtOraBlob: result := 'blob'; + dabtOraClob: result := 'clob'; + else if aField.DataType = datMemo then result := 'long varchar' else result := 'long varchar for bit data'; + end; + datWideString: result := Format('vargraphic(%d)', [aField.Size]); + datWideMemo: result := 'clob'; + datLargeAutoInc: result := 'bigint not null generated always as identity (start with 1, increment by 1, no cache)'; // >= 9.1 + datByte: result := 'smallint'; + datShortInt: result := 'smallint'; + datWord: result := 'smallint'; + datSmallInt: result := 'smallint'; + datCardinal: result := 'integer'; + datLargeUInt: result := 'bigint'; // >= 9.1 + datGuid: result := 'varchar(38)'; + datXml: result := 'clob'; + datDecimal: result := 'number'; + datSingleFloat: result := 'real'; + end; + + mkASA: + case aField.DataType of + datString: result := Format('varchar(%d)', [aField.Size]); + datDateTime: result := 'timestamp'; + datFloat: result := 'double'; + datCurrency: result := 'money'; + datAutoInc: result := 'integer identity(1,1)'; + datInteger: result := 'integer'; + datLargeInt: result := 'bigint'; + datBoolean: result := 'bit'; + datMemo: result := 'text'; + datBlob: result := 'image'; + datWideString: result := Format('nvarchar(%d)', [aField.Size]); + datWideMemo: result := 'ntext'; + datLargeAutoInc: result := 'bigint identity(1,1)'; + datByte: result := 'unsigned tinyint'; + datShortInt: result := 'tinyint'; + datWord: result := 'unsigned smallint'; + datSmallInt: result := 'smallint'; + datCardinal: result := 'unsigned integer'; + datLargeUInt: result := 'unsigned bigint'; + datGuid: result := 'uniqueidentifierstr'; + datXml: result := 'xml'; + datDecimal: result := 'decimal'; + datSingleFloat: result := 'real'; + end; + + mkInterbase: + case aField.DataType of + datString: result := Format('varchar(%d)', [aField.Size]); + datDateTime: result := 'timestamp'; + datFloat: result := 'double precision'; + datCurrency: result := 'decimal(18,4)'; + datAutoInc: result := 'integer'; + datInteger: result := 'integer'; + datLargeInt: result := 'decimal(18,0)'; + datBoolean: result := 'integer check (value in (0, 1))'; + datMemo, + datBlob: + case aField.BlobType of + dabtBlob: result := 'blob(2000,0)'; + dabtMemo: result := 'blob(2000,1)'; + dabtOraBlob: result := 'blob(2000,0)'; + dabtOraClob: result := 'blob(2000,1)'; + else if aField.DataType = datMemo then result := 'blob(2000,1)' else result := 'blob(2000,0)'; + end; + datWideString: result := Format('varchar(%d) character set unicode_fss', [aField.Size]); + datWideMemo: result := 'blob sub_type 1 segment size 2000 character set unicode_fss'; + datLargeAutoInc: result := 'decimal(18,0)'; + datByte: result := 'smallint'; + datShortInt: result := 'smallint'; + datWord: result := 'smallint'; + datSmallInt: result := 'smallint'; + datCardinal: result := 'decimal(10,0)'; + datLargeUInt: result := 'decimal(18,0)'; + datGuid: result := 'varchar(38)'; + datXml: result := 'blob(2000,1)'; + datDecimal: result := 'decimal(18,6)'; + datSingleFloat: result := 'float'; + end; + end; + + if Result = '' then + raise Exception.CreateFmt('DataAbstract [%d] data type of field [%s] for DBMS [%s] is not supported', + [Integer(aField.DataType), aField.Name, C_AD_PhysRDBMSKinds[fDriverType]]); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.BuildCreateTableSQL(aDataSet: TDADataSet; + const aOverrideName: string): string; +var + lName: string; +begin + lName := aOverrideName; + if lName = '' then + lName := aDataSet.Name; + result := uDAHelpers.BuildCreateStatementForTable(aDataSet, lName, self); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.CreateTable(aDataSet: TDADataSet; const aOverrideName: string); +var + sSQL: string; +begin + sSQL := BuildCreateTableSQL(aDataSet, aOverrideName); + with NewCommand(sSQL, stSQL) do + Execute(); +end; + +{------------------------------------------------------------------------------} +// IDACanQueryDatabaseNames + +function TDAEAnyDACConnection.GetDatabaseNames: IROStrings; +begin + case fDriverType of + mkMSSQL: Result := MSSQL_GetDatabaseNames(Self); + mkMySQL: Result := MYSQL_GetDatabaseNames(GetDatasetClass.Create(Self)); + else + Result := NewROStrings; + end; +end; + +{------------------------------------------------------------------------------} +// IDAFileBasedDatabase + +function TDAEAnyDACConnection.GetFileExtensions: IROStrings; +begin + case fDriverType of + mkInterBase: Result := IB_GetFileExtensions; + mkMSAccess: Result := MSACCESS_GetFileExtensions; + else + Result := NewROStrings; + end; +end; + +{------------------------------------------------------------------------------} +// IDAUseGenerators + +function TDAEAnyDACConnection.GetNextAutoinc(const GeneratorName: string): integer; +begin + Result := -1; + case fDriverType of + mkInterBase: Result := IB_GetNextAutoinc(GeneratorName, GetDatasetClass.Create(Self)); + mkOracle: Result := Oracle_GetNextAutoinc(GeneratorName, GetDatasetClass.Create(Self)); + end; +end; + +{------------------------------------------------------------------------------} +// IDACanQueryGeneratorsNames + +function TDAEAnyDACConnection.GetGeneratorNames: IROStrings; +begin + case fDriverType of + mkInterBase: Result := IB_GetGeneratorNames(GetDatasetClass.Create(Self)); + else + Result := NewROStrings; + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.SetupOptions(AOptions: IADStanOptions; + AFetchMeta: Boolean); +begin + with AOptions do begin + if not fBiDirectionalDataSets then + FetchOptions.Unidirectional := True; + FetchOptions.Mode := fmAll; + if not AFetchMeta then + FetchOptions.Items := FetchOptions.Items - [fiMeta]; + FetchOptions.RowsetSize := 500; + ResourceOptions.SilentMode := True; + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.SetupDataset(ADataSet: TADRdbmsDataSet; + AFetchMeta: Boolean); +begin + TADQuery(ADataSet).Connection := FADConnection; + SetupOptions(IADStanOptions(TADQuery(ADataSet).Command), AFetchMeta); +end; + +{------------------------------------------------------------------------------} +{ TDAEAnyDACQuery } +{------------------------------------------------------------------------------} +function TDAEAnyDACQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TADQuery.Create(nil); + TDAEAnyDACConnection(aConnection).SetupDataset(TADQuery(result), False); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACQuery.DoPrepare(AValue: boolean); +var + i: integer; + oPar: TADParam; +begin + if AValue and not TADQuery(Dataset).Prepared and (TADQuery(Dataset).ParamCount <> 0) then + for I := 0 to GetParams.Count - 1 do begin + oPar := TADQuery(Dataset).ParamByName(GetParams[i].Name); + oPar.DataType := DATypeToVCLType(GetParams[i].DataType); + if oPar.DataType = ftAutoInc then + oPar.DataType := ftInteger; + end; + TADQuery(Dataset).Prepared := AValue; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACQuery.ClearParams; +begin + inherited; + TADQuery(Dataset).Params.Clear; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACQuery.DoExecute: integer; +begin + with TADQuery(Dataset) do begin + // 1) SELECT command on MSSQL, etc may be without result set, for example: + // SELECT :CUSTOMERS_CNT = count(*) from customers + // 2) On Oracle skExecute is handled specially (PL/SQL) and commands as + // above are not possible + if PointedConnection.RDBMSKind <> mkOracle then + Command.CommandKind := skExecute; + ExecSQL; + Result := RowsAffected; + end; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACQuery.DoGetSQL: string; +begin + Result := TADQuery(Dataset).SQL.Text; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACQuery.DoSetSQL(const AValue: string); +begin + TADQuery(Dataset).SQL.Text := AValue; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACQuery.SetParamValues(AParams: TDAParamCollection); +begin + SetADParamValuesFromDA(AParams, TADQuery(Dataset).Params, True); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACQuery.GetParamValues(AParams: TDAParamCollection); +begin + GetDAParamValuesFromAD(GetParams, TADQuery(Dataset).Params); +end; + +{------------------------------------------------------------------------------} +{ TDAEAnyDACStoredProcedure } +{------------------------------------------------------------------------------} +function TDAEAnyDACStoredProcedure.CreateDataset(AConnection: TDAEConnection): TDataset; +begin + Result := TADStoredProc.Create(nil); + TDAEAnyDACConnection(aConnection).SetupDataset(TADStoredProc(Result), True); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACStoredProcedure.GetStoredProcedureName: string; +begin + Result := TADStoredProc(DataSet).StoredProcName; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACStoredProcedure.SetStoredProcedureName(const Name: string); +begin + TADStoredProc(DataSet).StoredProcName := Name; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACStoredProcedure.DoExecute: integer; +begin + TADStoredProc(Dataset).ExecProc; + result := TADStoredProc(Dataset).RowsAffected; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACStoredProcedure.Execute: integer; +var + oADParams: TADParams; + oDAParams: TDAParamCollection; +begin + oADParams := TADStoredProc(Dataset).Params; + oDAParams := GetParams; + if oADParams.Count <> oDAParams.Count then + TADStoredProc(Dataset).Prepare; + SetADParamValuesFromDA(oDAParams, oADParams, False); + Result := DoExecute; + GetDAParamValuesFromAD(oDAParams, oADParams); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACStoredProcedure.RefreshParams; +var + oDAParams: TDAParamCollection; + oDAParam: TDAParam; + i: Integer; +begin + TADStoredProc(Dataset).Prepare; + oDAParams := GetParams; + oDAParams.Clear; + with TADStoredProc(Dataset) do + for i := 0 to Params.Count - 1 do begin + oDAParam := oDAParams.Add; + oDAParam.Name := Params[i].Name; + oDAParam.DataType := VCLTypeToDAType(Params[i].DataType); + oDAParam.ParamType := TDAParamType(Params[i].ParamType); + oDAParam.Size := Params[i].Size; + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACStoredProcedure.SetParamValues(AParams: TDAParamCollection); +begin + SetADParamValuesFromDA(AParams, TADStoredProc(Dataset).Params, False); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACStoredProcedure.GetParamValues(AParams: TDAParamCollection); +begin + GetDAParamValuesFromAD(AParams, TADStoredProc(Dataset).Params); +end; + +{------------------------------------------------------------------------------} +{ TDAEAnyDACNativeField } +{------------------------------------------------------------------------------} +constructor TDAEAnyDACNativeField.Create(ACol: TADDatSColumn; const ACmd: IADPhysCommand); +begin + inherited Create; + FCol := ACol; + FCmd := ACmd; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeField.GetDataType: TFieldType; +var + iDestSize: Longword; + iDestPrec: Integer; +begin + FCmd.Options.FormatOptions.ColumnDef2FieldDef(FCol.DataType, FCol.Scale, + FCol.Precision, FCol.Size, FCol.Attributes, Result, iDestSize, iDestPrec); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeField.GetDecimalPrecision: Integer; +begin + Result := FCol.Precision; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeField.GetDecimalScale: Integer; +begin + Result := FCol.Scale; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeField.GetFieldName: string; +begin + Result := FCol.Name; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeField.GetNativeObject: TObject; +begin + Result := Self; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeField.GetSize: integer; +begin + Result := FCol.Size; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeField.isTFieldCompatible: Boolean; +begin + Result := False; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeField.SetDataType(Value: TFieldType); +var + eDestType: TADDataType; + iDestScale: Integer; + iDestPrec: Integer; + iDestSize: LongWord; + iDestAttrs: TADDataAttributes; +begin + FCmd.Options.FormatOptions.FieldDef2ColumnDef(Value, FCol.Size, FCol.Precision, + eDestType, iDestScale, iDestPrec, iDestSize, iDestAttrs); + FCol.DataType := eDestType; + FCol.Attributes := iDestAttrs; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeField.SetDecimalPrecision(Value: integer); +begin + FCol.Precision := Value; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeField.SetDecimalScale(Value: integer); +begin + FCol.Scale := Value; +end; + +{------------------------------------------------------------------------------} +{ TDAEAnyDACNativeDatabaseAccess } +{------------------------------------------------------------------------------} +constructor TDAEAnyDACNativeDatabaseAccess.Create(ADAEConnection: TDAEAnyDACConnection); +begin + inherited Create; + ADAEConnection.FADConnection.ConnectionIntf.CreateCommand(FCmd); + FTab := TADDatSTable.Create; +end; + +{------------------------------------------------------------------------------} +destructor TDAEAnyDACNativeDatabaseAccess.Destroy; +begin + FCmd := nil; + FreeAndNil(FTab); + inherited Destroy; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess._AddRef: Integer; +begin + Result := 1; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess._Release: Integer; +begin + Result := 1; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.QueryInterface(const IID: TGUID; out Obj): HResult; +begin + if GetInterface(IID, Obj) then + Result := 0 + else + Result := E_NOINTERFACE; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeDatabaseAccess.CheckActive; +begin + if not (nfActive in FFlags) then + raise Exception.Create('Dataset must be active'); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeDatabaseAccess.CheckBidir; +begin + if FCmd.Options.FetchOptions.Unidirectional then + raise Exception.Create('Dataset must be bidirectional'); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeDatabaseAccess.ClearFieldDefs; +begin + FTab.Reset; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.GetRecordCount: Integer; +begin + Result := FRowsPurged + FTab.Rows.Count; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.GetBOF: Boolean; +begin + Result := nfBOF in FFlags; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.GetEOF: Boolean; +begin + Result := nfEOF in FFlags; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.GetActive: Boolean; +begin + Result := nfActive in FFlags; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeDatabaseAccess.SetActive(const aValue: Boolean); +var + i: Integer; +begin + if (nfActive in FFlags) <> aValue then + if aValue then begin + FCmd.Open; + FCmd.Define(FTab); + FCmd.Fetch(FTab, False); + FRowIndex := 0; + FRowsPurged := 0; + if FTab.Rows.Count = 0 then + Include(FFlags, nfEOF); + Include(FFlags, nfBOF); + Include(FFlags, nfActive); + SetLength(FBuffs, FTab.Columns.Count); + for i := 0 to FTab.Columns.Count - 1 do + case FTab.Columns[i].DataType of + dtDateTimeStamp, + dtTime, + dtDate: + GetMem(FBuffs[i], SizeOf(TDateTime)); + dtGUID: + GetMem(FBuffs[i], 39); + dtCurrency: + GetMem(FBuffs[i], SizeOf(Double)); + dtBCD: + GetMem(FBuffs[i], SizeOf(Currency)); + else + FBuffs[i] := nil; + end; + end + else begin + FCmd.AbortJob(True); + FCmd.CloseAll; + FTab.Clear; + FRowIndex := 0; + FRowsPurged := 0; + Exclude(FFlags, nfActive); + for i := 0 to FTab.Columns.Count - 1 do + if FBuffs[i] <> nil then + FreeMem(FBuffs[i]); + SetLength(FBuffs, 0); + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeDatabaseAccess.First; +begin + CheckActive; + CheckBidir; + FRowIndex := 0; + if FTab.Rows.Count = 0 then + Include(FFlags, nfEOF); + Include(FFlags, nfBOF); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeDatabaseAccess.Next; +begin + CheckActive; + Exclude(FFlags, nfEOF); + if FRowIndex >= FTab.Rows.Count - 1 then begin + if FCmd.State = csOpen then begin + if FCmd.Options.FetchOptions.Unidirectional then begin + Inc(FRowsPurged, FTab.Rows.Count); + FTab.Clear; + FRowIndex := -1; + end; + FCmd.Fetch(FTab, False); + if FCmd.RowsAffected = 0 then + Include(FFlags, nfEOF); + end + else + Include(FFlags, nfEOF); + end; + if FRowIndex < FTab.Rows.Count - 1 then + Inc(FRowIndex); + if FRowIndex <= 0 then + Include(FFlags, nfBOF) + else + Exclude(FFlags, nfBOF); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.LocateRecord(const KeyFields: string; + const KeyValues: Variant; Options: TLocateOptions; AChangePos: Boolean): Integer; +var + oCols: TADDatSColumnSublist; + iPrevRowIndex: Integer; + ePrevFlags: TDAEAnyDACNativeDatabaseAccessFlags; + lSimple: Boolean; + lEQ: Boolean; + i: Integer; + V1, V2: Variant; +begin + Result := -1; + oCols := TADDatSColumnSublist.Create; + iPrevRowIndex := FRowIndex; + ePrevFlags := FFlags; + try + oCols.Fill(FTab, KeyFields); + lSimple := (oCols.Count = 1) and VarIsArray(KeyValues); + First; + while not (nfEOF in FFlags) do begin + lEQ := False; + for i := 0 to oCols.Count - 1 do begin + V1 := FTab.Rows[FRowIndex].GetData(oCols[i]); + if lSimple then + V2 := KeyValues + else + V2 := KeyValues[i]; + if VarIsNull(V1) and VarIsNull(V2) then + lEQ := True + else if VarIsNull(V1) xor VarIsNull(V2) then + lEQ := False + else if oCols[i].DataType in [dtAnsiString, dtWideString, dtMemo, + dtWideMemo, dtHMemo, dtWideHMemo] then + if loCaseInsensitive in Options then begin + if loPartialKey in Options then + lEQ := Pos(AnsiLowerCase(VarToStr(V2)), AnsiLowerCase(VarToStr(V1))) = 1 + else + lEQ := AnsiCompareText(VarToStr(V2), VarToStr(V1)) = 0; + end + else if loPartialKey in Options then + lEQ := Pos(VarToStr(V2), VarToStr(V1)) = 1 + else + lEQ := CompareStr(VarToStr(V2), VarToStr(V1)) = 0 + else + try + lEQ := V1 = V2; + except + lEQ := False; + end; + if not lEQ then + Exit; + end; + if lEQ then begin + Result := FRowIndex; + Break; + end; + Next; + end; + finally + oCols.Free; + if (Result = -1) or not AChangePos then begin + FRowIndex := iPrevRowIndex; + FFlags := ePrevFlags; + end; + end; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.Locate(const KeyFields: string; + const KeyValues: Variant; Options: TLocateOptions): Boolean; +begin + Result := LocateRecord(KeyFields, KeyValues, Options, True) <> -1; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.Lookup(const KeyFields: string; + const KeyValues: Variant; const ResultFields: string): Variant; +var + iRowIndex, i: Integer; + oCols: TADDatSColumnSublist; +begin + iRowIndex := LocateRecord(KeyFields, KeyValues, [], False); + if iRowIndex <> -1 then begin + oCols := TADDatSColumnSublist.Create; + try + if oCols.Count = 1 then + Result := FTab.Rows[iRowIndex].GetData(oCols[0]) + else begin + Result := VarArrayCreate([0, oCols.Count - 1], varVariant); + for i := 0 to oCols.Count - 1 do + Result[i] := FTab.Rows[iRowIndex].GetData(oCols[i]); + end; + finally + oCols.Free; + end + end + else + Result := Null; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.GetFieldName(Index: Integer): string; +begin + Result := FTab.Columns[Index].Name; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeDatabaseAccess.DisableControls; +begin + // nothing +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeDatabaseAccess.EnableControls; +begin + // nothing +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.ControlsDisabled: Boolean; +begin + // nothing + Result := True; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.GetIsEmpty: boolean; +begin + Result := (FRowsPurged + FTab.Rows.Count) = 0; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeDatabaseAccess.FreeBookmark(Bookmark: TBookmark); +begin + // nothing +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.GetBookMark: pointer; +begin + CheckActive; + CheckBidir; + Result := Pointer(FRowIndex); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeDatabaseAccess.GotoBookmark(Bookmark: TBookmark); +begin + CheckActive; + CheckBidir; + FRowIndex := Integer(Bookmark); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.GetState: TDatasetState; +begin + if FCmd.State = csExecuting then + Result := dsOpening + else if nfActive in FFlags then + Result := dsBrowse + else + Result := dsInactive; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeDatabaseAccess.Prepare(const AValue: Boolean); +begin + if AValue then + FCmd.Prepare + else + FCmd.Unprepare; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.GetFields(Index: integer): IDANativeField; +begin + Result := TDAEAnyDACNativeField.Create(FTab.Columns[Index], FCmd) as IDANativeField; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.FieldCount: Integer; +begin + Result := FTab.Columns.Count; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.FindField(const FieldName: string): IDANativeField; +var + i: Integer; +begin + i := FTab.Columns.IndexOfName(FieldName); + if i = -1 then + Result := nil + else + Result := GetFields(i); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.IsTDatasetCompatible: Boolean; +begin + Result := False; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.GetNativeFieldData(Index: Integer; + var Data: pointer; var DataSize: cardinal): Boolean; + + procedure CvtGUID(ABuff: PChar; AGuid: PGUID); + begin + with AGuid^ do + StrLFmt(ABuff, 38, + '{%.8x-%.4x-%.4x-%.2x%.2x-%.2x%.2x%.2x%.2x%.2x%.2x}', + [D1, D2, D3, D4[0], D4[1], D4[2], D4[3], D4[4], D4[5], D4[6], D4[7]]); + end; + + procedure ErrNotSupported(AType: TADDataType); + begin + raise Exception.CreateFmt('AnyDAC data type [%s] is not supported by DataAbstract', + [C_AD_DataTypeNames[AType]]); + end; + +begin + CheckActive; + if (FRowIndex >= 0) and (FRowIndex < FTab.Rows.Count) then begin + Result := FTab.Rows[FRowIndex].GetData(Index, rvDefault, Data, 0, DataSize, False); + if Result then + case FTab.Columns[Index].DataType of + dtWideString, + dtWideMemo, + dtWideHMemo: + DataSize := DataSize * SizeOf(WideChar); + dtDateTimeStamp: + begin + PDateTime(FBuffs[Index])^ := ADSQLTimeStampToDateTime(PADSQLTimeStamp(Data)^); + DataSize := SizeOf(TDateTime); + Data := FBuffs[Index]; + end; + dtTime: + begin + PDateTime(FBuffs[Index])^ := ADTime2DateTime(PLongint(Data)^); + DataSize := SizeOf(TDateTime); + Data := FBuffs[Index]; + end; + dtDate: + begin + PDateTime(FBuffs[Index])^ := ADDate2DateTime(PLongint(Data)^); + DataSize := SizeOf(TDateTime); + Data := FBuffs[Index]; + end; + dtGUID: + begin + CvtGUID(PChar(FBuffs[Index]), PGuid(Data)); + DataSize := 38; + Data := FBuffs[Index]; + end; + dtCurrency: + begin + PDouble(FBuffs[Index])^ := PCurrency(Data)^; + DataSize := SizeOf(Double); + Data := FBuffs[Index]; + end; + dtBCD: + begin + BCDToCurr(PBCD(Data)^, PCurrency(FBuffs[Index])^); + DataSize := SizeOf(Currency); + Data := FBuffs[Index]; + end; + dtRowSetRef, + dtCursorRef, + dtRowRef, + dtArrayRef, + dtParentRowRef, + dtObject: + ErrNotSupported(FTab.Columns[Index].DataType); + end; + end + else + Result := False; + if not Result then begin + DataSize := 0; + Data := nil; + end; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.GetNativeFieldValue(Index: Integer): Variant; +begin + CheckActive; + if (FRowIndex >= 0) and (FRowIndex < FTab.Rows.Count) then + Result := FTab.Rows[FRowIndex].GetData(Index) + else + Result := Null; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.CanFreeNativeFieldData: Boolean; +begin + Result := False; +end; + +{------------------------------------------------------------------------------} +{ TDAEAnyDACQueryNative } +{------------------------------------------------------------------------------} +function TDAEAnyDACQueryNative.GetNativeObject: TDAEAnyDACNativeDatabaseAccess; +begin + Result := TDAEAnyDACNativeDatabaseAccess(inherited NativeObject); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACQueryNative.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + Result := nil; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACQueryNative.CreateNativeDatabaseAccess: IDANativeDatabaseAccess; +begin + Supports(NativeObject, IDANativeDatabaseAccess, Result); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACQueryNative.CreateNativeObject(aConnection: TDAEConnection): TObject; +begin + Result := TDAEAnyDACNativeDatabaseAccess.Create(TDAEAnyDACConnection(aConnection)); + TDAEAnyDACConnection(aConnection).SetupOptions(TDAEAnyDACNativeDatabaseAccess(Result).FCmd.Options, False); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACQueryNative.DoPrepare(AValue: boolean); +var + i: integer; + oPar: TADParam; +begin + if AValue and (NativeObject.FCmd.State <> csPrepared) and (NativeObject.FCmd.Params.Count <> 0) then + for I := 0 to GetParams.Count - 1 do begin + oPar := NativeObject.FCmd.Params.ParamByName(GetParams[i].Name); + oPar.DataType := DATypeToVCLType(GetParams[i].DataType); + if oPar.DataType = ftAutoInc then + oPar.DataType := ftInteger; + end; + if AValue then + NativeObject.FCmd.Prepare + else + NativeObject.FCmd.Unprepare; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACQueryNative.ClearParams; +begin + inherited; + NativeObject.FCmd.Params.Clear; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACQueryNative.DoExecute: integer; +var + oConnMeta: IADPhysConnectionMetadata; +begin + with NativeObject.FCmd do begin + // 1) SELECT command on MSSQL, etc may be without result set, for example: + // SELECT :CUSTOMERS_CNT = count(*) from customers + // 2) On Oracle skExecute is handled specially (PL/SQL) and commands as + // above are not possible + Connection.CreateMetadata(oConnMeta); + if oConnMeta.Kind <> mkOracle then + CommandKind := skExecute; + Execute; + if RowsAffectedReal then + Result := RowsAffected + else + Result := 0; + end; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACQueryNative.DoGetSQL: string; +begin + Result := NativeObject.FCmd.CommandText; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACQueryNative.DoSetSQL(const AValue: string); +begin + NativeObject.FCmd.CommandText := AValue; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACQueryNative.SetParamValues(AParams: TDAParamCollection); +begin + SetADParamValuesFromDA(AParams, NativeObject.FCmd.Params, True); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACQueryNative.GetParamValues(AParams: TDAParamCollection); +begin + GetDAParamValuesFromAD(GetParams, NativeObject.FCmd.Params); +end; + +{------------------------------------------------------------------------------} +{ TDAEAnyDACStoredProcedureNative } +{------------------------------------------------------------------------------} +function TDAEAnyDACStoredProcedureNative.GetNativeObject: TDAEAnyDACNativeDatabaseAccess; +begin + Result := TDAEAnyDACNativeDatabaseAccess(inherited NativeObject); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACStoredProcedureNative.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + Result := nil; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACStoredProcedureNative.CreateNativeDatabaseAccess: IDANativeDatabaseAccess; +begin + Supports(NativeObject, IDANativeDatabaseAccess, Result); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACStoredProcedureNative.CreateNativeObject(aConnection: TDAEConnection): TObject; +begin + Result := TDAEAnyDACNativeDatabaseAccess.Create(TDAEAnyDACConnection(aConnection)); + TDAEAnyDACNativeDatabaseAccess(Result).FCmd.CommandKind := skStoredProc; + TDAEAnyDACConnection(aConnection).SetupOptions(TDAEAnyDACNativeDatabaseAccess(Result).FCmd.Options, False); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACStoredProcedureNative.GetStoredProcedureName: string; +begin + Result := NativeObject.FCmd.CommandText; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACStoredProcedureNative.SetStoredProcedureName(const Name: string); +begin + NativeObject.FCmd.CommandText := Name; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACStoredProcedureNative.DoExecute: integer; +begin + with NativeObject.FCmd do begin + Execute(); + if RowsAffectedReal then + Result := RowsAffected + else + Result := 0; + end; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACStoredProcedureNative.Execute: integer; +var + oADParams: TADParams; + oDAParams: TDAParamCollection; +begin + oADParams := NativeObject.FCmd.Params; + oDAParams := GetParams; + if oADParams.Count <> oDAParams.Count then + NativeObject.FCmd.Prepare; + SetADParamValuesFromDA(oDAParams, oADParams, False); + Result := DoExecute; + GetDAParamValuesFromAD(oDAParams, oADParams); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACStoredProcedureNative.RefreshParams; +var + oDAParams: TDAParamCollection; + oDAParam: TDAParam; + i: Integer; +begin + NativeObject.FCmd.Prepare; + oDAParams := GetParams; + oDAParams.Clear; + with NativeObject.FCmd do + for i := 0 to Params.Count - 1 do begin + oDAParam := oDAParams.Add; + oDAParam.Name := Params[i].Name; + oDAParam.DataType := VCLTypeToDAType(Params[i].DataType); + oDAParam.ParamType := TDAParamType(Params[i].ParamType); + oDAParam.Size := Params[i].Size; + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACStoredProcedureNative.GetParamValues(AParams: TDAParamCollection); +begin + SetADParamValuesFromDA(AParams, NativeObject.FCmd.Params, False); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACStoredProcedureNative.SetParamValues(AParams: TDAParamCollection); +begin + GetDAParamValuesFromAD(AParams, NativeObject.FCmd.Params); +end; + +{------------------------------------------------------------------------------} +{ Registration and factory code } +{------------------------------------------------------------------------------} +var + _driver: TDAEDriver = nil; + +{------------------------------------------------------------------------------} +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAAnyDACDriver]); +end; + +{------------------------------------------------------------------------------} +function GetDriverObject: IDADriver; +begin +{$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; +{$ENDIF} + if _driver = nil then + _driver := TDAEAnyDACDriver.Create(nil); + result := _driver; +end; + +{------------------------------------------------------------------------------} +exports + GetDriverObject name func_GetDriverObject; + +initialization +{$IFDEF FPC} + {$I DataAbstract_AnyDACDriver_Glyphs.lrs} +{$ENDIF} + _driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNil(_driver); + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDABDEDriver.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDABDEDriver.pas new file mode 100644 index 0000000..185fe9e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDABDEDriver.pas @@ -0,0 +1,1204 @@ +unit uDABDEDriver; +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up +{ platform: Win32 +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$I ..\DataAbstract.inc} + +{$R DataAbstract_BDEDriver_Glyphs.res} +{$DEFINE MAX_SUPPORT} +interface + +uses DB, uDAEngine, uDAInterfaces, uROClasses, uDAInterfacesEx, uDAUtils, DBTables, + uDAIBInterfaces, uDAADOInterfaces, uDAOracleInterfaces, uDADB2Interfaces, uDASybaseInterfaces; + +type + TDABDEProviderType = ( + bdeSTANDARD, + bdeDB2, + bdeINFORMIX, + bdeINTRBASE, + bdeMSACCESS, + bdeMSSQL, + bdeORACLE, + bdeSYBASE, + bdeODBC); + + { TDABDEDriver } + TDABDEDriver = class(TDADriverReference) + end; + + { TDAEADODriver } + TDAEBDEDriver = class(TDAEDriver, IDADriver40) + protected + function GetConnectionClass: TDAEConnectionClass; override; + // IDADriver + function GetDriverID: string; override; + function GetDescription: string; override; + procedure GetAuxDrivers(out List: IROStrings); override; + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; + function GetAvailableDriverOptionsEx(AuxDriver: string): TDAAvailableDriverOptions; override; + function GetProviderDefaultCustomParameters(Provider: string): string; safecall; + function GetDefaultConnectionType(const AuxDriver: string): string; override; safecall; + public + end; + + { TDAEADOConnection } + TDAEBDEConnection = class(TDAEConnection, IDACanQueryDatabaseNames, IDAFileBasedDatabase, + IDADirectoryBasedDatabase, IDAUseGenerators, {IDAADOConnection,} + IDAInterbaseConnection, IDAOracleConnection, IDACanQueryGeneratorsNames, + IDADB2Connection, IDASybaseConnection) + private + fProviderName: string; + fProviderType: TDABDEProviderType; + fDatabase: TDataBase; + FSession: TSession; + protected + function QueryInterface(const IID: TGUID; out Obj): HResult; override; stdcall; + function CreateCustomConnection: TCustomConnection; override; + function CreateMacroProcessor: TDASQLMacroProcessor; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + + procedure DoGetTableNames(out List: IROStrings); override; + procedure DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection); override; + + procedure DoGetViewNames(out List: IROStrings); override; + procedure DoGetStoredProcedureNames(out List: IROStrings); override; + procedure DoGetForeignKeys(out ForeignKeys: TDADriverForeignKeyCollection); override; + function DoGetLastAutoInc(const GeneratorName: string): integer; override; + function GetQuoteChars: TDAQuoteCharArray; override; + function GetSPSelectSyntax(HasArguments: Boolean): string; override; safecall; + function IdentifierNeedsQuoting(const iIdentifier: string): boolean; override; safecall; + function QuoteFieldName(const aTableName, aFieldName: string): string; override; safecall; + function GetUserID: string; override; safecall; + procedure DoGetStoredProcedureParams(const aStoredProcedureName: string; out Params: TDAParamCollection); override; + // IDACanQueryDatabaseNames + function GetDatabaseNames: IROStrings; + // IDAFileBasedDatabase + function GetFileExtensions: IROStrings; + // IDAUseGenerators + function GetNextAutoinc(const GeneratorName: string): integer; safecall; + // IDACanQueryGeneratorsNames + function GetGeneratorNames: IROStrings; + public + destructor Destroy; override; + end; + + { TDAEADOQuery } + TDAEBDEQuery = class(TDAEDataset, IDAMustSetParams) + protected + procedure ClearParams; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure RefreshParams; override; safecall; + procedure DoPrepare(Value: boolean); override; safecall; + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + { TDAEADOStoredProcedure } + TDAEBDEStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: integer; override; + function Execute: integer; override; + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure DoPrepare(Value: boolean); override; safecall; + end; + +procedure Register; +function GetDriverObject: IDADriver; stdcall; + +function ProviderToProviderType(AProvider: string): TDABDEProviderType; + +implementation + +uses + Windows, SysUtils, Variants, Classes, uDARes, + uROBinaryHelpers, uDADriverManager, uDAMacroProcessors, uDASQL92Interfaces; + +var + _driver : TDAEDriver = nil; + +const + BDE_LANGDRIVER = + '(Access General,Access Greece,Access Japanese,Access Nord/Danish,Access Swed/Finnish,''ascii'' ANSI,' + + 'Borland ANSI Arabic,Borland DAN Latin-1,Borland DEU Latin-1,Borland ENG Latin-1,Borland ENU Latin-1,Borland ESP Latin-1,' + + 'Borland FIN Latin-1,Borland FRA Latin-1,Borland FRC Latin-1,Borland ISL Latin-1,Borland ITA Latin-1,Borland NLD Latin-1,' + + 'Borland NOR Latin-1,Borland PTG Latin-1,Borland SVE Latin-1,DB2 SQL ANSI DEU,dBASE BUL 868,dBASE CHS cp936,dBASE CHT cp950,' + + 'dBASE CSY cp852,dBASE CSY cp867,dBASE DAN cp865,dBASE DEU cp437,dBASE DEU cp850,dBASE ELL GR437,dBASE ENG cp437,dBASE ENG cp850,' + + 'dBASE ENU cp437,dBASE ENU cp850,dBASE ESP cp437,dBASE ESP cp850,dBASE FIN cp437,dBASE FRA cp437,dBASE FRA cp850,dBASE FRC cp850,' + + 'dBASE FRC cp863,dBASE HUN cp852,dBASE ITA cp437,dBASE ITA cp850,dBASE JPN cp932,dBASE JPN Dic932,dBASE KOR cp949,dBASE NLD cp437,' + + 'dBASE NLD cp850,dBASE NOR cp865,dBASE PLK cp852,dBASE PTB cp850,dBASE PTG cp860,dBASE RUS cp866,dBASE SLO cp852,dBASE SVE cp437,' + + 'dBASE SVE cp850,dBASE THA cp874,dBASE TRK cp857,FoxPro Czech 1250,FoxPro Czech DOS895,FoxPro German 1252,FoxPro German 437,FoxPro Nordic 1252,' + + 'FoxPro Nordic 437,FoxPro Nordic 850,Hebrew dBASE,MSSQL ANSI Greek,Oracle SQL WE850,Paradox ANSI HEBREW,Paradox ''ascii'',Paradox BUL 868,' + + 'Paradox China 936,Paradox Cyrr 866,Paradox Czech 852,Paradox Czech 867,Paradox ESP 437,Paradox Greek GR437,Paradox ''hebrew'',' + + 'Paradox Hun 852 DC,Paradox ''intl'',Paradox ''intl'' 850,Paradox ISL 861,Paradox ''japan'',Paradox Korea 949,Paradox ''nordan'',' + + 'Paradox ''nordan40'',Paradox Polish 852,Paradox Slovene 852,Paradox ''swedfin'',Paradox Taiwan 950,Paradox Thai 874,Paradox ''turk'',' + + 'Pdox ANSI Bulgaria,Pdox ANSI Cyrillic,Pdox ANSI Czech,Pdox ANSI Greek,Pdox ANSI Hun. DC,Pdox ANSI Intl,Pdox ANSI Intl850,Pdox ANSI Nordan4,' + + 'Pdox ANSI Polish,Pdox ANSI Slovene,Pdox ANSI Spanish,Pdox ANSI Swedfin,Pdox ANSI Swedfin,Pdox ANSI Turkish,Paradox ''ascii'' Japan,' + + 'pdx ANSI Czech ''CH'',pdx ANSI ISO L_2 CZ,pdx Czech 852 ''CH'',pdx Czech 867 ''CH'',pdx ISO L_2 Czech,''Spanish'' ANSI,' + + 'SQL Link ROMAN8,Sybase SQL Dic437,Sybase SQL Dic850,''WEurope'' ANSI)'; + +function ProviderToProviderType2(AProvider: string): TDABDEProviderType; +begin + if AnsiCompareText(AProvider, 'STANDARD') = 0 then Result := bdeSTANDARD else + if AnsiCompareText(AProvider, 'DB2') = 0 then Result := bdeDB2 else + if AnsiCompareText(AProvider, 'INFORMIX') = 0 then Result := bdeINFORMIX else + if AnsiCompareText(AProvider, 'INTRBASE') = 0 then Result := bdeINTRBASE else + if AnsiCompareText(AProvider, 'MSACCESS') = 0 then Result := bdeMSACCESS else + if AnsiCompareText(AProvider, 'MSSQL') = 0 then Result := bdeMSSQL else + if AnsiCompareText(AProvider, 'ORACLE') = 0 then Result := bdeORACLE else + if AnsiCompareText(AProvider, 'SYBASE') = 0 then Result := bdeSYBASE else + Result := bdeODBC; +end; + +function ProviderToProviderType(AProvider: string): TDABDEProviderType; +begin + if Session.IsAlias(AProvider) then + Result := ProviderToProviderType2(Session.GetAliasDriverName(AProvider)) + else + Result := ProviderToProviderType2(AProvider); +end; + +function GetDriverObject: IDADriver; +begin + if (_driver = nil) then _driver := TDAEBDEDriver.Create(nil); + result := _driver; +end; + +type + TDecimalVariant = packed record + VarType: TVarType; + scale: Byte; + sign: Byte; + Hi32: Cardinal; + Lo32: Cardinal; + Mid32: Cardinal; + Dummy: Cardinal; + end; + +function DecimalToInt64(const V: Variant): Int64; +var + vData : TDecimalVariant absolute V; +begin + if (vData.VarType = 14) and (vData.scale = 0) and (vData.Hi32 = 0) then begin + Result := Int64(vData.Lo32) or (Int64(vData.Mid32) shl 32); + if vData.sign <> 0 then result := -Result; + end else result := v; +end; + +function Int64ToDecimal(Data: Int64): Variant; +var + vd : TDecimalVariant absolute Result; +begin + VarClear(Result); + vd.scale := 0; + if data < 0 then begin + vd.Sign := 128; + data := -data; + end else + vd.sign := 0; + vd.Hi32 := 0; + vd.Mid32 := int64(data shr 32); + vd.Lo32 := data; + vd.VarType := 14; +end; + +{ TDAEBDEDriver } + +procedure TDAEBDEDriver.GetAuxDrivers(out List: IROStrings); +var + FList : TStringList; +begin + inherited GetAuxDrivers(List); + FList := TStringList.Create; + try + try + Session.GetAliasNames(FList); + List.AddStrings(FList); + except + end; + try + Session.GetDriverNames(FList); + List.AddStrings(FList); + except + end; + finally + FList.Free; + end; + List.Sorted := True; + List.Sorted := False; +end; + +procedure TDAEBDEDriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +begin + inherited GetAuxParams(AuxDriver, List); + case ProviderToProviderType(AuxDriver) of + bdeSTANDARD: begin + List.Add('DEFAULT DRIVER=(PARADOX, DBASE, FOXPRO, ASCIIDRV)'); + List.Add('ENABLE BCD=(TRUE, FALSE)'); + end; + bdeDB2: begin + List.Add('BATCH COUNT=200'); + List.Add('BLOB SIZE=32'); + List.Add('BLOBS TO CACHE=64'); + //List.Add('DB2 DSN'); { = 'DB2_SERVER'} + List.Add('ENABLE BCD=(TRUE, FALSE)'); + List.Add('ENABLE SCHEMA CACHE=(TRUE, FALSE)'); + List.Add('LANGDRIVER=' + BDE_LANGDRIVER); + List.Add('MAX ROWS=-1'); + List.Add('OPEN MODE=(READ/WRITE,READ ONLY)'); + List.Add('ROWSET SIZE=20'); + List.Add('SCHEMA CACHE DIR='); + List.Add('SCHEMA CACHE SIZE=8'); + List.Add('SCHEMA CACHE TIME=-1'); + List.Add('SQLPASSTHRU MODE=(SHARED AUTOCOMMIT,SHARED NOAUTOCOMMIT,NOT SHARED)'); + List.Add('SQLQRYMODE=(LOCAL,SERVER)'); + end; + bdeINFORMIX: begin + List.Add('BATCH COUNT=200'); + List.Add('BLOB SIZE=32'); + List.Add('BLOBS TO CACHE=64'); + List.Add('COLLCHAR=(0,1,2)'); + List.Add('DATE MODE=0'); + List.Add('DATE SEPARATOR=/'); + List.Add('DBNLS=(0,1,2)'); + List.Add('ENABLE BCD=(TRUE, FALSE)'); + List.Add('ENABLE SCHEMA CACHE=(TRUE, FALSE)'); + List.Add('LANGDRIVER=' + BDE_LANGDRIVER); + List.Add('LIST SYNONYMS=(NONE,ALL,PRIVATE)'); + List.Add('LOCK MODE=5'); + List.Add('MAX ROWS=-1'); + List.Add('OPEN MODE=(READ/WRITE,READ ONLY)'); + List.Add('SCHEMA CACHE DIR='); + List.Add('SCHEMA CACHE SIZE=8'); + List.Add('SCHEMA CACHE TIME=-1'); + List.Add('SQLPASSTHRU MODE=(SHARED AUTOCOMMIT,SHARED NOAUTOCOMMIT,NOT SHARED)'); + List.Add('SQLQRYMODE=(LOCAL,SERVER)'); + end; + bdeINTRBASE: begin + List.Add('BATCH COUNT=200'); + List.Add('BLOB SIZE=32'); + List.Add('BLOBS TO CACHE=64'); + List.Add('COMMIT RETAIN=(FALSE)'); + List.Add('ENABLE BCD=(TRUE, FALSE)'); + List.Add('ENABLE SCHEMA CACHE=(TRUE, FALSE)'); + List.Add('LANGDRIVER=' + BDE_LANGDRIVER); + List.Add('MAX ROWS=-1'); + List.Add('OPEN MODE=(READ/WRITE,READ ONLY)'); + List.Add('ROLE NAME='); + List.Add('SCHEMA CACHE DIR='); + List.Add('SCHEMA CACHE SIZE=8'); + List.Add('SCHEMA CACHE TIME=-1'); + List.Add('SQLPASSTHRU MODE=(SHARED AUTOCOMMIT,SHARED NOAUTOCOMMIT,NOT SHARED)'); + List.Add('SQLQRYMODE=(LOCAL,SERVER)'); + List.Add('WAIT ON LOCKS=(FALSE)'); + end; + bdeMSACCESS: begin + //List.Add('DATABASE NAME'); { DRIVE:/PATH/DATABASE.MDB} + List.Add('LANGDRIVER=' + BDE_LANGDRIVER); + List.Add('OPEN MODE=(READ/WRITE,READ ONLY)'); + List.Add('SYSTEM DATABASE=(.MDW)'); + end; + bdeMSSQL: begin + List.Add('APPLICATION MODE'); { } + List.Add('BATCH COUNT=200'); + List.Add('BLOB EDIT LOGGING=(TRUE, FALSE)'); + List.Add('BLOB SIZE=32'); + List.Add('BLOBS TO CACHE=64'); + //List.Add('DATABASE NAME'); { } + List.Add('DATE MODE=0'); + List.Add('ENABLE BCD=(TRUE, FALSE)'); + List.Add('ENABLE SCHEMA CACHE=(TRUE, FALSE)'); + //List.Add('HOST NAME'); { } + List.Add('LANGDRIVER=' + BDE_LANGDRIVER); + List.Add('MAX QUERY TIME=300'); + List.Add('NATIONAL LANG NAME='); + List.Add('MAX ROWS=-1'); + List.Add('OPEN MODE=(READ/WRITE,READ ONLY)'); + List.Add('SCHEMA CACHE DIR='); + List.Add('SCHEMA CACHE SIZE=8'); + List.Add('SCHEMA CACHE TIME=-1'); + List.Add('SQLPASSTHRU MODE=(SHARED AUTOCOMMIT,SHARED NOAUTOCOMMIT,NOT SHARED)'); + List.Add('SQLQRYMODE=(LOCAL,SERVER)'); + List.Add('TDS PACKET SIZE=4096'); + end; + bdeORACLE: begin + List.Add('BATCH COUNT=200'); + List.Add('BLOB SIZE=32'); + List.Add('BLOBS TO CACHE=64'); + List.Add('ENABLE BCD=(TRUE, FALSE)'); + List.Add('ENABLE INTEGERS=(TRUE, FALSE)'); + List.Add('ENABLE SCHEMA CACHE=(TRUE, FALSE)'); + List.Add('LANGDRIVER=' + BDE_LANGDRIVER); + List.Add('LIST SYNONYMS=(NONE,ALL,PRIVATE)'); + List.Add('MAX ROWS=-1'); + List.Add('OPEN MODE=(READ/WRITE,READ ONLY)'); + List.Add('NET PROTOCOL=(TNS,TCP/IP,SPX/IPX,NETBIOS,NAMED PIPES,DECNET,3270,VINES,APPC,ASYNC)'); + List.Add('OBJECT MODE=(TRUE, FALSE)'); + List.Add('ROWSET SIZE=20'); + List.Add('SCHEMA CACHE DIR='); + List.Add('SCHEMA CACHE SIZE=8'); + List.Add('SCHEMA CACHE TIME=-1'); + List.Add('SQLPASSTHRU MODE=(SHARED AUTOCOMMIT,SHARED NOAUTOCOMMIT,NOT SHARED)'); + List.Add('SQLQRYMODE=(LOCAL,SERVER)'); + end; + bdeSYBASE: begin + List.Add('APPLICATION MODE='); + List.Add('BATCH COUNT=200'); + List.Add('BLOB EDIT LOGGING=(TRUE, FALSE)'); + List.Add('BLOB SIZE=32'); + List.Add('BLOBS TO CACHE=64'); + List.Add('CS CURSOR ROWS=1'); + //List.Add('DATABASE NAME'); { } + List.Add('DATE MODE=0'); + List.Add('ENABLE BCD=(TRUE, FALSE)'); + List.Add('ENABLE SCHEMA CACHE=(TRUE, FALSE)'); + List.Add('HOST NAME='); { } + List.Add('LANGDRIVER=' + BDE_LANGDRIVER); + List.Add('MAX QUERY TIME=300'); + List.Add('NATIONAL LANG NAME='); + List.Add('MAX ROWS=-1'); + List.Add('OPEN MODE=(READ/WRITE,READ ONLY)'); + List.Add('SCHEMA CACHE DIR='); + List.Add('SCHEMA CACHE SIZE=8'); + List.Add('SCHEMA CACHE TIME=-1'); + List.Add('SQLPASSTHRU MODE=(SHARED AUTOCOMMIT,SHARED NOAUTOCOMMIT,NOT SHARED)'); + List.Add('SQLQRYMODE=(LOCAL,SERVER)'); + List.Add('TDS PACKET SIZE=512'); + end; + bdeODBC: begin + List.Add('BATCH COUNT=200'); + List.Add('BLOB SIZE=32'); + List.Add('BLOBS TO CACHE=64'); + //List.Add('DATABASE NAME='); { } + List.Add('ENABLE BCD=(TRUE, FALSE)'); + List.Add('ENABLE SCHEMA CACHE=(TRUE, FALSE)'); + List.Add('LANGDRIVER=' + BDE_LANGDRIVER); + List.Add('MAX ROWS=-1'); + List.Add('OPEN MODE=(READ/WRITE,READ ONLY)'); + List.Add('ODBC DSN='); + List.Add('ROWSET SIZE=20'); + List.Add('SCHEMA CACHE DIR='); + List.Add('SCHEMA CACHE SIZE=8'); + List.Add('SCHEMA CACHE TIME=-1'); + List.Add('SQLPASSTHRU MODE=(SHARED AUTOCOMMIT,SHARED NOAUTOCOMMIT,NOT SHARED)'); + List.Add('SQLQRYMODE=(LOCAL,SERVER)'); + end; + end; + List.Add('TransIsolation=(tiDirtyRead,tiReadCommitted,tiRepeatableRead)'); +end; + +function TDAEBDEDriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + result := [doAuxDriver, doServerName, doDatabaseName, doLogin, doCustom]; + { TODO -c???: GetAuxParams } +end; + +function TDAEBDEDriver.GetAvailableDriverOptionsEx( + AuxDriver: string): TDAAvailableDriverOptions; +begin + case ProviderToProviderType(AuxDriver) of + bdeSTANDARD: result := [doAuxDriver, doDatabaseName, doCustom]; + bdeDB2: result := [doAuxDriver, doServerName, doLogin, doCustom]; + bdeMSACCESS: result := [doAuxDriver, doDatabaseName, doLogin, doCustom]; + else + result := [doAuxDriver, doServerName, doDatabaseName, doLogin, doCustom]; + end; +end; + +function TDAEBDEDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEBDEConnection; +end; + +function TDAEBDEDriver.GetDefaultConnectionType( + const AuxDriver: string): string; +begin + case ProviderToProviderType(AuxDriver) of + bdeSTANDARD : Result := Paradox_DriverType; + bdeDB2 : Result := DB2_DriverType; + bdeINFORMIX: Result := Informix_DriverType; + bdeINTRBASE : Result := IB_DriverType; + bdeMSACCESS : Result := Access_DriverType; + bdeMSSQL: Result:=MSSQL_DriverType; + bdeORACLE: Result:=Oracle_DriverType; + bdeSYBASE: Result:=Sybase_DriverType; + bdeODBC: Result:=ODBC_DriverType; + else + Result := inherited GetDefaultConnectionType(AuxDriver); + end; +end; + +function TDAEBDEDriver.GetDescription: string; +begin + result := 'Borland BDE Driver'; +end; + +function TDAEBDEDriver.GetDriverID: string; +begin + result := 'BDE'; +end; + +function Need_ODBC_DSN(Provider: string): boolean; +var + List : TStringList; +begin + List := TStringList.Create; + try + try + if Session.IsAlias(Provider) then + Session.GetAliasParams(Provider, List) + else + Session.GetDriverParams(Provider, List); + Result := List.Values['ODBC DSN'] = ''; + except + // in case is invalid Provider, error is raised + Result := False; + end; + finally + List.Free; + end; +end; + +function TDAEBDEDriver.GetProviderDefaultCustomParameters( + Provider: string): string; +begin + Result := ''; + if Provider = '' then Exit; + case ProviderToProviderType(Provider) of + bdeODBC: if Need_ODBC_DSN(Provider) then Result := 'ODBC DSN='; + bdeSTANDARD, bdeDB2, bdeMSACCESS: Result := 'TransIsolation=tiDirtyRead;'; + end; +end; + +{ TDAEBDEQuery } + +procedure TDAEBDEQuery.ClearParams; +begin + inherited; + TQuery(Dataset).Params.Clear; +end; + +function TDAEBDEQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TQuery.Create(nil); + TQuery(Result).DatabaseName := TDAEBDEConnection(aConnection).fDatabase.DatabaseName; + TQuery(Result).SessionName := TDAEBDEConnection(aConnection).fDatabase.SessionName; +end; + +function TDAEBDEQuery.DoExecute: integer; +begin + TQuery(Dataset).ExecSQL; + result := TQuery(Dataset).RowsAffected; +end; + +function TDAEBDEQuery.DoGetSQL: string; +begin + result := TQuery(Dataset).SQL.Text; +end; + +procedure TDAEBDEQuery.DoPrepare(Value: boolean); +begin + if Value then + TQuery(Dataset).Prepare + else + TQuery(Dataset).UnPrepare +end; + +procedure TDAEBDEQuery.DoSetSQL(const Value: string); +begin + TQuery(Dataset).SQL.Text := Value; +end; + +procedure TDAEBDEQuery.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams,TQuery(Dataset).Params); +end; + +procedure TDAEBDEQuery.RefreshParams; +var + i : Integer; + par : TDAParam; + outpar : TParam; + ds : TQuery; +begin + inherited; + ds := TQuery(Dataset); + if not Assigned(ds.Params) then Exit; + for i := 0 to ds.Params.Count - 1 do begin + outpar := ds.Params[i]; + + par := self.ParamByName(outpar.Name); + + if outpar.DataType <> ftUnknown then + par.DataType := VCLTypeToDAType(outpar.DataType); + end; +end; + +procedure TDAEBDEQuery.SetParamValues(AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams,TQuery(Dataset).Params); +end; + +{ TDAEBDEStoredProcedure } + +function TDAEBDEStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + result := TStoredProc.Create(nil); + TStoredProc(result).DatabaseName := TDAEBDEConnection(aConnection).fDatabase.DatabaseName; + TStoredProc(result).SessionName := TDAEBDEConnection(aConnection).fDatabase.SessionName; +end; + +function TDAEBDEStoredProcedure.DoExecute: integer; +begin + Result := -1; + TStoredProc(Dataset).ExecProc; +end; + +procedure TDAEBDEStoredProcedure.DoPrepare(Value: boolean); +begin + if value then + TStoredProc(Dataset).Prepare + else + TStoredProc(Dataset).UnPrepare +end; + +function TDAEBDEStoredProcedure.Execute: integer; +var + i : integer; + ds : TStoredProc; +begin + ds := TStoredProc(Dataset); + + for i := ds.Params.Count - 1 downto 0 do begin + if (ds.Params[i].DataType = ftInterface) and + (ds.Params[i].ParamType in [ptOutput, ptInputOutput, ptReSult]) then + ds.Params.Delete(i); + end; + + SetParamValuesStd(GetParams, TStoredProc(Dataset).Params); + + Result:= DoExecute; + ds.GetResults; + + GetParamValuesStd(GetParams, TStoredProc(Dataset).Params); +end; + +procedure TDAEBDEStoredProcedure.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TStoredProc(Dataset).Params); +end; + +function TDAEBDEStoredProcedure.GetStoredProcedureName: string; +begin + result := TStoredProc(Dataset).StoredProcName; +end; + +procedure TDAEBDEStoredProcedure.RefreshParams; +var + dsparams : TParams; +begin + dsparams := TParams.Create(nil); + try + TStoredProc(Dataset).CopyParams(dsParams); + RefreshParamsStd(dsparams); + finally + dsParams.Free; + end; +end; + +procedure TDAEBDEStoredProcedure.SetParamValues( + AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams, TStoredProc(Dataset).Params); +end; + +procedure TDAEBDEStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TStoredProc(Dataset).StoredProcName := Name; +end; + +{ TDAEBDEConnection } + +function TDAEBDEConnection.CreateCustomConnection: TCustomConnection; +begin + FDatabase := TDatabase.Create(nil); + FSession := TSession.Create(nil); + FSession.AutoSessionName := True; + fDatabase.SessionName := FSession.SessionName; + Result := fDatabase; + fDatabase.LoginPrompt := False; + fDatabase.DatabaseName := copy(NewStrippedGuidAsString, 1, 30); +end; + +function TDAEBDEConnection.CreateMacroProcessor: TDASQLMacroProcessor; +begin + {$IFDEF MAX_SUPPORT} + case fProviderType of + bdeINTRBASE: Result := IB_CreateMacroProcessor; + bdeMSSQL: Result := MSSQL_CreateMacroProcessor; + bdeORACLE: Result := Oracle_CreateMacroProcessor; + else + Result:=inherited CreateMacroProcessor; + end; + {$ELSE} + Result:=inherited CreateMacroProcessor; + {$ENDIF} +end; + +destructor TDAEBDEConnection.Destroy; +begin + FreeAndNil(FSession); + inherited; +end; + +procedure TDAEBDEConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); + + procedure SetUserNamePassword; + begin + with aConnStrParser do begin + if (Self.UserID <> '') then + fDatabase.Params.Values['USER NAME'] := Self.UserID + else if (UserID <> '') then + fDatabase.Params.Values['USER NAME'] := UserID; + + if (Self.Password <> '') then + fDatabase.Params.Values['PASSWORD'] := Self.Password + else if (Password <> '') then + fDatabase.Params.Values['PASSWORD'] := Password; + end; + end; + +var + i : Integer; +begin + inherited; + with aConnStrParser do begin + if AuxDriver <> '' then begin + fDatabase.Params.Clear; + fDatabase.AliasName := ''; + fDatabase.DriverName := ''; + fProviderType := ProviderToProviderType(AuxDriver); + if fDatabase.Session.IsAlias(AuxDriver) then + fDatabase.AliasName := AuxDriver + else + fDatabase.DriverName := AuxDriver; + end + else + raise EDADriverException.Create('No aux driver specified for BDE connection'); + + fProviderName := AuxDriver; + + case fProviderType of + bdeSTANDARD: begin + //fDatabase.Params.Values['DEFAULT DRIVER'] := ; {PARADOX, DBASE, FOXPRO, ASCIIDRV} + //fDatabase.Params.Values['ENABLE BCD'] := { TRUE / FALSE} + if Database <> '' then fDatabase.Params.Values['PATH'] := Database; + end; + bdeDB2: begin + //fDatabase.Params.Values['BATCH COUNT'] := { = 200} + //fDatabase.Params.Values['BLOB SIZE'] := { = 32} + //fDatabase.Params.Values['BLOBS TO CACHE'] := { = 64} + if Server <> '' then fDatabase.Params.Values['DB2 DSN'] := Server; { = 'DB2_SERVER'} + //fDatabase.Params.Values['ENABLE BCD'] := { TRUE / FALSE} + //fDatabase.Params.Values['ENABLE SCHEMA CACHE'] := { TRUE / FALSE} + //fDatabase.Params.Values['LANGDRIVER'] := { ...} + //fDatabase.Params.Values['MAX ROWS'] := { = -1} + //fDatabase.Params.Values['OPEN MODE'] := { READ/WRITE, READ ONLY} + //fDatabase.Params.Values['ROWSET SIZE'] := { = 20} + //fDatabase.Params.Values['SCHEMA CACHE DIR'] := { = ''} + //fDatabase.Params.Values['SCHEMA CACHE SIZE'] := { = 8} + //fDatabase.Params.Values['SCHEMA CACHE TIME'] := { = -1} + //fDatabase.Params.Values['SQLPASSTHRU MODE'] := { SHARED AUTOCOMMIT, SHARED NOAUTOCOMMIT, NOT SHARED} + //fDatabase.Params.Values['SQLQRYMODE'] := { = '',LOCAL,SERVER} + SetUserNamePassword; + end; + bdeINFORMIX: begin + //fDatabase.Params.Values['BATCH COUNT'] := { = 200} + //fDatabase.Params.Values['BLOB SIZE'] := { = 32} + //fDatabase.Params.Values['BLOBS TO CACHE'] := { = 64} + //fDatabase.Params.Values['COLLCHAR'] := { = 0,1,2} + if Database <> '' then fDatabase.Params.Values['DATABASE NAME'] := Database; + //fDatabase.Params.Values['DATE MODE'] := { = 0}; + //fDatabase.Params.Values['DATE SEPARATOR'] := { = '/'}; + //fDatabase.Params.Values['DBNLS'] := { = '',0,1,2}; + //fDatabase.Params.Values['ENABLE BCD'] := { TRUE / FALSE} + //fDatabase.Params.Values['ENABLE SCHEMA CACHE'] := { TRUE / FALSE} + //fDatabase.Params.Values['LANGDRIVER'] := { ...} + //fDatabase.Params.Values['LIST SYNONYMS'] := { NONE, ALL, PRIVATE} + //fDatabase.Params.Values['LOCK MODE'] := { = 5} + //fDatabase.Params.Values['MAX ROWS'] := { = -1} + //fDatabase.Params.Values['OPEN MODE'] := { READ/WRITE, READ ONLY} + //fDatabase.Params.Values['SCHEMA CACHE DIR'] := { = ''} + //fDatabase.Params.Values['SCHEMA CACHE SIZE'] := { = 8} + //fDatabase.Params.Values['SCHEMA CACHE TIME'] := { = -1} + if Server <> '' then fDatabase.Params.Values['SERVER NAME'] := Server; + //fDatabase.Params.Values['SQLPASSTHRU MODE'] := { SHARED AUTOCOMMIT, SHARED NOAUTOCOMMIT, NOT SHARED} + //fDatabase.Params.Values['SQLQRYMODE'] := { = '',LOCAL,SERVER} + SetUserNamePassword; + end; + bdeINTRBASE: begin + //fDatabase.Params.Values['BATCH COUNT'] := { = 200} + //fDatabase.Params.Values['BLOB SIZE'] := { = 32} + //fDatabase.Params.Values['BLOBS TO CACHE'] := { = 64} + //fDatabase.Params.Values['COMMIT RETAIN'] := { = FALSE} + //fDatabase.Params.Values['ENABLE BCD'] := { TRUE / FALSE} + //fDatabase.Params.Values['ENABLE SCHEMA CACHE'] := { TRUE / FALSE} + //fDatabase.Params.Values['LANGDRIVER'] := { ...} + //fDatabase.Params.Values['MAX ROWS'] := { = -1} + //fDatabase.Params.Values['OPEN MODE'] := { READ/WRITE, READ ONLY} + //fDatabase.Params.Values['ROLE NAME'] := { = ''} + //fDatabase.Params.Values['SCHEMA CACHE DIR'] := { = ''} + //fDatabase.Params.Values['SCHEMA CACHE SIZE'] := { = 8} + //fDatabase.Params.Values['SCHEMA CACHE TIME'] := { = -1} + if Database <> '' then fDatabase.Params.Values['SERVER NAME'] := StringReplace(Database, '\', '/', [rfReplaceAll]); { = IB_SERVER:/PATH/DATABASE.GDB} + if Server <> '' then fDatabase.Params.Values['SERVER NAME'] := Server + ':' + fDatabase.Params.Values['SERVER NAME']; { = IB_SERVER:/PATH/DATABASE.GDB} + //fDatabase.Params.Values['SQLPASSTHRU MODE'] := { SHARED AUTOCOMMIT, SHARED NOAUTOCOMMIT, NOT SHARED} + //fDatabase.Params.Values['SQLQRYMODE'] := { = '',LOCAL,SERVER} + SetUserNamePassword; + //fDatabase.Params.Values['WAIT ON LOCKS'] := {FALSE}; + end; + bdeMSACCESS: begin + if Database <> '' then fDatabase.Params.Values['DATABASE NAME'] := StringReplace(Database, '\', '/', [rfReplaceAll]); { DRIVE:/PATH/DATABASE.MDB} + //fDatabase.Params.Values['LANGDRIVER'] := { ...} + //fDatabase.Params.Values['OPEN MODE'] := { READ/WRITE, READ ONLY} + //fDatabase.Params.Values['SYSTEM DATABASE'] := { *.MDW} + SetUserNamePassword; + end; + bdeMSSQL: begin + //fDatabase.Params.Values['APPLICATION MODE'] := { } + //fDatabase.Params.Values['BATCH COUNT'] := { = 200} + //fDatabase.Params.Values['BLOB EDIT LOGGING'] := { '',TRUE,FALSE} + //fDatabase.Params.Values['BLOB SIZE'] := { = 32} + //fDatabase.Params.Values['BLOBS TO CACHE'] := { = 64} + if Database <> '' then fDatabase.Params.Values['DATABASE NAME'] := Database; + //fDatabase.Params.Values['DATE MODE'] := { = 0}; + //fDatabase.Params.Values['ENABLE BCD'] := { TRUE / FALSE} + //fDatabase.Params.Values['ENABLE SCHEMA CACHE'] := { TRUE / FALSE} + //fDatabase.Params.Values['HOST NAME'] := { }; + //fDatabase.Params.Values['LANGDRIVER'] := { ...} + //fDatabase.Params.Values['MAX QUERY TIME'] := { 300} + //fDatabase.Params.Values['MAX ROWS'] := { = -1} + //fDatabase.Params.Values['NATIONAL LANG NAME'] := { } + //fDatabase.Params.Values['OPEN MODE'] := { READ/WRITE, READ ONLY} + //fDatabase.Params.Values['SCHEMA CACHE DIR'] := { = ''} + //fDatabase.Params.Values['SCHEMA CACHE SIZE'] := { = 8} + //fDatabase.Params.Values['SCHEMA CACHE TIME'] := { = -1} + if Server <> '' then fDatabase.Params.Values['SERVER NAME'] := Server; { = MSS_SERVER} + //fDatabase.Params.Values['SQLPASSTHRU MODE'] := { SHARED AUTOCOMMIT, SHARED NOAUTOCOMMIT, NOT SHARED} + //fDatabase.Params.Values['SQLQRYMODE'] := { = '',LOCAL,SERVER} + //fDatabase.Params.Values['TDS PACKET SIZE'] := { = 4096} + SetUserNamePassword; + end; + bdeORACLE: begin + //fDatabase.Params.Values['BATCH COUNT'] := { = 200} + //fDatabase.Params.Values['BLOB SIZE'] := { = 32} + //fDatabase.Params.Values['BLOBS TO CACHE'] := { = 64} + //fDatabase.Params.Values['ENABLE BCD'] := { TRUE / FALSE} + //fDatabase.Params.Values['ENABLE INTEGERS'] := { TRUE / FALSE} + //fDatabase.Params.Values['ENABLE SCHEMA CACHE'] := { TRUE / FALSE} + //fDatabase.Params.Values['LANGDRIVER'] := { ...} + //fDatabase.Params.Values['LIST SYNONYMS'] := { NONE, ALL, PRIVATE} + //fDatabase.Params.Values['MAX ROWS'] := { = -1} + //fDatabase.Params.Values['NET PROTOCOL'] := { = TNS, TCP/IP,SPX/IPX,NETBIOS,NAMED PIPES,DECNET,3270,VINES,APPC,ASYNC} + //fDatabase.Params.Values['OBJECT MODE'] := { = TRUE/FALSE} + //fDatabase.Params.Values['OPEN MODE'] := { READ/WRITE, READ ONLY} + //fDatabase.Params.Values['ROWSET SIZE'] := { = 20} + //fDatabase.Params.Values['SCHEMA CACHE DIR'] := { = ''} + //fDatabase.Params.Values['SCHEMA CACHE SIZE'] := { = 8} + //fDatabase.Params.Values['SCHEMA CACHE TIME'] := { = -1} + if Server <> '' then fDatabase.Params.Values['SERVER NAME'] := Server; { = ORA_SERVER} + //fDatabase.Params.Values['SQLPASSTHRU MODE'] := { SHARED AUTOCOMMIT, SHARED NOAUTOCOMMIT, NOT SHARED} + //fDatabase.Params.Values['SQLQRYMODE'] := { = '',LOCAL,SERVER} + SetUserNamePassword; + end; + bdeSYBASE: begin + //fDatabase.Params.Values['APPLICATION MODE'] := { } + //fDatabase.Params.Values['BATCH COUNT'] := { = 200} + //fDatabase.Params.Values['BLOB EDIT LOGGING'] := { '',TRUE,FALSE} + //fDatabase.Params.Values['BLOB SIZE'] := { = 32} + //fDatabase.Params.Values['BLOBS TO CACHE'] := { = 64} + //fDatabase.Params.Values['CS CURSOR ROWS'] := { = 1} + if Database <> '' then fDatabase.Params.Values['DATABASE NAME'] := Database; + //fDatabase.Params.Values['DATE MODE'] := { = 0}; + //fDatabase.Params.Values['ENABLE BCD'] := { TRUE / FALSE} + //fDatabase.Params.Values['ENABLE SCHEMA CACHE'] := { TRUE / FALSE} + //fDatabase.Params.Values['HOST NAME'] := { }; + //fDatabase.Params.Values['LANGDRIVER'] := { ...} + //fDatabase.Params.Values['MAX QUERY TIME'] := { 300} + //fDatabase.Params.Values['MAX ROWS'] := { = -1} + //fDatabase.Params.Values['NATIONAL LANG NAME'] := { } + //fDatabase.Params.Values['OPEN MODE'] := { READ/WRITE, READ ONLY} + //fDatabase.Params.Values['SCHEMA CACHE DIR'] := { = ''} + //fDatabase.Params.Values['SCHEMA CACHE SIZE'] := { = 8} + //fDatabase.Params.Values['SCHEMA CACHE TIME'] := { = -1} + if Server <> '' then fDatabase.Params.Values['SERVER NAME'] := Server; { = SYB_SERVER} + //fDatabase.Params.Values['SQLPASSTHRU MODE'] := { SHARED AUTOCOMMIT, SHARED NOAUTOCOMMIT, NOT SHARED} + //fDatabase.Params.Values['SQLQRYMODE'] := { = '',LOCAL,SERVER} + //fDatabase.Params.Values['TDS PACKET SIZE'] := { = 512} + SetUserNamePassword; + end; + bdeODBC: begin + //fDatabase.Params.Values['BATCH COUNT'] := { = 200} + //fDatabase.Params.Values['BLOB SIZE'] := { = 32} + //fDatabase.Params.Values['BLOBS TO CACHE'] := { = 64} + if Database <> '' then fDatabase.Params.Values['DATABASE NAME'] := Database; + //fDatabase.Params.Values['ENABLE BCD'] := { TRUE / FALSE} + //fDatabase.Params.Values['ENABLE SCHEMA CACHE'] := { TRUE / FALSE} + //fDatabase.Params.Values['LANGDRIVER'] := { ...} + //fDatabase.Params.Values['MAX ROWS'] := { = -1} + //fDatabase.Params.Values['ODBC DSN'] := {} + //fDatabase.Params.Values['OPEN MODE'] := { READ/WRITE, READ ONLY} + //fDatabase.Params.Values['ROWSET SIZE'] := { = 20} + //fDatabase.Params.Values['SCHEMA CACHE DIR'] := { = ''} + //fDatabase.Params.Values['SCHEMA CACHE SIZE'] := { = 8} + //fDatabase.Params.Values['SCHEMA CACHE TIME'] := { = -1} + //fDatabase.Params.Values['SQLPASSTHRU MODE'] := { SHARED AUTOCOMMIT, SHARED NOAUTOCOMMIT, NOT SHARED} + //fDatabase.Params.Values['SQLQRYMODE'] := { = '',LOCAL,SERVER} + SetUserNamePassword; + end; + end; + for i := 0 to AuxParamsCount - 1 do begin + if AnsiSameText(AuxParamNames[i], 'TransIsolation') then begin + if AnsiSameText(AuxParams[AuxParamNames[i]], 'tiDirtyRead') then fDatabase.TransIsolation := tiDirtyRead else + if AnsiSameText(AuxParams[AuxParamNames[i]], 'tiReadCommitted') then fDatabase.TransIsolation := tiReadCommitted else + if AnsiSameText(AuxParams[AuxParamNames[i]], 'tiRepeatableRead') then fDatabase.TransIsolation := tiRepeatableRead; + end + else + fDatabase.Params.Values[AuxParamNames[i]] := AuxParams[AuxParamNames[i]]; + end; + end; +end; + +function TDAEBDEConnection.DoBeginTransaction: integer; +begin + result := -1; + fDatabase.StartTransaction; +end; + +procedure TDAEBDEConnection.DoCommitTransaction; +begin + fDatabase.Commit; +end; + +procedure TDAEBDEConnection.DoGetForeignKeys( + out ForeignKeys: TDADriverForeignKeyCollection); +begin + inherited DoGetForeignKeys(ForeignKeys); + {$IFDEF MAX_SUPPORT} + case fProviderType of + bdeINTRBASE: IB_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys); + bdeMSSQL: MSSQL_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys, True); + bdeORACLE: Oracle_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys); + end; + {$ENDIF} +end; + +function TDAEBDEConnection.DoGetInTransaction: boolean; +begin + Result := fDatabase.InTransaction; +end; + +function TDAEBDEConnection.DoGetLastAutoInc( + const GeneratorName: string): integer; +begin + Result := inherited DoGetLastAutoInc(GeneratorName); + {$IFDEF MAX_SUPPORT} + case fProviderType of + bdeINTRBASE: Result := IB_GetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + bdeMSSQL: Result := MSSQL_DoGetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + bdeOracle: Result := Oracle_DoGetLastAutoInc(GeneratorName,GetDatasetClass.Create(Self)); + end; + {$ENDIF} +end; + +procedure TDAEBDEConnection.DoGetStoredProcedureNames( + out List: IROStrings); +begin + inherited DoGetStoredProcedureNames(List); + {$IFDEF MAX_SUPPORT} + case fProviderType of + bdeINTRBASE: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotProcedure); + bdeMSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure, True); + bdeORACLE: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure); + else + fDatabase.Session.GetStoredProcNames(fDatabase.DatabaseName, List.Strings); + end; + {$ELSE} + fDatabase.Session.GetStoredProcNames(fDatabase.DatabaseName, List.Strings); + {$ENDIF} +end; + +procedure TDAEBDEConnection.DoGetStoredProcedureParams( + const aStoredProcedureName: string; out Params: TDAParamCollection); +begin + {$IFDEF MAX_SUPPORT} + case fProviderType of + bdeOracle: Oracle_DoGetStoredProcedureParams(aStoredProcedureName, GetDatasetClass.Create(Self), Params); + else + inherited DoGetStoredProcedureParams(aStoredProcedureName, Params); + end; + {$ELSE} + inherited DoGetStoredProcedureParams(aStoredProcedureName, Params); + {$ENDIF} +end; + +procedure TDAEBDEConnection.DoGetTableFields(const aTableName: string; + out Fields: TDAFieldCollection); +begin + {$IFDEF MAX_SUPPORT} + case fProviderType of + bdeINTRBASE: IB_GetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + bdeMSSQL: MSSQL_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + bdeOracle: Oracle_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + else + inherited DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), Fields); + end; + {$ELSE} + inherited DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), Fields); + {$ENDIF} +end; + +procedure TDAEBDEConnection.DoGetTableNames(out List: IROStrings); +begin + inherited DoGetTableNames(List); + {$IFDEF MAX_SUPPORT} + case fProviderType of + bdeINTRBASE: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotTable); + bdeMSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotTable, True); + bdeORACLE: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotTable); + else + fDatabase.GetTableNames(List.Strings); + end; + {$ELSE} + fDatabase.GetTableNames(List.Strings); + {$ENDIF} +end; + +procedure TDAEBDEConnection.DoGetViewNames(out List: IROStrings); +begin + inherited DoGetViewNames(List); + {$IFDEF MAX_SUPPORT} + case fProviderType of + bdeINTRBASE: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotView); + bdeMSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotView, True); + bdeORACLE: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotView); + end; + {$ENDIF} +end; + +procedure TDAEBDEConnection.DoRollbackTransaction; +begin + fDatabase.Rollback; +end; + +function TDAEBDEConnection.GetDatabaseNames: IROStrings; +begin + {$IFDEF MAX_SUPPORT} + case fProviderType of + bdeMSSQL: Result := MSSQL_GetDatabaseNames(Self); + else + Result := NewROStrings; + fDatabase.Session.GetDatabaseNames(Result.Strings); + end; + {$ELSE} + Result := NewROStrings; + fDatabase.Session.GetDatabaseNames(Result.Strings); + {$ENDIF} +end; + +function TDAEBDEConnection.GetDatasetClass: TDAEDatasetClass; +begin + Result := TDAEBDEQuery; +end; + +function TDAEBDEConnection.GetFileExtensions: IROStrings; +begin + case fProviderType of + bdeINTRBASE: Result := IB_GetFileExtensions; + bdeMSACCESS: Result := MSACCESS_GetFileExtensions; + else + Result := NewROStrings; + end; +end; + +function TDAEBDEConnection.GetGeneratorNames: IROStrings; +begin + case fProviderType of + bdeINTRBASE: Result:= IB_GetGeneratorNames(GetDatasetClass.Create(Self)); + else + Result := NewROStrings; + end; +end; + +function TDAEBDEConnection.GetNextAutoinc( + const GeneratorName: string): integer; +begin + result := -1; + {$IFDEF MAX_SUPPORT} + case fProviderType of + bdeINTRBASE: Result := IB_GetNextAutoinc(GeneratorName, GetDatasetClass.Create(Self)); + bdeOracle: Result := Oracle_GetNextAutoinc(GeneratorName, GetDatasetClass.Create(Self)); + end; + {$ENDIF} +end; + +function TDAEBDEConnection.GetQuoteChars: TDAQuoteCharArray; +begin + case fProviderType of + bdeMSSQL: result:=MSSQL_GetQuoteChars; + bdeORACLE: Result:= Oracle_GetQuoteChars; + else + Result[0] := '"'; + Result[1] := '"'; + end; +end; + +function TDAEBDEConnection.GetSPSelectSyntax( + HasArguments: Boolean): string; +begin + Result := inherited GetSPSelectSyntax(HasArguments); + {$IFDEF MAX_SUPPORT} + case fProviderType of + bdeINTRBASE: Result := IB_GetSPSelectSyntax(HasArguments); + bdeMSSQL: Result := MSSQL_GetSPSelectSyntax(HasArguments); + bdeOracle: Result := Oracle_GetSPSelectSyntax(HasArguments); + end; + {$ENDIF} +end; + +function TDAEBDEConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + Result := TDAEBDEStoredProcedure; +end; + +function TDAEBDEConnection.GetUserID: string; +begin + Result:=fDatabase.Params.Values['USER NAME']; +end; + +function TDAEBDEConnection.IdentifierNeedsQuoting( + const iIdentifier: string): boolean; +begin + Result := inherited IdentifierNeedsQuoting(iIdentifier); + if not Result then + case fProviderType of + bdeMSSQL: Result := MSSQL_IdentifierNeedsQuoting(iIdentifier); + bdeINTRBASE: Result := IB_IdentifierNeedsQuoting(iIdentifier,1); + bdeORACLE: Result := Oracle_IdentifierNeedsQuoting(iIdentifier); + bdeDB2: Result := DB2_IdentifierNeedsQuoting(iIdentifier); + bdeSYBASE: Result := Sybase_IdentifierNeedsQuoting(iIdentifier); + else + Result := SQL92_IdentifierNeedsQuoting(iIdentifier); + end; +end; + +function TDAEBDEConnection.QueryInterface(const IID: TGUID; + out Obj): HResult; +begin + Result := E_NOINTERFACE; + + if IsEqualGUID(IID, IDADB2Connection) then begin + if not (fProviderType in [bdeDB2]) then Exit; + end; + + if IsEqualGUID(IID, IDASybaseConnection) then begin + if not (fProviderType in [bdeSYBASE]) then Exit; + end; + + if IsEqualGUID(IID, IDAInterbaseConnection) then begin + if not (fProviderType in [bdeINTRBASE]) then Exit; + end; + + if IsEqualGUID(IID, IDAADOConnection) then begin + if not (fProviderType in [bdeMSSQL]) then Exit; + end; + + if IsEqualGUID(IID, IDAOracleConnection) then begin + if not (fProviderType in [bdeOracle]) then Exit; + end; + + if IsEqualGUID(IID, IDAUseGenerators) then begin + if not (fProviderType in [bdeINTRBASE, bdeOracle]) then Exit; + end; + + if IsEqualGUID(IID, IDACanQueryGeneratorsNames) then begin + if not (fProviderType in [bdeINTRBASE]) then Exit; + end; + + if IsEqualGUID(IID, IDAFileBasedDatabase) then begin + if not (fProviderType in [bdeINTRBASE, bdeMSACCESS]) then Exit; + end; + + if IsEqualGUID(IID, IDACanQueryDatabaseNames) then begin + if not (fProviderType in [bdeINFORMIX, bdeMSSQL, bdeORACLE, bdeSYBASE]) then Exit; + end; + + if IsEqualGUID(IID, IDADirectoryBasedDatabase) then begin + if not (fProviderType in [bdeSTANDARD]) then Exit; + end; + + Result := inherited QueryInterface(IID, Obj); +end; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDABDEDriver]); +end; + +exports + GetDriverObject name func_GetDriverObject; + +function TDAEBDEConnection.QuoteFieldName(const aTableName, + aFieldName: string): string; +begin + Result := inherited QuoteFieldName(aTableName, aFieldName); + case fProviderType of + bdeSTANDARD: + if (aTableName <> '') and (aFieldName <> Result) then + Result := QuoteIdentifierIfNeeded(aTableName) + '.' + Result; + end; +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDACRLabsUtils.inc b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDACRLabsUtils.inc new file mode 100644 index 0000000..5cf9450 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDACRLabsUtils.inc @@ -0,0 +1,60 @@ +{ + !!! DO NOT REMOVE THIS FILE !!! + + It's included with an $I directive in the SDAC and ODAC driver units and it's used in + their implementation of the IDAMustSetParams + +} +procedure WriteCrLabsParamValues(InputParams : TDAParamCollection; OutputParams: TDAParams; IgnoreBlobType : boolean = false); +var i : integer; + par : uDAInterfaces.TDAParam; + outpar : DBAccess.TDAParam; + blobtype : TFieldType; +begin + for i := 0 to (InputParams.Count-1) do begin + par := InputParams[i]; + outpar := OutputParams.ParamByName(par.Name); + + // If no blob type is specified, then gets the default field type. + // BlobType is only meaningful to Oracle. MSSQL works fine just setting the DataType + blobtype := BlobTypeMappings[par.BlobType]; + if (blobtype=ftUnknown) + then blobtype := DADataTypesMappings[par.DataType]; + + case par.DataType of + datBlob : begin + outpar.ParamType := TParamType(par.ParamType); + outpar.DataType := DADataTypesMappings[par.DataType]; + if VarIsNull(par.Value) then + outpar.Clear + else begin + if VarIsArray(par.Value) then + outpar.Value := VariantBinaryToString(par.Value) + else + outpar.Value := par.Value; + end; + end; + datMemo : begin + outpar.ParamType := TParamType(par.ParamType); + outpar.DataType := ftMemo; + + // Only happens with Oracle + if not IgnoreBlobType and (blobtype<>ftUnknown) then + outpar.DataType := blobtype; + + if VarIsNull(par.Value) then + outpar.Clear + else + outpar.Value := par.Value; + end; + else begin + outpar.ParamType := TParamType(par.ParamType); + outpar.DataType := DADataTypesMappings[par.DataType]; + if VarIsNull(par.Value) + then outpar.Clear + else outpar.Value := par.Value; + end; + end; { case } + end; { for } +end; + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDADBISAMDriver.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDADBISAMDriver.pas new file mode 100644 index 0000000..eff0c63 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDADBISAMDriver.pas @@ -0,0 +1,1110 @@ +unit uDADBISAMDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up +{ platform: Win32 +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ENDIF MSWINDOWS} +{$IFDEF LINUX} +{$I ../DataAbstract.inc} +{$ENDIF LINUX} + +{$R DataAbstract_DBISAMDriver_Glyphs.res} + +{$I dbisamvr.inc} +{$IFNDEF DBISAM_V4} +{$DEFINE DBISAM_V3} +{$ENDIF} + +interface + +uses DB, Classes, uDAEngine, uDAInterfaces, uROClasses, DBISAMTb, uDAUtils; + +type + { TDADBISAMDriver } + TDADBISAMDriver = class(TDADriverReference) + end; + + { IDBISAMConnection } + IDBISAMConnection = interface + ['{C6222EF8-FBAE-42AE-B034-8FFAE8FF2578}'] + end; + + { IDBISAMConnectionProperties + Provides access to common properties of DBISAM connections } + + IDBISAMConnectionProperties = interface + ['{41BAFCD6-D6EA-477E-B489-7EA6E05FFCC0}'] + function GetForceBufferFlush: Boolean; + procedure SetForceBufferFlush(Value: Boolean); + function GetKeepConnections: Boolean; + procedure SetKeepConnections(Value: Boolean); + function GetLockProtocol: TLockProtocol; + procedure SetLockProtocol(Value: TLockProtocol); + function GetLockRetryCount: Byte; + procedure SetLockRetryCount(Value: Byte); + function GetLockWaitTime: Word; + procedure SetLockWaitTime(Value: Word); + function GetPrivateDir: string; + procedure SetPrivateDir(const Value: string); + function GetRemotePort: Integer; + procedure SetRemotePort(Value: Integer); + function GetRemoteService: string; + procedure SetRemoteService(const Value: string); + function GetRemoteTrace: Boolean; + procedure SetRemoteTrace(Value: Boolean); + {$IFDEF DBISAM_V3} + function GetRemoteType: TRemoteType; + procedure SetRemoteType(Value: TRemoteType); + {$ENDIF} + {$IFDEF DBISAM_V4} + function GetRemoteCompression: Byte; + procedure SetRemoteCompression(Value: Byte); + function GetRemoteEncryption: Boolean; + procedure SetRemoteEncryption(Value: Boolean); + function GetRemoteEncryptionPassword: string; + procedure SetRemoteEncryptionPassword(const Value: string); + function GetRemoteTimeout: Integer; + procedure SetRemoteTimeout(Value: Integer); + {$ENDIF} + + procedure AddPassword( const aPassword: string); + procedure RemovePassword(const aPassword: string); + procedure RemoveAllPasswords; + + property ForceBufferFlush: Boolean read GetForceBufferFlush write SetForceBufferFlush; + property KeepConnections: Boolean read GetKeepConnections write SetKeepConnections; + property LockProtocol: TLockProtocol read GetLockProtocol write SetLockProtocol; + property LockRetryCount: Byte read GetLockRetryCount write SetLockRetryCount; + property LockWaitTime: Word read GetLockWaitTime write SetLockWaitTime; + property PrivateDir: string read GetPrivateDir write SetPrivateDir; + property RemotePort: Integer read GetRemotePort write SetRemotePort; + property RemoteService: string read GetRemoteService write SetRemoteService; + property RemoteTrace: Boolean read GetRemoteTrace write SetRemoteTrace; + {$IFDEF DBISAM_V3} + property RemoteType: TRemoteType read GetRemoteType write SetRemoteType; + {$ENDIF} + {$IFDEF DBISAM_V4} + property RemoteCompression: Byte read GetRemoteCompression write SetRemoteCompression; + property RemoteEncryption: Boolean read GetRemoteEncryption write SetRemoteEncryption; + property RemoteEncryptionPassword: string read GetRemoteEncryptionPassword write SetRemoteEncryptionPassword; + property RemoteTimeout: Integer read GetRemoteTimeout write SetRemoteTimeout; + {$ENDIF} + end; + + { TDBISAMConnection } + TDBISAMConnection = class(TDAConnectionWrapper) + private + fDatabase: TDBISAMDatabase; + fSession: TDBISAMSession; + + protected + function GetConnected: Boolean; override; + procedure SetConnected(Value: Boolean); override; + + public + constructor Create(AOwner: TComponent); override; + + property Database: TDBISAMDatabase read fDatabase; + property Session: TDBISAMSession read fSession; + end; + + { TDAEDBISAMDriver } + TDAEDBISAMDriver = class(TDAEDriver) + private + + protected + function GetConnectionClass: TDAEConnectionClass; override; + + // IDADriver + function GetDriverID: string; override; + function GetDescription: string; override; + + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; + function GetDefaultConnectionType(const AuxDriver: string): string; override; safecall; + public + end; + + { TDAEDBISAMConnection } + TDAEDBISAMConnection = class(TDAEConnection, IDBISAMConnection, IDBISAMConnectionProperties) + private + fConnection: TDBISAMConnection; + + protected + // IDBISAMConnectionProperties + function GetForceBufferFlush: Boolean; + procedure SetForceBufferFlush(Value: Boolean); + function GetKeepConnections: Boolean; + procedure SetKeepConnections(Value: Boolean); + function GetLockProtocol: TLockProtocol; + procedure SetLockProtocol(Value: TLockProtocol); + function GetLockRetryCount: Byte; + procedure SetLockRetryCount(Value: Byte); + function GetLockWaitTime: Word; + procedure SetLockWaitTime(Value: Word); + function GetPrivateDir: string; + procedure SetPrivateDir(const Value: string); + function GetRemotePort: Integer; + procedure SetRemotePort(Value: Integer); + function GetRemoteService: string; + procedure SetRemoteService(const Value: string); + function GetRemoteTrace: Boolean; + procedure SetRemoteTrace(Value: Boolean); + {$IFDEF DBISAM_V3} + function GetRemoteType: TRemoteType; + procedure SetRemoteType(Value: TRemoteType); + {$ENDIF} + {$IFDEF DBISAM_V4} + function GetRemoteCompression: Byte; + procedure SetRemoteCompression(Value: Byte); + function GetRemoteEncryption: Boolean; + procedure SetRemoteEncryption(Value: Boolean); + function GetRemoteEncryptionPassword: string; + procedure SetRemoteEncryptionPassword(const Value: string); + function GetRemoteTimeout: Integer; + procedure SetRemoteTimeout(Value: Integer); + {$ENDIF} + procedure AddPassword( const aPassword: string); + procedure RemovePassword(const aPassword: string); + procedure RemoveAllPasswords; + + // IDAConnection + function CreateCustomConnection: TCustomConnection; override; + function CreateMacroProcessor: TDASQLMacroProcessor; override; + + function GetDatasetClass: TDAEDatasetClass; override; + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); override; + function DoBeginTransaction: Integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: Boolean; override; + procedure DoGetTableNames(out List: IROStrings); override; + function DoGetLastAutoInc(const GeneratorName: string): integer; override; + procedure DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection);override; + function IdentifierNeedsQuoting(const iIdentifier: string): boolean; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + { TDAEDBISAMQuery } + TDAEDBISAMQuery = class(TDAEDataset, IDAMustSetParams) + private + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure ClearParams; override; + function DoExecute: Integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: Boolean); override; + + // IDAMustSetParams + {$IFDEF DBISAM_V4} + procedure RefreshParams; override; + {$ENDIF} + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +const + DBISAM_DriverType = 'DBISAM'; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses + SysUtils, uDADriverManager, uDARes, uDAMacroProcessors, Variants, + uROBinaryHelpers; + +var + _driver: TDAEDriver = nil; + dbisam_reservedwords: array of string; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDADBISAMDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAEDBISAMDriver.Create(nil); + result := _driver; +end; + +{ TDBISAMConnection } + +constructor TDBISAMConnection.Create(AOwner: TComponent); +begin + inherited; + + fSession := TDBISAMSession.Create(Self); + fSession.AutoSessionName := TRUE; + + fDatabase := TDBISAMDatabase.Create(Self); + fDatabase.SessionName := fSession.SessionName; + fDatabase.DatabaseName := 'DBISAMDB'; +end; + +function TDBISAMConnection.GetConnected: Boolean; +begin + result := fDatabase.Connected; +end; + +procedure TDBISAMConnection.SetConnected(Value: Boolean); +begin + if not(csDestroying in fDatabase.ComponentState) then begin + try + fSession.Active := Value; + fDatabase.Connected := Value; + except + fSession.Active := FALSE; + fDatabase.Connected := FALSE; + raise; + end; + end; +end; + +{ TDAEDBISAMConnection } + +procedure TDAEDBISAMConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +begin + inherited; + with aConnStrParser do begin + if (Self.UserID <> '') then + fConnection.Session.RemoteUser := Self.UserID + else + fConnection.Session.RemoteUser := UserID; + if (Self.Password <> '') then + fConnection.Session.RemotePassword := Self.Password + else + fConnection.Session.RemotePassword := Password; + + if (Server <> '') then begin + // Remote connection + fConnection.Session.SessionType := stRemote; + fConnection.Session.RemoteHost := Server; + fConnection.Database.RemoteDatabase := Database; + if (AuxParams['RemotePort'] <> '') then + fConnection.Session.RemotePort := StrToInt(AuxParams['RemotePort']); + if (AuxParams['RemoteService'] <> '') then + fConnection.Session.RemoteService := AuxParams['RemoteService']; + if (AuxParams['RemoteTrace'] = 'False') then + fConnection.Session.RemoteTrace := False + else if (AuxParams['RemoteTrace'] = 'True') then + fConnection.Session.RemoteTrace := True; + {$IFDEF DBISAM_V3} + if (AuxParams['RemoteType'] = 'rtLAN') then + fConnection.Session.RemoteType := rtLAN + else if (AuxParams['RemoteType'] = 'rtInternet') then + fConnection.Session.RemoteType := rtInternet; + {$ENDIF} + {$IFDEF DBISAM_V4} + if (AuxParams['RemoteCompression'] <> '') then + if (StrToInt(AuxParams['RemoteCompression']) in [0..9]) then + fConnection.Session.RemoteCompression := StrToInt(AuxParams['RemoteCompression']); + if (AuxParams['RemoteEncryption'] = 'False') then + fConnection.Session.RemoteEncryption := False + else if (AuxParams['RemoteEncryption'] = 'True') then + fConnection.Session.RemoteEncryption := True; + if (AuxParams['RemoteEncryptionPassword'] <> '') then + fConnection.Session.RemoteEncryptionPassword := AuxParams['RemoteEncryptionPassword']; + if (AuxParams['RemoteTimeout'] <> '') then + fConnection.Session.RemoteTimeout := StrToInt(AuxParams['RemoteTimeout']); + {$ENDIF} + end + else begin + // Local connection + fConnection.Session.SessionType := stLocal; + fConnection.Database.Directory := Database; + end; + + if (AuxParams['ForceBufferFlush'] = 'False') then + fConnection.Session.ForceBufferFlush := False + else if (AuxParams['ForceBufferFlush'] = 'True') then + fConnection.Session.ForceBufferFlush := True; + if (AuxParams['KeepConnections'] = 'False') then + begin + fConnection.Session.KeepConnections := False; + fConnection.Database.KeepConnection := False; + end + else if (AuxParams['KeepConnections'] = 'True') then + begin + fConnection.Session.KeepConnections := True; + fConnection.Database.KeepConnection := True; + end; + if (AuxParams['LockProtocol'] = 'lpOptimistic') then + fConnection.Session.LockProtocol := lpOptimistic + else if (AuxParams['LockProtocol'] = 'lpPessimistic') then + fConnection.Session.LockProtocol := lpPessimistic; + if (AuxParams['LockRetryCount'] <> '') then + fConnection.Session.LockRetryCount := StrToInt(AuxParams['LockRetryCount']); + if (AuxParams['LockWaitTime'] <> '') then + fConnection.Session.LockWaitTime := StrToInt(AuxParams['LockWaitTime']); + if (AuxParams['PrivateDir'] <> '') then + fConnection.Session.PrivateDir := AuxParams['PrivateDir']; + if (AuxParams['TablePassword'] <> '') then + begin + fConnection.Session.Active := True; + fConnection.Session.AddPassword(AuxParams['TablePassword']); + end; + end; +end; + +function TDAEDBISAMConnection.DoBeginTransaction: integer; +begin + result := -1; + fConnection.Database.StartTransaction; +end; + +procedure TDAEDBISAMConnection.DoCommitTransaction; +begin + with fConnection do + Database.Commit(Session.ForceBufferFlush); +end; + +function TDAEDBISAMConnection.CreateCustomConnection: TCustomConnection; +begin + result := TDBISAMConnection.Create(nil); + fConnection := TDBISAMConnection(result); +end; + +function TDAEDBISAMConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEDBISAMQuery +end; + +procedure TDAEDBISAMConnection.DoGetTableNames(out List: IROStrings); +var + _database: string; +begin + List := TROStrings.Create; + if (fConnection.Session.SessionType = stLocal) then + _database := fConnection.Database.Directory + else + _database := fConnection.Database.RemoteDatabase; + + fConnection.Session.GetTableNames(_database, List.Strings); +end; + +procedure TDAEDBISAMConnection.DoRollbackTransaction; +begin + fConnection.Database.Rollback; +end; + +function TDAEDBISAMConnection.DoGetInTransaction: Boolean; +begin + result := fConnection.Database.InTransaction; +end; + +function TDAEDBISAMConnection.CreateMacroProcessor: TDASQLMacroProcessor; +begin + result := TDADBISAMMacroProcessor.Create; +end; + +function TDAEDBISAMConnection.GetForceBufferFlush: Boolean; +begin + result := fConnection.Session.ForceBufferFlush; +end; + +procedure TDAEDBISAMConnection.SetForceBufferFlush(Value: Boolean); +begin + fConnection.Session.ForceBufferFlush := Value; +end; + +function TDAEDBISAMConnection.GetKeepConnections: Boolean; +begin + result := fConnection.Session.KeepConnections; +end; + +procedure TDAEDBISAMConnection.SetKeepConnections(Value: Boolean); +begin + fConnection.Session.KeepConnections := Value; + fConnection.Database.KeepConnection := Value; +end; + +function TDAEDBISAMConnection.GetLockProtocol: TLockProtocol; +begin + result := fConnection.Session.LockProtocol; +end; + +procedure TDAEDBISAMConnection.SetLockProtocol(Value: TLockProtocol); +begin + fConnection.Session.LockProtocol := Value; +end; + +function TDAEDBISAMConnection.GetLockRetryCount: Byte; +begin + result := fConnection.Session.LockRetryCount; +end; + +procedure TDAEDBISAMConnection.SetLockRetryCount(Value: Byte); +begin + fConnection.Session.LockRetryCount := Value; +end; + +function TDAEDBISAMConnection.GetLockWaitTime: Word; +begin + result := fConnection.Session.LockWaitTime; +end; + +procedure TDAEDBISAMConnection.SetLockWaitTime(Value: Word); +begin + fConnection.Session.LockWaitTime := Value; +end; + +function TDAEDBISAMConnection.GetPrivateDir: string; +begin + result := fConnection.Session.PrivateDir; +end; + +procedure TDAEDBISAMConnection.SetPrivateDir(const Value: string); +begin + fConnection.Session.PrivateDir := Value; +end; + +function TDAEDBISAMConnection.GetRemotePort: Integer; +begin + result := fConnection.Session.RemotePort; +end; + +procedure TDAEDBISAMConnection.SetRemotePort(Value: Integer); +begin + fConnection.Session.RemotePort := Value; +end; + +function TDAEDBISAMConnection.GetRemoteService: string; +begin + result := fConnection.Session.RemoteService; +end; + +procedure TDAEDBISAMConnection.SetRemoteService(const Value: string); +begin + fConnection.Session.RemoteService := Value; +end; + +function TDAEDBISAMConnection.GetRemoteTrace: Boolean; +begin + result := fConnection.Session.RemoteTrace; +end; + +procedure TDAEDBISAMConnection.SetRemoteTrace(Value: Boolean); +begin + fConnection.Session.RemoteTrace := Value; +end; + +{$IFDEF DBISAM_V3} + +function TDAEDBISAMConnection.GetRemoteType: TRemoteType; +begin + result := fConnection.Session.RemoteType; +end; + +procedure TDAEDBISAMConnection.SetRemoteType(Value: TRemoteType); +begin + fConnection.Session.RemoteType := Value; +end; +{$ENDIF} + +{$IFDEF DBISAM_V4} + +function TDAEDBISAMConnection.GetRemoteCompression: Byte; +begin + result := fConnection.Session.RemoteCompression; +end; + +procedure TDAEDBISAMConnection.SetRemoteCompression(Value: Byte); +begin + fConnection.Session.RemoteCompression := Value; +end; + +function TDAEDBISAMConnection.GetRemoteEncryption: Boolean; +begin + result := fConnection.Session.RemoteEncryption; +end; + +procedure TDAEDBISAMConnection.SetRemoteEncryption(Value: Boolean); +begin + fConnection.Session.RemoteEncryption := Value; +end; + +function TDAEDBISAMConnection.GetRemoteEncryptionPassword: string; +begin + result := fConnection.Session.RemoteEncryptionPassword; +end; + +procedure TDAEDBISAMConnection.SetRemoteEncryptionPassword(const Value: string); +begin + fConnection.Session.RemoteEncryptionPassword := Value; +end; + +function TDAEDBISAMConnection.GetRemoteTimeout: Integer; +begin + result := fConnection.Session.RemoteTimeout; +end; + +procedure TDAEDBISAMConnection.SetRemoteTimeout(Value: Integer); +begin + fConnection.Session.RemoteTimeout := Value; +end; +{$ENDIF} + +procedure TDAEDBISAMConnection.AddPassword( const aPassword: string); +begin + fConnection.Session.AddPassword(aPassword); +end; + +procedure TDAEDBISAMConnection.RemovePassword( const aPassword: string); +begin + fConnection.Session.RemovePassword(aPassword); +end; + +procedure TDAEDBISAMConnection.RemoveAllPasswords; +begin + fConnection.Session.RemoveAllPasswords; +end; + +function TDAEDBISAMConnection.DoGetLastAutoInc( + const GeneratorName: string): integer; +var + lQuery: IDADataset; +begin + Result:= inherited DoGetLastAutoInc(GeneratorName); + if GeneratorName <> '' then begin + lQuery:=GetDatasetClass.Create(Self); + try + lQuery.SQL := 'SELECT LASTAUTOINC('''+GeneratorName+''') from '+QuoteIdentifierIfNeeded(GeneratorName); + lQuery.Open; + Result := lQuery.Fields[0].AsInteger; + finally + lQuery:=nil; + end; + end; +end; + +{$IFDEF DELPHI10UP} +{$WARN SYMBOL_DEPRECATED OFF} +{$ENDIF DELPHI10UP} +procedure TDAEDBISAMConnection.DoGetTableFields(const aTableName: string; + out Fields: TDAFieldCollection); +var + i: integer; + pos1: integer; + fld: TDAField; + {$IFDEF DBISAM_V4} + lofld:TDBISAMFieldDef; + {$ELSE} + lofld:TFieldDef; + {$ENDIF} + s: string; + ltable: TDBISAMTable; +begin + Fields:=TDAFieldCollection.Create(nil); + ltable:=TDBISAMTable.Create(nil); + try + ltable.DatabaseName := fConnection.Database.DatabaseName; + ltable.SessionName := fConnection.Session.SessionName; + ltable.TableName := aTableName; + ltable.FieldDefs.Update; + for i:=0 to ltable.FieldDefs.Count-1 do begin + lofld:=ltable.FieldDefs[i]; + fld:= Fields.Add; + fld.Name:= lofld.Name; + fld.DataType:= VCLTypeToDAType(lofld.DataType); + fld.Size:= lofld.Size; + fld.Required:= lofld.Required; + {$IFDEF DBISAM_V4} + fld.DefaultValue:=lofld.DefaultValue; + fld.Description:=lofld.Description; + {$ENDIF DBISAM_V4} + fld.ReadOnly:= DB.faReadonly in lofld.Attributes; + if fld.DataType = datAutoInc then fld.GeneratorName:= aTableName; + if fld.DataType = datDecimal then begin + case lofld.DataType of + ftBCD: begin + fld.DecimalPrecision:=20; + fld.DecimalScale:=lofld.Size; + end; + end; + end; + end; + + //pk + ltable.IndexDefs.Update; + For i:=0 to ltable.IndexDefs.Count - 1 do + if ixPrimary in ltable.IndexDefs[i].Options then begin + Pos1 := 1; + s:=ltable.IndexDefs[i].Fields; + while Pos1 <= Length(s) do begin + fld := Fields.FindField(ExtractFieldName(s, Pos1)); + if fld <> nil then fld.InPrimaryKey:=True; + end; + end; + + finally + ltable.free; + end; +end; +{$IFDEF DELPHI10UP} +{$WARN SYMBOL_DEPRECATED ON} +{$ENDIF DELPHI10UP} + +function TDAEDBISAMConnection.IdentifierNeedsQuoting( + const iIdentifier: string): boolean; +begin + Result := inherited IdentifierNeedsQuoting(iIdentifier) or TestIdentifier(iIdentifier,dbisam_reservedwords); +end; + +{ TDAEDBISAMDriver } + +procedure TDAEDBISAMDriver.GetAuxParams(const AuxDriver: string; out List: IROStrings); +begin + inherited; + + List.Add('ForceBufferFlush=False,True'); + List.Add('KeepConnections=False,True'); + List.Add('LockProtocol=lpOptimistic,lpPessimistic'); + List.Add('LockRetryCount='); + List.Add('LockWaitTime='); + List.Add('PrivateDir='); + List.Add('RemotePort='); + List.Add('RemoteService='); + List.Add('RemoteTrace=False,True'); + List.Add('TablePassword='); + {$IFDEF DBISAM_V3} + List.Add('RemoteType=rtLAN,rtInternet'); + {$ENDIF} + {$IFDEF DBISAM_V4} + List.Add('RemoteCompression='); + List.Add('RemoteEncryption=False,True'); + List.Add('RemoteEncryptionPassword='); + List.Add('RemoteTimeout='); + {$ENDIF} + + List.Sorted := True; +end; + +function TDAEDBISAMDriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + result := [doServerName, doDatabaseName, doLogin, doCustom]; +end; + +function TDAEDBISAMDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEDBISAMConnection +end; + +function TDAEDBISAMDriver.GetDefaultConnectionType( + const AuxDriver: string): string; +begin + Result:=DBISAM_DriverType; +end; + +function TDAEDBISAMDriver.GetDescription: string; +begin + {$IFDEF DBISAM_V3} + result := 'DBISAM3 Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; + {$ENDIF} + {$IFDEF DBISAM_V4} + result := 'DBISAM4 Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; + {$ENDIF} +end; + +function TDAEDBISAMDriver.GetDriverID: string; +begin + {$IFDEF DBISAM_V3} + result := 'DBISAM3'; + {$ENDIF} + {$IFDEF DBISAM_V4} + result := 'DBISAM4'; + {$ENDIF} +end; + +{ TDAEDBISAMQuery } + +function TDAEDBISAMQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TDBISAMQuery.Create(nil); + + with TDBISAMQuery(result) do begin + DatabaseName := TDAEDBISAMConnection(aConnection).fConnection.Database.DatabaseName; + SessionName := TDAEDBISAMConnection(aConnection).fConnection.Session.SessionName; + ReadOnly := True; + RequestLive := True; + end; +end; + +function TDAEDBISAMQuery.DoExecute: integer; +begin + with TDBISAMQuery(Dataset) do begin + ExecSQL; + result := RowsAffected; + end; +end; + +function TDAEDBISAMQuery.DoGetSQL: string; +begin + result := TDBISAMQuery(Dataset).SQL.Text +end; + +procedure TDAEDBISAMQuery.DoPrepare(Value: Boolean); +begin + TDBISAMQuery(Dataset).Prepared := Value; +end; + +procedure TDAEDBISAMQuery.SetParamValues(AParams: TDAParamCollection); +var + i: integer; + par: uDAInterfaces.TDAParam; + {$IFDEF DBISAM_V4} + outpar: TDBISAMParam; + {$ELSE} + outpar: TParam; + {$ENDIF} + ft: TFieldType; + lParIsEmpty: Boolean; +begin + for i := 0 to (AParams.Count - 1) do begin + par := AParams[i]; + outpar := TDBISAMQuery(Dataset).Params.ParamByName(par.Name); + + ft := DATypeToVCLType(par.DataType); + {$IFNDEF DBISAM_V4} + case par.ParamType of + daptInput: outpar.ParamType := ptInput; + daptOutput: outpar.ParamType := ptOutput; + daptInputOutput: outpar.ParamType := ptInputOutput; + daptResult: outpar.ParamType := ptResult; + end; + {$ENDIF DBISAM_V3} + lParIsEmpty := VarIsEmpty(par.Value) or VarIsNull(par.Value); + + if par.DataType = datBlob then begin + outpar.DataType := ftBlob; + if not (par.ParamType in [daptOutput, daptResult]) then begin + if lParIsEmpty then + outpar.Value := Null + else + outpar.Value := VariantBinaryToString(par.Value); + end; + end + else begin + if (outpar.DataType <> ft) and (ft <> ftUnknown) then outpar.DataType := ft; + if not (par.ParamType in [daptOutput, daptResult]) then outpar.Value := par.Value; + end; + + if lParIsEmpty and (par.DataType <> datUnknown) then begin + if (outpar.DataType <> ft) and (ft <> ftUnknown) then outpar.DataType := ft; + end; + end; +end; + +procedure TDAEDBISAMQuery.GetParamValues(AParams: TDAParamCollection); +var + i: integer; + par: uDAInterfaces.TDAParam; +begin + for i := 0 to (AParams.Count - 1) do begin + par := AParams[i]; + if Par.ParamType in [daptOutput, daptInputOutput, daptResult] then + Par.Value := TDBISAMQuery(Dataset).Params.ParamByName(par.Name).Value; + end; +end; + +procedure TDAEDBISAMQuery.DoSetSQL(const Value: string); +begin + TDBISAMQuery(Dataset).SQL.Text := Value; +end; + +{$IFDEF DBISAM_V4} +procedure TDAEDBISAMQuery.RefreshParams; +var + i: Integer; + par: TDAParam; + outpar: TDBISAMParam; + ds: TDBISAMQuery; +begin + inherited; + ds := TDBISAMQuery(Dataset); + if not Assigned(ds.Params) then + Exit; + for i := 0 to ds.Params.Count -1 do begin + outpar := ds.Params[i]; + + par := self.ParamByName(outpar.Name); + + if outpar.DataType <> ftUnknown then begin + par.DataType := VCLTypeToDAType(outpar.DataType); + end; + end; +end; +{$ENDIF} + +exports GetDriverObject name func_GetDriverObject; + +procedure TDAEDBISAMQuery.ClearParams; +begin + inherited; + TDBISAMQuery(Dataset).Params.Clear; +end; + +procedure dbisam_InitializeReservedWords; +begin + SetLength(dbisam_reservedwords, 220); + // sorted with TStringList.Sort (bds2007) + dbisam_reservedwords[0] := 'ABS'; + dbisam_reservedwords[1] := 'ACOS'; + dbisam_reservedwords[2] := 'ADD'; + dbisam_reservedwords[3] := 'ALL'; + dbisam_reservedwords[4] := 'ALLTRIM'; + dbisam_reservedwords[5] := 'ALTER'; + dbisam_reservedwords[6] := 'AND'; + dbisam_reservedwords[7] := 'AS'; + dbisam_reservedwords[8] := 'ASC'; + dbisam_reservedwords[9] := 'ASCENDING'; + dbisam_reservedwords[10] := 'ASIN'; + dbisam_reservedwords[11] := 'AT'; + dbisam_reservedwords[12] := 'ATAN'; + dbisam_reservedwords[13] := 'ATAN2'; + dbisam_reservedwords[14] := 'AUTOINC'; + dbisam_reservedwords[15] := 'AVG'; + dbisam_reservedwords[16] := 'BETWEEN'; + dbisam_reservedwords[17] := 'BINARY'; + dbisam_reservedwords[18] := 'BIT'; + dbisam_reservedwords[19] := 'BLOB'; + dbisam_reservedwords[20] := 'BLOCK'; + dbisam_reservedwords[21] := 'BOOL'; + dbisam_reservedwords[22] := 'BOOLEAN'; + dbisam_reservedwords[23] := 'BOTH'; + dbisam_reservedwords[24] := 'BY'; + dbisam_reservedwords[25] := 'BYTES'; + dbisam_reservedwords[26] := 'CAST'; + dbisam_reservedwords[27] := 'CEIL'; + dbisam_reservedwords[28] := 'CEILING'; + dbisam_reservedwords[29] := 'CHAR'; + dbisam_reservedwords[30] := 'CHARACTER'; + dbisam_reservedwords[31] := 'CHARCASE'; + dbisam_reservedwords[32] := 'CHARS'; + dbisam_reservedwords[33] := 'COALESCE'; + dbisam_reservedwords[34] := 'COLUMN'; + dbisam_reservedwords[35] := 'COLUMNS'; + dbisam_reservedwords[36] := 'COMMIT'; + dbisam_reservedwords[37] := 'COMPRESS'; + dbisam_reservedwords[38] := 'CONCAT'; + dbisam_reservedwords[39] := 'CONSTRAINT'; + dbisam_reservedwords[40] := 'COS'; + dbisam_reservedwords[41] := 'COT'; + dbisam_reservedwords[42] := 'COUNT'; + dbisam_reservedwords[43] := 'CREATE'; + dbisam_reservedwords[44] := 'CURRENT_DATE'; + dbisam_reservedwords[45] := 'CURRENT_GUID'; + dbisam_reservedwords[46] := 'CURRENT_TIME'; + dbisam_reservedwords[47] := 'CURRENT_TIMESTAMP'; + dbisam_reservedwords[48] := 'DAY'; + dbisam_reservedwords[49] := 'DAYOFWEEK'; + dbisam_reservedwords[50] := 'DAYOFYEAR'; + dbisam_reservedwords[51] := 'DAYSFROMMSECS'; + dbisam_reservedwords[52] := 'DECIMAL'; + dbisam_reservedwords[53] := 'DEFAULT'; + dbisam_reservedwords[54] := 'DEGREES'; + dbisam_reservedwords[55] := 'DELETE'; + dbisam_reservedwords[56] := 'DELIMITER'; + dbisam_reservedwords[57] := 'DESC'; + dbisam_reservedwords[58] := 'DESCENDING'; + dbisam_reservedwords[59] := 'DESCRIPTION'; + dbisam_reservedwords[60] := 'DISTINCT'; + dbisam_reservedwords[61] := 'DROP'; + dbisam_reservedwords[62] := 'DUPBYTE'; + dbisam_reservedwords[63] := 'ELSE'; + dbisam_reservedwords[64] := 'EMPTY'; + dbisam_reservedwords[65] := 'ENCRYPTED'; + dbisam_reservedwords[66] := 'ESCAPE'; + dbisam_reservedwords[67] := 'EXCEPT'; + dbisam_reservedwords[68] := 'EXISTS'; + dbisam_reservedwords[69] := 'EXP'; + dbisam_reservedwords[70] := 'EXPORT'; + dbisam_reservedwords[71] := 'EXTRACT'; + dbisam_reservedwords[72] := 'FALSE'; + dbisam_reservedwords[73] := 'FLOAT'; + dbisam_reservedwords[74] := 'FLOOR'; + dbisam_reservedwords[75] := 'FLUSH'; + dbisam_reservedwords[76] := 'FOR'; + dbisam_reservedwords[77] := 'FORCEINDEXREBUILD'; + dbisam_reservedwords[78] := 'FROM'; + dbisam_reservedwords[79] := 'FULL'; + dbisam_reservedwords[80] := 'GRAPHIC'; + dbisam_reservedwords[81] := 'GROUP'; + dbisam_reservedwords[82] := 'GUID'; + dbisam_reservedwords[83] := 'HAVING'; + dbisam_reservedwords[84] := 'HEADERS'; + dbisam_reservedwords[85] := 'HOUR'; + dbisam_reservedwords[86] := 'HOURSFROMMSECS'; + dbisam_reservedwords[87] := 'IDENT_CURRENT'; + dbisam_reservedwords[88] := 'IDENTITY'; + dbisam_reservedwords[89] := 'IF'; + dbisam_reservedwords[90] := 'IFNULL'; + dbisam_reservedwords[91] := 'IMPORT'; + dbisam_reservedwords[92] := 'IN'; + dbisam_reservedwords[93] := 'INCLUDE'; + dbisam_reservedwords[94] := 'INDEX'; + dbisam_reservedwords[95] := 'INNER'; + dbisam_reservedwords[96] := 'INSERT'; + dbisam_reservedwords[97] := 'INT'; + dbisam_reservedwords[98] := 'INTEGER'; + dbisam_reservedwords[99] := 'INTERSECT'; + dbisam_reservedwords[100] := 'INTERVAL'; + dbisam_reservedwords[101] := 'INTO'; + dbisam_reservedwords[102] := 'IS'; + dbisam_reservedwords[103] := 'JOIN'; + dbisam_reservedwords[104] := 'KEY'; + dbisam_reservedwords[105] := 'LARGEINT'; + dbisam_reservedwords[106] := 'LAST'; + dbisam_reservedwords[107] := 'LASTAUTOINC'; + dbisam_reservedwords[108] := 'LCASE'; + dbisam_reservedwords[109] := 'LEADING'; + dbisam_reservedwords[110] := 'LEFT'; + dbisam_reservedwords[111] := 'LENGTH'; + dbisam_reservedwords[112] := 'LIKE'; + dbisam_reservedwords[113] := 'LOCALE'; + dbisam_reservedwords[114] := 'LOG'; + dbisam_reservedwords[115] := 'LOG10'; + dbisam_reservedwords[116] := 'LONGVARBINARY'; + dbisam_reservedwords[117] := 'LONGVARCHAR'; + dbisam_reservedwords[118] := 'LOWER'; + dbisam_reservedwords[119] := 'LTRIM'; + dbisam_reservedwords[120] := 'MAJOR'; + dbisam_reservedwords[121] := 'MAX'; + dbisam_reservedwords[122] := 'MAXIMUM'; + dbisam_reservedwords[123] := 'MEMO'; + dbisam_reservedwords[124] := 'MIN'; + dbisam_reservedwords[125] := 'MINIMUM'; + dbisam_reservedwords[126] := 'MINOR'; + dbisam_reservedwords[127] := 'MINSFROMMSECS'; + dbisam_reservedwords[128] := 'MINUTE'; + dbisam_reservedwords[129] := 'MOD'; + dbisam_reservedwords[130] := 'MONEY'; + dbisam_reservedwords[131] := 'MONTH'; + dbisam_reservedwords[132] := 'MSECOND'; + dbisam_reservedwords[133] := 'MSECSFROMMSECS'; + dbisam_reservedwords[134] := 'NOBACKUP'; + dbisam_reservedwords[135] := 'NOCASE'; + dbisam_reservedwords[136] := 'NOCHANGE'; + dbisam_reservedwords[137] := 'NOJOINOPTIMIZE'; + dbisam_reservedwords[138] := 'NONE'; + dbisam_reservedwords[139] := 'NOT'; + dbisam_reservedwords[140] := 'NULL'; + dbisam_reservedwords[141] := 'NUMERIC'; + dbisam_reservedwords[142] := 'OCCURS'; + dbisam_reservedwords[143] := 'ON'; + dbisam_reservedwords[144] := 'OPTIMIZE'; + dbisam_reservedwords[145] := 'OR'; + dbisam_reservedwords[146] := 'ORDER'; + dbisam_reservedwords[147] := 'OUTER'; + dbisam_reservedwords[148] := 'PAGE'; + dbisam_reservedwords[149] := 'PI'; + dbisam_reservedwords[150] := 'POS'; + dbisam_reservedwords[151] := 'POSITION'; + dbisam_reservedwords[152] := 'POWER'; + dbisam_reservedwords[153] := 'PRIMARY'; + dbisam_reservedwords[154] := 'RADIANS'; + dbisam_reservedwords[155] := 'RAND'; + dbisam_reservedwords[156] := 'RANGE'; + dbisam_reservedwords[157] := 'REDEFINE'; + dbisam_reservedwords[158] := 'RENAME'; + dbisam_reservedwords[159] := 'REPAIR'; + dbisam_reservedwords[160] := 'REPEAT'; + dbisam_reservedwords[161] := 'REPLACE'; + dbisam_reservedwords[162] := 'RIGHT'; + dbisam_reservedwords[163] := 'ROLLBACK'; + dbisam_reservedwords[164] := 'ROUND'; + dbisam_reservedwords[165] := 'RTRIM'; + dbisam_reservedwords[166] := 'RUNSUM'; + dbisam_reservedwords[167] := 'SECOND'; + dbisam_reservedwords[168] := 'SECSFROMMSECS'; + dbisam_reservedwords[169] := 'SELECT'; + dbisam_reservedwords[170] := 'SET'; + dbisam_reservedwords[171] := 'SIGN'; + dbisam_reservedwords[172] := 'SIN'; + dbisam_reservedwords[173] := 'SIZE'; + dbisam_reservedwords[174] := 'SMALLINT'; + dbisam_reservedwords[175] := 'SPACE'; + dbisam_reservedwords[176] := 'SQRT'; + dbisam_reservedwords[177] := 'START'; + dbisam_reservedwords[178] := 'STDDEV'; + dbisam_reservedwords[179] := 'STOP'; + dbisam_reservedwords[180] := 'SUBSTRING'; + dbisam_reservedwords[181] := 'SUM'; + dbisam_reservedwords[182] := 'TABLE'; + dbisam_reservedwords[183] := 'TAN'; + dbisam_reservedwords[184] := 'TEXT'; + dbisam_reservedwords[185] := 'TEXTOCCURS'; + dbisam_reservedwords[186] := 'TEXTSEARCH'; + dbisam_reservedwords[187] := 'THEN'; + dbisam_reservedwords[188] := 'TIME'; + dbisam_reservedwords[189] := 'TIMESTAMP'; + dbisam_reservedwords[190] := 'TO'; + dbisam_reservedwords[191] := 'TOP'; + dbisam_reservedwords[192] := 'TRAILBYTE'; + dbisam_reservedwords[193] := 'TRAILING'; + dbisam_reservedwords[194] := 'TRANSACTION'; + dbisam_reservedwords[195] := 'TRIM'; + dbisam_reservedwords[196] := 'TRUE'; + dbisam_reservedwords[197] := 'TRUNC'; + dbisam_reservedwords[198] := 'TRUNCATE'; + dbisam_reservedwords[199] := 'UCASE'; + dbisam_reservedwords[200] := 'UNION'; + dbisam_reservedwords[201] := 'UNIQUE'; + dbisam_reservedwords[202] := 'UPDATE'; + dbisam_reservedwords[203] := 'UPGRADE'; + dbisam_reservedwords[204] := 'UPPER'; + dbisam_reservedwords[205] := 'USER'; + dbisam_reservedwords[206] := 'VALUES'; + dbisam_reservedwords[207] := 'VARBINARY'; + dbisam_reservedwords[208] := 'VARBYTES'; + dbisam_reservedwords[209] := 'VARCHAR'; + dbisam_reservedwords[210] := 'VERIFY'; + dbisam_reservedwords[211] := 'VERSION'; + dbisam_reservedwords[212] := 'WEEK'; + dbisam_reservedwords[213] := 'WHERE'; + dbisam_reservedwords[214] := 'WITH'; + dbisam_reservedwords[215] := 'WORD'; + dbisam_reservedwords[216] := 'WORDS'; + dbisam_reservedwords[217] := 'WORK'; + dbisam_reservedwords[218] := 'YEAR'; + dbisam_reservedwords[219] := 'YEARSFROMMSECS'; +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + dbisam_InitializeReservedWords; +finalization + dbisam_reservedwords := nil; + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDADBXDriver.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDADBXDriver.pas new file mode 100644 index 0000000..e2f03a0 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDADBXDriver.pas @@ -0,0 +1,951 @@ +unit uDADBXDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up, Kylix 3 and up +{ platform: Win32, Linux +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ENDIF MSWINDOWS} +{$IFDEF LINUX} +{$I ../DataAbstract.inc} +{$ENDIF LINUX} + +{$R DataAbstract_DBXDriver_Glyphs.res} + +interface + +uses Windows,Classes, DB, uDAEngine, uDAInterfaces, uROClasses, SqlExpr,{$IFNDEF DELPHI11UP}DBXpress,{$ENDIF} + SqlConst, uDAUtils, uDAIBInterfaces, uDAAdoInterfaces,uDAMySQLInterfaces, {$IFDEF DELPHI9UP}uDASybaseInterfaces,{$ENDIF} + uDADB2Interfaces, uDAOracleInterfaces; + +const + // Standard dbExpress driver identifiers + dbx_UnknownId = '???'; + dbx_MSSQLId = 'MSSQL'; + dbx_InterbaseId = 'Interbase'; + dbx_OracleId = 'Oracle'; + dbx_DB2Id = 'DB2'; + dbx_MySQLId = 'MYSQL'; + dbx_InformixId = 'Informix'; + {$IFDEF DELPHI9UP} + dbx_ASAid = 'ASA'; + dbx_ASEid = 'ASE'; + {$ENDIF} + +type + // Standard dbExpress driver enumerated + TDADBXDriverType = (dbx_Unknown, + dbx_MSSQL, + dbx_Interbase, + dbx_Oracle, + dbx_DB2, + dbx_MySQL, + dbx_Informix + {$IFDEF DELPHI9UP} + , dbx_ASA, dbx_ASE + {$ENDIF DELPHI9UP} + ); + +const + // Standard dbExpress driver identifier array (useful for lookups) + DBXDrivers: array[TDADBXDriverType] of string = ( + dbx_UnknownId, + dbx_MSSQLId, + dbx_InterbaseId, + dbx_OracleId, + dbx_DB2Id, + dbx_MySQLId, + dbx_InformixId + {$IFDEF DELPHI9UP} + ,dbx_ASAid, dbx_ASEid + {$ENDIF DELPHI9UP} + ); + +type + { TDADBXDriver } + TDADBXDriver = class(TDADriverReference) + end; + + { TDAEDBXDriver } + TDAEDBXDriver = class(TDAEDriver, IDADriver40) + protected + function GetConnectionClass: TDAEConnectionClass; override; + + // IDADriver + function GetDriverID: string; override; + function GetDescription: string; override; + + procedure GetAuxDrivers(out List: IROStrings); override; + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; + // IDADriver40 + function GetProviderDefaultCustomParameters(Provider: string): string; safecall; + function GetDefaultConnectionType(const AuxDriver: string): string; override; safecall; + public + end; + + { IDBXConnection + For identification purposes. } + IDBXConnection = interface + ['{D4E8FE6C-76B5-46FA-A850-2FD626960775}'] + function GetDriverName: string; + function GetDriverType: TDADBXDriverType; + + property DriverName: string read GetDriverName; + property DriverType: TDADBXDriverType read GetDriverType; + end; + + { TDBXConnection } + TDBXConnection = class(TDAConnectionWrapper) + private + fSQLConnection: TSQLConnection; + fTransDesc: TTransactionDesc; + + protected + function GetConnected: Boolean; override; + procedure SetConnected(Value: Boolean); override; + + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + + property SQLConnection: TSQLConnection read fSQLConnection; + property TransDesc: TTransactionDesc read fTransDesc; + end; + + + { TDAEDBXConnection } + TDAEDBXConnection = class(TDAEConnection, IDAFileBasedDatabase, + IDACanQueryDatabaseNames, IDAUseGenerators ,{IDAADOConnection,} + IDAInterbaseConnection, IDACanQueryGeneratorsNames, + {$IFDEF DELPHI9UP}IDASybaseConnection,{$ENDIF} + IDADB2Connection, IDAMySQLConnection,IDAOracleConnection) + private + fConnection: TDBXConnection; + fDriverName: string; + fDriverType: TDADBXDriverType; + fMSSQLSchemaEnabled: Boolean; + fSqlDialect: Integer; + protected + function QueryInterface(const IID: TGUID; out Obj): HResult; override; stdcall; + // TDAEConnection + function CreateCustomConnection: TCustomConnection; override; + function CreateMacroProcessor: TDASQLMacroProcessor; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + + function GetUserID: string; override; safecall; + procedure SetUserID(const Value: string); override; safecall; + function GetPassword: string; override; safecall; + procedure SetPassword(const Value: string); override; safecall; + + procedure DoGetTableNames(out List: IROStrings); override; + procedure DoGetStoredProcedureNames(out List: IROStrings); override; + procedure DoGetViewNames(out List: IROStrings); override; + procedure DoGetForeignKeys(out ForeignKeys: TDADriverForeignKeyCollection); override; + procedure DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection); override; + procedure DoGetStoredProcedureParams(const aStoredProcedureName: string; out Params: TDAParamCollection); override; + function DoGetLastAutoInc(const GeneratorName: string): integer; override; + function IdentifierNeedsQuoting(const iIdentifier: string): boolean; override; safecall; + function GetQuoteChars: TDAQuoteCharArray; override; + // IDBXConnection + function GetDriverName: string; + function GetDriverType: TDADBXDriverType; + function GetSPSelectSyntax(HasArguments: Boolean): string; override; + safecall; + //IDAFileBasedDatabase + function GetFileExtensions: IROStrings; + //IDACanQueryDatabaseNames + function GetDatabaseNames: IROStrings; + //IDAUseGenerators + function GetNextAutoinc(const GeneratorName: string): integer; safecall; + // IDACanQueryGeneratorsNames + function GetGeneratorNames: IROStrings; + public + property MSSQLSchemaEnabled: Boolean read fMSSQLSchemaEnabled write fMSSQLSchemaEnabled; + end; + + { TDAEDBXQuery } + TDAEDBXQuery = class(TDAEDataset,IDAMustSetParams) + private + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + function IsNeedToFixFMTBCDIssue: Boolean; override; + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: boolean); override; + procedure ClearParams; override; + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + { TDAEDBXStoredProcedure } + TDAEDBXStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function Execute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function DBXDriverIdToDBXDriverType(const anID: string): TDADBXDriverType; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses SysUtils, INIFiles, uDADriverManager, uDARes, uDAMacroProcessors, Variants, SqlTimSt, + uROBinaryHelpers,uDASQL92Interfaces; + +// TODO: Add support for IADOConnection and IInterbaseConnection, etc by redefining QueryInterface in TDAEDBXConnection + + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDADBXDriver]); +end; + +function GetDriverObject: IDADriver; +begin + if (_driver = nil) then _driver := TDAEDBXDriver.Create(nil); + result := _driver; +end; + +function DBXDriverIdToDBXDriverType(const anID: string): TDADBXDriverType; +var + x: TDADBXDriverType; +begin + result := dbx_Unknown; + + for x := Low(TDADBXDriverType) to High(TDADBXDriverType) do + if AnsiSameText(DBXDrivers[x], anID) then begin + result := x; + Exit; + end; + + //RaiseError('Unknown dbExpress driver %s', [anID]); +end; + +{ TDBXConnection } + +constructor TDBXConnection.Create(AOwner: TComponent); +begin + inherited; + fSQLConnection := TSQLConnection.Create(nil); +end; + +destructor TDBXConnection.Destroy; +begin + inherited; + fSQLConnection.Free; +end; + +function TDBXConnection.GetConnected: Boolean; +begin + result := fSQLConnection.Connected +end; + +procedure TDBXConnection.SetConnected(Value: Boolean); +begin + fSQLConnection.Connected := Value; +end; + +{ TDAEDBXConnection } + +procedure TDAEDBXConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); + + function GetProfileString(Section, Setting, IniFileName: string): string; + var + IniFile: TMemIniFile; + List: TStrings; + begin + List := TStringList.Create; + try + IniFile := TMemIniFile.Create(IniFileName); + IniFile.ReadSectionValues(Section, List); + try + Result := List.Values[Setting]; + finally + IniFile.Free; + end; + finally + List.Free; + end; + end; + +var + i: integer; + drvregfile: string; +begin + inherited; + + with aConnStrParser do begin + + with TDBXConnection(aConnectionObject).SQLConnection do begin + DriverName := AuxDriver; + + fDriverType := DBXDriverIdToDBXDriverType(AuxDriver); + + drvregfile := GetDriverRegistryFile(false); + + try + VendorLib := GetProfileString(DriverName, VENDORLIB_KEY, drvregfile); + LibraryName := GetProfileString(DriverName, DLLLIB_KEY, drvregfile); + GetDriverFunc := GetProfileString(DriverName, GETDRIVERFUNC_KEY, drvregfile); + except + DatabaseErrorFmt(SDriverNotInConfigFile, [DriverName, drvregfile]); + end; + + Params.Clear; + Params.Values[szUSERNAME] := UserID; + Params.Values[szPASSWORD] := Password; + if fDriverType = dbx_Interbase then begin // Dbx requires a seperate host field for Interbase + Params.Values[DATABASENAME_KEY] := Server + ':' + Database; + if auxParams[SQLDIALECT_KEY] = '' then begin + AuxParams[SQLDIALECT_KEY] := '3'; // default to 3 + end; + end else begin + Params.Values[HOSTNAME_KEY] := Server; + Params.Values[DATABASENAME_KEY] := Database; + end; + fMSSQLSchemaEnabled := false; + for i := 0 to (AuxParamsCount - 1) do begin + if AnsiSameText(AuxParamNames[i], 'DriverName') then + fConnection.fSQLConnection.DriverName:=AuxParams[AuxParamNames[i]] + else if AnsiSameText(AuxParamNames[i], 'GetDriverFunc') then + fConnection.fSQLConnection.GetDriverFunc:=AuxParams[AuxParamNames[i]] + else if AnsiSameText(AuxParamNames[i], 'LibraryName') then + fConnection.fSQLConnection.LibraryName:=AuxParams[AuxParamNames[i]] + else if AnsiSameText(AuxParamNames[i], 'TableScope') then begin + if AnsiSameText(AuxParams[AuxParamNames[i]], 'Synonyms') then + TableScope := [tsTable, tsView, tsSynonym] + else + TableScope := [tsTable, tsView] + end + else if AnsiSameText(AuxParamNames[i], 'Schemas') then + fMSSQLSchemaEnabled := AuxParams['Schemas'] = '1' + else begin + Params.Add(AuxParamNames[i] + '=' + AuxParams[AuxParamNames[i]]); + end; + end; + LoginPrompt := FALSE; + if fDriverType = dbx_Interbase then fSqlDialect := StrToIntDef(AuxParams[SQLDIALECT_KEY],3); + end; + end; +end; + +function TDAEDBXConnection.DoBeginTransaction: integer; +begin + result := -1; + + // TODO: allow more flexibility here... + fConnection.fTransDesc.TransactionID := 1; + fConnection.fTransDesc.IsolationLevel := xilREADCOMMITTED; +{$IFDEF DELPHI10UP}{$WARN SYMBOL_DEPRECATED OFF}{$ENDIF} + fConnection.fSQLConnection.StartTransaction(fConnection.fTransDesc); +{$IFDEF DELPHI10UP}{$WARN SYMBOL_DEPRECATED ON}{$ENDIF} +end; + +procedure TDAEDBXConnection.DoCommitTransaction; +begin +{$IFDEF DELPHI10UP}{$WARN SYMBOL_DEPRECATED OFF}{$ENDIF} + fConnection.fSQLConnection.Commit(fConnection.fTransDesc); +{$IFDEF DELPHI10UP}{$WARN SYMBOL_DEPRECATED ON}{$ENDIF} +end; + +function TDAEDBXConnection.CreateCustomConnection: TCustomConnection; +begin + fConnection := TDBXConnection.Create(nil); + fConnection.SQLConnection.LoginPrompt := FALSE; + result := fConnection; +end; + +function TDAEDBXConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEDBXQuery; +end; + +function TDAEDBXConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEDBXStoredProcedure; +end; + +procedure TDAEDBXConnection.DoGetStoredProcedureNames(out List: IROStrings); +begin + inherited DoGetStoredProcedureNames(List); + case fDriverType of + dbx_MSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure, MSSQLSchemaEnabled); + dbx_Interbase: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotProcedure); + dbx_MySQL: MYSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure,fConnection.SQLConnection.Params.Values[DATABASENAME_KEY]); + dbx_Oracle: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure); + else +{$IFDEF DELPHI10}{$WARN SYMBOL_DEPRECATED OFF}{$ENDIF} + fConnection.fSQLConnection.GetProcedureNames(List.Strings); +{$IFDEF DELPHI10}{$WARN SYMBOL_DEPRECATED ON}{$ENDIF} + end; +end; + +procedure TDAEDBXConnection.DoGetStoredProcedureParams( + const aStoredProcedureName: string; out Params: TDAParamCollection); +begin + case fDriverType of + dbx_MySQL: MYSQL_DoGetStoredProcedureParams(aStoredProcedureName,GetDatasetClass.Create(Self),Params,fConnection.SQLConnection.Params.Values[DATABASENAME_KEY]); + else + inherited; + end; +end; + +procedure TDAEDBXConnection.DoGetTableNames(out List: IROStrings); +begin + inherited DoGetTableNames(List); + case fDriverType of + dbx_MSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotTable, MSSQLSchemaEnabled); + dbx_Interbase: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotTable); + dbx_MySQL: MYSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotTable,fConnection.SQLConnection.Params.Values[DATABASENAME_KEY]); + dbx_Oracle: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotTable); + else + fConnection.fSQLConnection.GetTableNames(List.Strings); + end; +end; + +procedure TDAEDBXConnection.DoRollbackTransaction; +begin +{$WARNINGS OFF} + fConnection.fSQLConnection.Rollback(fConnection.fTransDesc); +{$WARNINGS ON} +end; + +function TDAEDBXConnection.DoGetInTransaction: boolean; +begin + result := fConnection.fSQLConnection.InTransaction +end; + +function TDAEDBXConnection.GetDriverName: string; +begin + result := fDriverName +end; + +function TDAEDBXConnection.GetDriverType: TDADBXDriverType; +begin + result := fDriverType +end; + +function TDAEDBXConnection.CreateMacroProcessor: TDASQLMacroProcessor; +begin + case fDriverType of + dbx_MSSQL: result := MSSQL_CreateMacroProcessor; + dbx_Interbase: result := IB_CreateMacroProcessor; + dbx_Oracle: result := Oracle_CreateMacroProcessor; + else + result := inherited CreateMacroProcessor; + end; +end; + +function TDAEDBXConnection.GetPassword: string; +begin + Result := fConnection.SQLConnection.Params.Values[szPASSWORD]; +end; + +function TDAEDBXConnection.GetUserID: string; +begin + Result := fConnection.SQLConnection.Params.Values[szUSERNAME]; +end; + +procedure TDAEDBXConnection.SetPassword(const Value: string); +begin + fConnection.SQLConnection.Params.Values[szPASSWORD] := Value; +end; + +procedure TDAEDBXConnection.SetUserID(const Value: string); +begin + fConnection.SQLConnection.Params.Values[szUSERNAME] := Value; +end; + +function TDAEDBXConnection.GetSPSelectSyntax( + HasArguments: Boolean): string; +begin + case fDriverType of + dbx_MSSQL: Result := MSSQL_GetSPSelectSyntax(HasArguments); + dbx_Interbase: Result := IB_GetSPSelectSyntax(HasArguments); + dbx_Oracle: Result := Oracle_GetSPSelectSyntax(HasArguments); + else + Result := inherited GetSPSelectSyntax(HasArguments); + end; +end; + +function TDAEDBXConnection.GetFileExtensions: IROStrings; +begin + case fDriverType of + dbx_Interbase: result := IB_GetFileExtensions; + else + result := TROStrings.Create; + end; +end; + +function TDAEDBXConnection.GetGeneratorNames: IROStrings; +begin + case fDriverType of + dbx_Interbase: Result:= IB_GetGeneratorNames(GetDatasetClass.Create(Self)); + else + Result := NewROStrings; + end; +end; + +function TDAEDBXConnection.QueryInterface(const IID: TGUID; + out Obj): HResult; +begin + Result := E_NOINTERFACE; + + {$IFDEF DELPHI9UP} + if IsEqualGUID(IID, IDASybaseConnection) then begin + if not (fDriverType in [dbx_ASA, dbx_ASE]) then Exit; + end + else + {$ENDIF} + if IsEqualGUID(IID, IDADB2Connection) then begin + if not (fDriverType in [dbx_DB2]) then Exit; + end + else if IsEqualGUID(IID, IDAInterbaseConnection) then begin + if not (fDriverType in [dbx_Interbase]) then Exit; + end + else if IsEqualGUID(IID, IDAADOConnection) then begin + if not (fDriverType in [dbx_MSSQL]) then Exit; + end + else if IsEqualGUID(IID, IDAMySQLConnection) then begin + if not (fDriverType in [dbx_MySQL]) then Exit; + end + else if IsEqualGUID(IID, IDAOracleConnection) then begin + if not (fDriverType in [dbx_Oracle]) then Exit; + end + else if IsEqualGUID(IID, IDAUseGenerators) then begin + if not (fDriverType in [dbx_Interbase,dbx_Oracle]) then Exit; + end + else if IsEqualGUID(IID, IDACanQueryGeneratorsNames) then begin + if not (fDriverType in [dbx_Interbase]) then Exit; + end + else if IsEqualGUID(IID, IDAFileBasedDatabase) then begin + if not (fDriverType in [dbx_Interbase]) then Exit; + end + else if IsEqualGUID(IID, IDACanQueryDatabaseNames) then begin + if not (fDriverType in [dbx_MSSQL, dbx_Oracle, dbx_MySQL {$IFDEF DELPHI9UP}, dbx_ASA, dbx_ASE{$ENDIF DELPHI9UP}]) then Exit; + end; + + Result := inherited QueryInterface(IID, Obj); +end; + +function TDAEDBXConnection.GetDatabaseNames: IROStrings; +begin + case fDriverType of + dbx_MSSQL: Result:=MSSQL_GetDatabaseNames(Self); + dbx_MySQL: Result:=MYSQL_GetDatabaseNames(GetDatasetClass.Create(Self)); + else + Result := NewROStrings; + end; +end; + +procedure TDAEDBXConnection.DoGetViewNames(out List: IROStrings); +begin + inherited DoGetViewNames(List); + case fDriverType of + dbx_MSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotView, MSSQLSchemaEnabled); + dbx_Interbase: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotView); + dbx_MySQL: MYSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotView,fConnection.SQLConnection.Params.Values[DATABASENAME_KEY]); + dbx_Oracle: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotView); + else + // + end; +end; + +procedure TDAEDBXConnection.DoGetForeignKeys( + out ForeignKeys: TDADriverForeignKeyCollection); +begin + inherited DoGetForeignKeys(ForeignKeys); + case fDriverType of + dbx_MSSQL: MSSQL_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys, MSSQLSchemaEnabled); + dbx_Interbase: IB_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys); + dbx_MySQL: MYSQL_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys,fConnection.SQLConnection.Params.Values[DATABASENAME_KEY]); + dbx_ORACLE: Oracle_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys); + else + // + end; +end; + +procedure TDAEDBXConnection.DoGetTableFields(const aTableName: string; + out Fields: TDAFieldCollection); +begin + case fDriverType of + dbx_MSSQL: MSSQL_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + dbx_Interbase: IB_GetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + dbx_MySQL: MYSQL_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields,fConnection.SQLConnection.Params.Values[DATABASENAME_KEY]); + dbx_Oracle: Oracle_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + else + inherited DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), Fields); + end; +end; + +function TDAEDBXConnection.DoGetLastAutoInc( + const GeneratorName: string): integer; +begin + case fDriverType of + dbx_MSSQL: Result := MSSQL_DoGetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + dbx_Interbase: Result := IB_GetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + dbx_Oracle: Result := Oracle_DoGetLastAutoInc(GeneratorName,GetDatasetClass.Create(Self)); + dbx_MySQL: Result := MySQL_GetLastAutoInc(GeneratorName,GetDatasetClass.Create(Self)); + else + Result := inherited DoGetLastAutoInc(GeneratorName); + end; +end; + +function TDAEDBXConnection.GetNextAutoinc( + const GeneratorName: string): integer; +begin + case fDriverType of + dbx_Interbase: Result := IB_GetNextAutoinc(GeneratorName, GetDatasetClass.Create(Self)); + dbx_Oracle: Result := Oracle_GetNextAutoinc(GeneratorName, GetDatasetClass.Create(Self)); + else + result := -1; + end; +end; + +function TDAEDBXConnection.IdentifierNeedsQuoting( + const iIdentifier: string): boolean; +begin + Result := inherited IdentifierNeedsQuoting(iIdentifier); + if not Result then + case fDriverType of + dbx_MSSQL: Result := MSSQL_IdentifierNeedsQuoting(iIdentifier); + dbx_Interbase: Result := IB_IdentifierNeedsQuoting(iIdentifier, fSqlDialect); + dbx_MySQL: Result := MYSQL_IdentifierNeedsQuoting(iIdentifier); + dbx_ORACLE: Result := Oracle_IdentifierNeedsQuoting(iIdentifier); + dbx_DB2: Result := DB2_IdentifierNeedsQuoting(iIdentifier); + {$IFDEF DELPHI9UP} + dbx_ASA, dbx_ASE: Result := Sybase_IdentifierNeedsQuoting(iIdentifier); + {$ENDIF DELPHI9UP} + else + Result:= SQL92_IdentifierNeedsQuoting(iIdentifier); + end; +end; + +function TDAEDBXConnection.GetQuoteChars: TDAQuoteCharArray; +begin + case fDriverType of + dbx_Oracle: Result:=Oracle_GetQuoteChars; + else + Result:= inherited GetQuoteChars; + end; +end; + +{ TDAEDBXDriver } + +function TDAEDBXDriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + result := [doAuxDriver, doServerName, doDatabaseName, doLogin, doCustom]; +end; + +function TDAEDBXDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEDBXConnection; +end; + +function TDAEDBXDriver.GetDefaultConnectionType( + const AuxDriver: string): string; +begin + case DBXDriverIdToDBXDriverType(AuxDriver) of + dbx_MSSQL: Result:=MSSQL_DriverType; + dbx_Interbase: Result:=IB_DriverType; + dbx_Oracle: Result:=Oracle_DriverType; + dbx_DB2: Result:=DB2_DriverType; + dbx_MySQL: Result:=MySQL_DriverType; + dbx_Informix: Result:=Informix_DriverType; + {$IFDEF DELPHI9UP} + dbx_ASA,dbx_ASE : Result:=ASA_DriverType; + {$ENDIF DELPHI9UP} + else + Result := inherited GetDefaultConnectionType(AuxDriver); + end; +end; + +function TDAEDBXDriver.GetDescription: string; +begin + result := 'Borland DBXExpress Driver'; +end; + +function TDAEDBXDriver.GetDriverID: string; +begin + result := 'DBX'; +end; + +procedure TDAEDBXDriver.GetAuxDrivers(out List: IROStrings); +var + i: Integer; + lDriversIni: string; + x: TDADBXDriverType; +begin + List := NewROStrings; + + lDriversIni := GetDriverRegistryFile(false); + if FileExists(lDriversIni) then begin + with TMemIniFile.Create(lDriversIni) do try + ReadSections(List.Strings); + for i := List.Count - 1 downto 0 do begin + if not ValueExists(List[i], 'LibraryName') then List.Delete(i); + end; { for } + finally + Free(); + end; + end + else begin + for x := Low(TDADBXDriverType) to High(TDADBXDriverType) do + if (x <> dbx_Unknown) {// Redundant but safe if I change the enum later...} then + List.Add(DBXDrivers[x]) + end; + List.Sorted:=True; +end; + +procedure TDAEDBXDriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +begin + inherited; + List.Add('TableScope=Synonyms'); + List.Add('DriverName='); + List.Add('GetDriverFunc='); + List.Add('LibraryName='); + case DBXDriverIdToDBXDriverType(AuxDriver) of + dbx_MSSQL: List.Add('Schemas=(0,1)'); + dbx_Interbase: List.Add('Interbase TransIsolation=(ReadCommited,RepeatableRead)'); + end; +end; + +function TDAEDBXDriver.GetProviderDefaultCustomParameters( + Provider: string): string; +begin + Result := ''; + case DBXDriverIdToDBXDriverType(Provider) of + dbx_MSSQL: Result := 'Schemas=0;'; + dbx_Interbase: Result:='Interbase TransIsolation=ReadCommited;'; + end; +end; + +{ TDAEDBXQuery } + +procedure TDAEDBXQuery.ClearParams; +begin + inherited; + TSQLQuery(Dataset).Params.Clear; +end; + +function TDAEDBXQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TSQLQuery.Create(nil); + + //TSQLQuery(result).rea + //TSQLQuery(result).CursorLocation := clUseClient; + //TSQLQuery(result).CursorType := ctOpenForwardOnly; + TSQLQuery(result).SQLConnection := TDAEDBXConnection(aConnection).fConnection.fSQLConnection; +end; + +function GetBlobValue(const val: Variant): string; +var + lsize: integer; + p: Pointer; +begin + if VarType(val) = 8209 then + begin + lSize := VarArrayHighBound(val, 1) - VarArrayLowBound(val, 1) + 1; + p := VarArrayLock(val); + try + setlength(REsult, lSize); + move(p^, Result[1], lSize); + finally + VarArrayUnlock(val); + end; + end else if vartype(val) = varEmpty then + result := '' + else + result := val; +end; + +function TDAEDBXQuery.DoExecute: integer; +var + i: Integer; + refParams: TParams; + dapar: TDAParam; + lDriverName: string; +begin + if Assigned(DataSet) and Assigned(TSQLQuery(DataSet).SQLConnection) and + Assigned(TSQLQuery(DataSet).Params) then begin + lDriverName := TSQLQuery(DataSet).SQLConnection.DriverName; + refParams := TSQLQuery(DataSet).Params; + case DBXDriverIdToDBXDriverType(lDriverName) of + dbx_Oracle: begin + for i := 0 to refParams.Count - 1 do begin + case VarType(refParams[i].Value) of + varInteger, + varSmallInt, + varShortInt, + varWord, + varByte, + varLongWord: + refParams[i].AsString := VarToStr(refParams[i].Value); + varSingle, + varDouble, + varCurrency: + refParams[i].AsBCD := StrToCurr(VarToStr(refParams[i].Value)); + varDate: + refParams[i].AsSQLTimeStamp := DateTimeToSQLTimeStamp(VarToDateTime(refParams[i].Value)); + end; + end; + end; + dbx_Interbase: begin + for i := 0 to refParams.Count - 1 do begin + dapar := GetParams.FindParam(refParams[i].Name); + if (dapar <> nil) then begin + if dapar.DataType = datBlob then begin + refParams[i].AsBlob := GetBlobValue(dapar.AsVariant); + continue; + end; + if dapar.DataType = datMemo then begin + refParams[i].AsMemo := dapar.AsVariant; + continue; + end; + end; + case VarType(refParams[i].Value) of + varDate: + refParams[i].AsSQLTimeStamp := DateTimeToSQLTimeStamp(VarToDateTime(refParams[i].Value)); + end; + end; + end; + else ; + end; + end; + + Result := TSQLQuery(Dataset).ExecSQL; +end; + +function TDAEDBXQuery.DoGetSQL: string; +begin + result := TSQLQuery(Dataset).SQL.Text; +end; + +procedure TDAEDBXQuery.DoPrepare(Value: boolean); +begin + TSQLQuery(Dataset).Prepared := Value; +end; + +procedure TDAEDBXQuery.DoSetSQL(const Value: string); +begin + TSQLQuery(Dataset).SQL.Text := Value; +end; + +procedure TDAEDBXQuery.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TSQLQuery(Dataset).Params); +end; + +function TDAEDBXQuery.IsNeedToFixFMTBCDIssue: Boolean; +var + i: integer; +begin + Result:=False; + For i:=0 to TSQLQuery(Dataset).FieldCount-1 do begin + Result:= TSQLQuery(Dataset).Fields[i].DataType = ftFMTBcd; + if Result then Break; + end; +end; + +procedure TDAEDBXQuery.SetParamValues(AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams, TSQLQuery(Dataset).Params); +end; + +{ TDAEDBXStoredProcedure } + +function TDAEDBXStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + result := TSQLStoredProc.Create(nil); + TSQLStoredProc(result).SQLConnection := TDAEDBXConnection(aConnection).fConnection.fSQLConnection; +end; + +procedure TDAEDBXStoredProcedure.SetParamValues(AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams, TSQLStoredProc(Dataset).Params); +end; + +procedure TDAEDBXStoredProcedure.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TSQLStoredProc(Dataset).Params); +end; + +function TDAEDBXStoredProcedure.Execute: integer; +begin + SetParamValues(GetParams); + Result:= DoExecute; + GetParamValues(GetParams); +end; + +function TDAEDBXStoredProcedure.GetStoredProcedureName: string; +begin + result := TSQLStoredProc(Dataset).StoredProcName; +end; + +procedure TDAEDBXStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TSQLStoredProc(Dataset).StoredProcName := Name; +end; + +procedure TDAEDBXStoredProcedure.RefreshParams; +begin + TSQLStoredProc(Dataset).Prepared := True; + RefreshParamsStd(TSQLStoredProc(Dataset).Params) +end; + +exports + GetDriverObject name func_GetDriverObject; + +function TDAEDBXStoredProcedure.DoExecute: integer; +begin + Result := TSQLStoredProc(Dataset).ExecProc; +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAElevateDBDriver.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAElevateDBDriver.pas new file mode 100644 index 0000000..7f1e8d8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAElevateDBDriver.pas @@ -0,0 +1,1491 @@ +unit uDAElevateDBDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up +{ platform: Win32 +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$I ..\DataAbstract.inc} + +{$R DataAbstract_ElevateDBDriver_Glyphs.res} + +interface +uses Classes, DB, + uDAElevateDBInterfaces, edbType, edbcomps, + uROClasses, uDAEngine, uDAInterfaces, uDAInterfacesEx, uDAUtils; + +type { TDAElevateDBDriver } + TDAElevateDBDriver = class(TDADriverReference) + end; + + { TDAEElevateDBDriver } + TDAEElevateDBDriver = class(uDAElevateDBInterfaces.TDAElevateDBDriver ,IDADriver40) + protected + function GetConnectionClass: TDAEConnectionClass; override; + //procedure CustomizeConnectionObject(aConnection: TDAEConnection); override; + //procedure DoSetTraceOptions(TraceActive: boolean; TraceFlags: TDATraceOptions; Callback: TDALogTraceEvent); override; + + { IDADriver } + function GetDriverID: string; override; safecall; + function GetDescription: string; override; safecall; + // function GetMajVersion: byte; override; safecall; + // function GetMinVersion: byte; override; safecall; + procedure GetAuxDrivers(out List: IROStrings); override; safecall; + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; safecall; + // procedure Initialize; override; safecall; + // procedure Finalize; override; safecall; + // function GetDefaultCustomParameters: string; override; safecall; + + { IDADriver40 } + function GetProviderDefaultCustomParameters(Provider: string): string; safecall; + public + end; + + IElevateDBEngineProperties = interface + function GetBackupExtension: TEDBString; + function GetCatalogExtension: TEDBString; + function GetCatalogName: TEDBString; + function GetConfigExtension: TEDBString; + function GetConfigName: TEDBString; + function GetConfigPath: TEDBString; + function GetEncryptionPassword: TEDBString; + function GetEngineType: TEDBEngineType; + function GetLargeFileSupport: Boolean; + function GetLicensedSessions: Integer; + function GetLockExtension: TEDBString; + function GetLogCategories: TEDBLogCategories; + function GetLogExtension: TEDBString; + function GetMaxLogFileSize: Integer; + function GetServerAddress: TEDBString; + function GetServerAuthorizedAddresses: TEDBStrings; + function GetServerBlockedAddresses: TEDBStrings; + function GetServerDeadSessionExpiration: Integer; + function GetServerDeadSessionInterval: Integer; + function GetServerDescription: TEDBString; + function GetServerEncryptedOnly: Boolean; + function GetServerJobCategory: TEDBString; + function GetServerMaxDeadSessions: Integer; + function GetServerName: TEDBString; + function GetServerPort: Integer; + function GetServerRunJobs: Boolean; + function GetServerSessionTimeout: Integer; + function GetServerThreadCacheSize: Integer; + function GetSignature: TEDBString; + function GetTableBlobExtension: TEDBString; + function GetTableExtension: TEDBString; + function GetTableIndexExtension: TEDBString; + function GetTempTablesPathProperty: TEDBString; + procedure SetBackupExtension(const Value: TEDBString); + procedure SetCatalogExtension(const Value: TEDBString); + procedure SetCatalogName(const Value: TEDBString); + procedure SetConfigExtension(const Value: TEDBString); + procedure SetConfigName(const Value: TEDBString); + procedure SetConfigPath(const Value: TEDBString); + procedure SetEncryptionPassword(const Value: TEDBString); + procedure SetEngineType(const Value: TEDBEngineType); + procedure SetLargeFileSupport(const Value: Boolean); + procedure SetLicensedSessions(const Value: Integer); + procedure SetLockExtension(const Value: TEDBString); + procedure SetLogCategories(const Value: TEDBLogCategories); + procedure SetLogExtension(const Value: TEDBString); + procedure SetMaxLogFileSize(const Value: Integer); + procedure SetServerAddress(const Value: TEDBString); + procedure SetServerAuthorizedAddresses(const Value: TEDBStrings); + procedure SetServerBlockedAddresses(const Value: TEDBStrings); + procedure SetServerDeadSessionExpiration(const Value: Integer); + procedure SetServerDeadSessionInterval(const Value: Integer); + procedure SetServerDescription(const Value: TEDBString); + procedure SetServerEncryptedOnly(const Value: Boolean); + procedure SetServerJobCategory(const Value: TEDBString); + procedure SetServerMaxDeadSessions(const Value: Integer); + procedure SetServerName(const Value: TEDBString); + procedure SetServerPort(const Value: Integer); + procedure SetServerRunJobs(const Value: Boolean); + procedure SetServerSessionTimeout(const Value: Integer); + procedure SetServerThreadCacheSize(const Value: Integer); + procedure SetSignature(const Value: TEDBString); + procedure SetTableBlobExtension(const Value: TEDBString); + procedure SetTableExtension(const Value: TEDBString); + procedure SetTableIndexExtension(const Value: TEDBString); + procedure SetTempTablesPath(const Value: TEDBString); + property EngineType: TEDBEngineType read GetEngineType write SetEngineType; + property Signature: TEDBString read GetSignature write SetSignature; + property EncryptionPassword: TEDBString read GetEncryptionPassword write SetEncryptionPassword; + property LargeFileSupport: Boolean read GetLargeFileSupport write SetLargeFileSupport; + property LicensedSessions: Integer read GetLicensedSessions write SetLicensedSessions; + property ConfigPath: TEDBString read GetConfigPath write SetConfigPath; + property ConfigName: TEDBString read GetConfigName write SetConfigName; + property ConfigExtension: TEDBString read GetConfigExtension write SetConfigExtension; + property LockExtension: TEDBString read GetLockExtension write SetLockExtension; + property LogExtension: TEDBString read GetLogExtension write SetLogExtension; + property MaxLogFileSize: Integer read GetMaxLogFileSize write SetMaxLogFileSize; + property LogCategories: TEDBLogCategories read GetLogCategories write SetLogCategories; + property CatalogName: TEDBString read GetCatalogName write SetCatalogName; + property CatalogExtension: TEDBString read GetCatalogExtension write SetCatalogExtension; + property BackupExtension: TEDBString read GetBackupExtension write SetBackupExtension; + property TableExtension: TEDBString read GetTableExtension write SetTableExtension; + property TableIndexExtension: TEDBString read GetTableIndexExtension write SetTableIndexExtension; + property TableBlobExtension: TEDBString read GetTableBlobExtension write SetTableBlobExtension; + property TempTablesPath: TEDBString read GetTempTablesPathProperty write SetTempTablesPath; + property ServerName: TEDBString read GetServerName write SetServerName; + property ServerDescription: TEDBString read GetServerDescription write SetServerDescription; + property ServerAddress: TEDBString read GetServerAddress write SetServerAddress; + property ServerPort: Integer read GetServerPort write SetServerPort; + property ServerThreadCacheSize: Integer read GetServerThreadCacheSize write SetServerThreadCacheSize; + property ServerEncryptedOnly: Boolean read GetServerEncryptedOnly write SetServerEncryptedOnly; + property ServerSessionTimeout: Integer read GetServerSessionTimeout write SetServerSessionTimeout; + property ServerDeadSessionInterval: Integer read GetServerDeadSessionInterval write SetServerDeadSessionInterval; + property ServerDeadSessionExpiration: Integer read GetServerDeadSessionExpiration write SetServerDeadSessionExpiration; + property ServerMaxDeadSessions: Integer read GetServerMaxDeadSessions write SetServerMaxDeadSessions; + property ServerAuthorizedAddresses: TEDBStrings read GetServerAuthorizedAddresses write SetServerAuthorizedAddresses; + property ServerBlockedAddresses: TEDBStrings read GetServerBlockedAddresses write SetServerBlockedAddresses; + property ServerRunJobs: Boolean read GetServerRunJobs write SetServerRunJobs; + property ServerJobCategory: TEDBString read GetServerJobCategory write SetServerJobCategory; + end; + + TElevateDBEngineProperties = class(TInterfacedObject,IElevateDBEngineProperties) + protected + function GetBackupExtension: TEDBString; + function GetCatalogExtension: TEDBString; + function GetCatalogName: TEDBString; + function GetConfigExtension: TEDBString; + function GetConfigName: TEDBString; + function GetConfigPath: TEDBString; + function GetEncryptionPassword: TEDBString; + function GetEngineType: TEDBEngineType; + function GetLargeFileSupport: Boolean; + function GetLicensedSessions: Integer; + function GetLockExtension: TEDBString; + function GetLogCategories: TEDBLogCategories; + function GetLogExtension: TEDBString; + function GetMaxLogFileSize: Integer; + function GetServerAddress: TEDBString; + function GetServerAuthorizedAddresses: TEDBStrings; + function GetServerBlockedAddresses: TEDBStrings; + function GetServerDeadSessionExpiration: Integer; + function GetServerDeadSessionInterval: Integer; + function GetServerDescription: TEDBString; + function GetServerEncryptedOnly: Boolean; + function GetServerJobCategory: TEDBString; + function GetServerMaxDeadSessions: Integer; + function GetServerName: TEDBString; + function GetServerPort: Integer; + function GetServerRunJobs: Boolean; + function GetServerSessionTimeout: Integer; + function GetServerThreadCacheSize: Integer; + function GetSignature: TEDBString; + function GetTableBlobExtension: TEDBString; + function GetTableExtension: TEDBString; + function GetTableIndexExtension: TEDBString; + function GetTempTablesPathProperty: TEDBString; + procedure SetBackupExtension(const Value: TEDBString); + procedure SetCatalogExtension(const Value: TEDBString); + procedure SetCatalogName(const Value: TEDBString); + procedure SetConfigExtension(const Value: TEDBString); + procedure SetConfigName(const Value: TEDBString); + procedure SetConfigPath(const Value: TEDBString); + procedure SetEncryptionPassword(const Value: TEDBString); + procedure SetEngineType(const Value: TEDBEngineType); + procedure SetLargeFileSupport(const Value: Boolean); + procedure SetLicensedSessions(const Value: Integer); + procedure SetLockExtension(const Value: TEDBString); + procedure SetLogCategories(const Value: TEDBLogCategories); + procedure SetLogExtension(const Value: TEDBString); + procedure SetMaxLogFileSize(const Value: Integer); + procedure SetServerAddress(const Value: TEDBString); + procedure SetServerAuthorizedAddresses(const Value: TEDBStrings); + procedure SetServerBlockedAddresses(const Value: TEDBStrings); + procedure SetServerDeadSessionExpiration(const Value: Integer); + procedure SetServerDeadSessionInterval(const Value: Integer); + procedure SetServerDescription(const Value: TEDBString); + procedure SetServerEncryptedOnly(const Value: Boolean); + procedure SetServerJobCategory(const Value: TEDBString); + procedure SetServerMaxDeadSessions(const Value: Integer); + procedure SetServerName(const Value: TEDBString); + procedure SetServerPort(const Value: Integer); + procedure SetServerRunJobs(const Value: Boolean); + procedure SetServerSessionTimeout(const Value: Integer); + procedure SetServerThreadCacheSize(const Value: Integer); + procedure SetSignature(const Value: TEDBString); + procedure SetTableBlobExtension(const Value: TEDBString); + procedure SetTableExtension(const Value: TEDBString); + procedure SetTableIndexExtension(const Value: TEDBString); + procedure SetTempTablesPath(const Value: TEDBString); + public + property EngineType: TEDBEngineType read GetEngineType write SetEngineType; + property Signature: TEDBString read GetSignature write SetSignature; + property EncryptionPassword: TEDBString read GetEncryptionPassword write SetEncryptionPassword; + property LargeFileSupport: Boolean read GetLargeFileSupport write SetLargeFileSupport; + property LicensedSessions: Integer read GetLicensedSessions write SetLicensedSessions; + property ConfigPath: TEDBString read GetConfigPath write SetConfigPath; + property ConfigName: TEDBString read GetConfigName write SetConfigName; + property ConfigExtension: TEDBString read GetConfigExtension write SetConfigExtension; + property LockExtension: TEDBString read GetLockExtension write SetLockExtension; + property LogExtension: TEDBString read GetLogExtension write SetLogExtension; + property MaxLogFileSize: Integer read GetMaxLogFileSize write SetMaxLogFileSize; + property LogCategories: TEDBLogCategories read GetLogCategories write SetLogCategories; + property CatalogName: TEDBString read GetCatalogName write SetCatalogName; + property CatalogExtension: TEDBString read GetCatalogExtension write SetCatalogExtension; + property BackupExtension: TEDBString read GetBackupExtension write SetBackupExtension; + property TableExtension: TEDBString read GetTableExtension write SetTableExtension; + property TableIndexExtension: TEDBString read GetTableIndexExtension write SetTableIndexExtension; + property TableBlobExtension: TEDBString read GetTableBlobExtension write SetTableBlobExtension; + property TempTablesPath: TEDBString read GetTempTablesPathProperty write SetTempTablesPath; + property ServerName: TEDBString read GetServerName write SetServerName; + property ServerDescription: TEDBString read GetServerDescription write SetServerDescription; + property ServerAddress: TEDBString read GetServerAddress write SetServerAddress; + property ServerPort: Integer read GetServerPort write SetServerPort; + property ServerThreadCacheSize: Integer read GetServerThreadCacheSize write SetServerThreadCacheSize; + property ServerEncryptedOnly: Boolean read GetServerEncryptedOnly write SetServerEncryptedOnly; + property ServerSessionTimeout: Integer read GetServerSessionTimeout write SetServerSessionTimeout; + property ServerDeadSessionInterval: Integer read GetServerDeadSessionInterval write SetServerDeadSessionInterval; + property ServerDeadSessionExpiration: Integer read GetServerDeadSessionExpiration write SetServerDeadSessionExpiration; + property ServerMaxDeadSessions: Integer read GetServerMaxDeadSessions write SetServerMaxDeadSessions; + property ServerAuthorizedAddresses: TEDBStrings read GetServerAuthorizedAddresses write SetServerAuthorizedAddresses; + property ServerBlockedAddresses: TEDBStrings read GetServerBlockedAddresses write SetServerBlockedAddresses; + property ServerRunJobs: Boolean read GetServerRunJobs write SetServerRunJobs; + property ServerJobCategory: TEDBString read GetServerJobCategory write SetServerJobCategory; + end; + + IElevateDBEngine = interface + function EngineProperties: IElevateDBEngineProperties; + end; + + IElevateDBSessionProperties = interface + function GetForceBufferFlush: Boolean; + function GetKeepConnections: Boolean; + function GetKeepTablesOpen: Boolean; + function GetProgressTimeInterval: Integer; + function GetRecordChangeDetection: Boolean; + function GetRecordLockProtocol: TEDBRecordLockProtocol; + function GetRecordLockRetryCount: Integer; + function GetRecordLockWaitTime: Integer; + function GetRemoteAddress: TEDBString; + function GetRemoteCompression: Integer; + function GetRemoteEncryption: Boolean; + function GetRemoteHost: TEDBString; + function GetRemotePing: Boolean; + function GetRemotePingInterval: Integer; + function GetRemotePort: Integer; + function GetRemoteService: TEDBString; + function GetRemoteTimeout: Integer; + function GetRemoteTrace: Boolean; + function GetSessionType: TEDBSessionType; + procedure SetForceBufferFlush(const Value: Boolean); + procedure SetKeepTablesOpen(const Value: Boolean); + procedure SetKeepConnections(const Value: Boolean); + procedure SetProgressTimeInterval(const Value: Integer); + procedure SetRecordChangeDetection(const Value: Boolean); + procedure SetRecordLockProtocol(const Value: TEDBRecordLockProtocol); + procedure SetRecordLockRetryCount(const Value: Integer); + procedure SetRecordLockWaitTime(const Value: Integer); + procedure SetRemoteAddress(const Value: TEDBString); + procedure SetRemoteCompression(const Value: Integer); + procedure SetRemoteEncryption(const Value: Boolean); + procedure SetRemoteHost(const Value: TEDBString); + procedure SetRemotePing(const Value: Boolean); + procedure SetRemotePingInterval(const Value: Integer); + procedure SetRemotePort(const Value: Integer); + procedure SetRemoteService(const Value: TEDBString); + procedure SetRemoteTimeout(const Value: Integer); + procedure SetRemoteTrace(const Value: Boolean); + procedure SetSessionType(const Value: TEDBSessionType); + property ForceBufferFlush: Boolean read GetForceBufferFlush write SetForceBufferFlush; + property KeepConnections: Boolean read GetKeepConnections write SetKeepConnections; + property KeepTablesOpen: Boolean read GetKeepTablesOpen write SetKeepTablesOpen; + property RecordLockProtocol: TEDBRecordLockProtocol read GetRecordLockProtocol write SetRecordLockProtocol; + property RecordLockRetryCount: Integer read GetRecordLockRetryCount write SetRecordLockRetryCount; + property RecordLockWaitTime: Integer read GetRecordLockWaitTime write SetRecordLockWaitTime; + property RecordChangeDetection: Boolean read GetRecordChangeDetection write SetRecordChangeDetection; + property ProgressTimeInterval: Integer read GetProgressTimeInterval write SetProgressTimeInterval; + property SessionType: TEDBSessionType read GetSessionType write SetSessionType; + property RemoteCompression: Integer read GetRemoteCompression write SetRemoteCompression; + property RemoteEncryption: Boolean read GetRemoteEncryption write SetRemoteEncryption; + property RemoteHost: TEDBString read GetRemoteHost write SetRemoteHost; + property RemoteAddress: TEDBString read GetRemoteAddress write SetRemoteAddress; + property RemotePort: Integer read GetRemotePort write SetRemotePort; + property RemoteService: TEDBString read GetRemoteService write SetRemoteService; + property RemoteTrace: Boolean read GetRemoteTrace write SetRemoteTrace; + property RemoteTimeout: Integer read GetRemoteTimeout write SetRemoteTimeout; + property RemotePing: Boolean read GetRemotePing write SetRemotePing; + property RemotePingInterval: Integer read GetRemotePingInterval write SetRemotePingInterval; + end; + + { TDAEEDBConnection } + TDAEEDBConnection = class(TDAElevateDBConnection,IElevateDBEngine,IElevateDBSessionProperties) + private + FNativeSession: TEDBSession; + fNativeDatabase: TEDBDatabase; + FDataBasePath: String; + FDataBaseName: string; + procedure CheckConnected; + function CreateConfigQuery: TDAEDataset; + protected + function GetForceBufferFlush: Boolean; + function GetKeepConnections: Boolean; + function GetKeepTablesOpen: Boolean; + function GetProgressTimeInterval: Integer; + function GetRecordChangeDetection: Boolean; + function GetRecordLockProtocol: TEDBRecordLockProtocol; + function GetRecordLockRetryCount: Integer; + function GetRecordLockWaitTime: Integer; + function GetRemoteAddress: TEDBString; + function GetRemoteCompression: Integer; + function GetRemoteEncryption: Boolean; + function GetRemoteHost: TEDBString; + function GetRemotePing: Boolean; + function GetRemotePingInterval: Integer; + function GetRemotePort: Integer; + function GetRemoteService: TEDBString; + function GetRemoteTimeout: Integer; + function GetRemoteTrace: Boolean; + function GetSessionType: TEDBSessionType; + procedure SetForceBufferFlush(const Value: Boolean); + procedure SetKeepTablesOpen(const Value: Boolean); + procedure SetKeepConnections(const Value: Boolean); + procedure SetProgressTimeInterval(const Value: Integer); + procedure SetRecordChangeDetection(const Value: Boolean); + procedure SetRecordLockProtocol(const Value: TEDBRecordLockProtocol); + procedure SetRecordLockRetryCount(const Value: Integer); + procedure SetRecordLockWaitTime(const Value: Integer); + procedure SetRemoteAddress(const Value: TEDBString); + procedure SetRemoteCompression(const Value: Integer); + procedure SetRemoteEncryption(const Value: Boolean); + procedure SetRemoteHost(const Value: TEDBString); + procedure SetRemotePing(const Value: Boolean); + procedure SetRemotePingInterval(const Value: Integer); + procedure SetRemotePort(const Value: Integer); + procedure SetRemoteService(const Value: TEDBString); + procedure SetRemoteTimeout(const Value: Integer); + procedure SetRemoteTrace(const Value: Boolean); + procedure SetSessionType(const Value: TEDBSessionType); + protected + procedure SetConnected(Value: boolean); override; safecall; + function CreateCustomConnection: TCustomConnection; override; + //function CreateMacroProcessor: TDASQLMacroProcessor; override; + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); override; + // transaction support + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + + // procedure DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection); override; + // procedure DoGetQueryFields(const aSQL: string; aParamsIfNeeded: TDAParamCollection; out Fields: TDAFieldCollection); override; + // procedure DoGetViewFields(const aViewName: string; out Fields: TDAFieldCollection); override; + + // procedure DoGetStoredProcedureParams(const aStoredProcedureName: string; out Params: TDAParamCollection); override; + // function DoGetLastAutoInc(const GeneratorName: string): integer; override; + + { IDAConnection } + // UserID/Password + // function GetUserID: string; override; safecall; + // procedure SetUserID(const Value: string); override; safecall; + // function GetPassword: string; override; safecall; + // procedure SetPassword(const Value: string); override; safecall; + + function GetSPSelectSyntax(HasArguments: Boolean): string; override; safecall; + // function GetQuoteChars: TDAQuoteCharArray; override; safecall; + // function IdentifierIsQuoted(const iIdentifier: string): boolean; override; safecall; + // function IdentifierNeedsQuoting(const iIdentifier: string): boolean; override; safecall; + // function QuoteIdentifierIfNeeded(const iIdentifier: string): string; override; safecall; + // function QuoteIdentifier(const iIdentifier: string): string; override; safecall; + // function QuoteFieldNameIfNeeded(const aTableName, aFieldName: string): string; override;safecall; + // function QuoteFieldName(const aTableName, aFieldName: string): string; override; safecall; + + // function NewCommand(const Text: string; CommandType: TDASQLStatementType; const aCommandName: string = ''): IDASQLCommand; override; safecall; + // function NewDataset(const SQL: string; const aDatasetName: string = ''): IDADataset; override; safecall; + // function GetLastAutoInc(const GeneratorName: string = ''): integer; safecall; + + // function isAlive: Boolean; override; safecall; + // function GetQueryBuilder: TDAQueryBuilder; override; safecall; + + { IDAUseGenerators } + // function GetNextAutoinc(const GeneratorName: string): integer; safecall; + { IElevateDBEngine } + function EngineProperties: IElevateDBEngineProperties; + public + destructor Destroy; override; + end; + + { TDAEElevDBQuery } + TDAEElevDBQuery = class(TDAEDataset, IDASQLCommand , IDAMustSetParams) + protected + // procedure PrepareSQLStatement; override; + procedure ClearParams; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure DoPrepare(Value: boolean); override; safecall; + function DoExecute: integer; override; safecall; + procedure DoSetSQL(const Value: string); override; safecall; + function DoGetSQL: string; override; safecall; + // function intVCLTypeToDAType(aFieldType: TFieldType): TDADataType;override; + + { IDASQLCommand } + // procedure RefreshParams; override; safecall; + function Execute: integer; override; safecall; + // function DoGetRecordCount: integer; override; + // function DoGetActive: boolean; override; + // procedure DoSetActive(Value: boolean); override; + // function DoGetBOF: boolean; override; + // function DoGetEOF: boolean; override; + // procedure DoNext; override; + // function DoLocate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; override; + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + { TDAEElevDBStoredProcedure } + TDAEElevDBStoredProcedure = class(TDAEStoredProcedure, IDAStoredProcedure , IDAMustSetParams) + protected + // IDAStoredProcedure + function GetStoredProcedureName: string; override; safecall; + procedure SetStoredProcedureName(const Name: string); override; safecall; + + // procedure PrepareSQLStatement; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure DoPrepare(Value: boolean); override; safecall; + function DoExecute: integer; override; safecall; + procedure DoSetSQL(const Value: string); override; safecall; + function DoGetSQL: string; override; safecall; + // function intVCLTypeToDAType(aFieldType: TFieldType): TDADataType;override; + + { IDASQLCommand } + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function Execute: integer; override; safecall; + // function DoGetRecordCount: integer; override; + // function DoGetActive: boolean; override; + // procedure DoSetActive(Value: boolean); override; + // function DoGetBOF: boolean; override; + // function DoGetEOF: boolean; override; + // procedure DoNext; override; + // function DoLocate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; override; + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses SysUtils, uDADriverManager, uDARes, Variants, uDAMacroProcessors, + Math, uDAHelpers, uROBinaryHelpers, Windows; + +var + _driver: TDAEDriver = nil; + gEngineProperties: TElevateDBEngineProperties; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAElevateDBDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAEElevateDBDriver.Create(nil); + result := _driver; +end; + +{ TDAEEDBConnection } + +procedure TDAEEDBConnection.DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +var + i: Integer; + sName, sValue: string; +begin + inherited; + with aConnStrParser do begin + if (Self.UserID <> '') then + FNativeSession.LoginUser := Self.UserID + else + FNativeSession.LoginUser := UserID; + + if (Self.Password <> '') then + FNativeSession.LoginPassword := Self.Password + else + FNativeSession.LoginPassword := Password; + + Session.RemoteAddress := Server; +// Engine.ConfigPath := Database; + FDataBasePath := Database; + FDataBaseName := ''; + for i := 0 to AuxParamsCount - 1 do begin + sName := AuxParamNames[i]; + if sName = '' then Continue; + sValue := AuxParams[AuxParamNames[i]]; + // engine settings + if SameText(sName,'EngineType') then begin + if SameText(sValue,'etClient') then gEngineProperties.EngineType:=etClient + else if SameText(sValue,'etServer') then gEngineProperties.EngineType:=etServer; + end + else if SameText(sName,'Signature') then gEngineProperties.Signature := sValue + else if SameText(sName,'EncryptionPassword') then gEngineProperties.EncryptionPassword := sValue + else if SameText(sName,'LargeFileSupport') then gEngineProperties.LargeFileSupport := StrToBoolDef(sValue, gEngineProperties.LargeFileSupport) + else if SameText(sName,'LicensedSessions') then gEngineProperties.LicensedSessions := StrToIntDef(sValue, gEngineProperties.LicensedSessions) + else if SameText(sName,'ConfigPath') then gEngineProperties.ConfigPath := sValue + else if SameText(sName,'ConfigName') then gEngineProperties.ConfigName := sValue + else if SameText(sName,'ConfigExtension') then gEngineProperties.ConfigExtension := sValue + else if SameText(sName,'LockExtension') then gEngineProperties.LockExtension := sValue + else if SameText(sName,'LogExtension') then gEngineProperties.LogExtension := sValue + else if SameText(sName,'MaxLogFileSize') then gEngineProperties.MaxLogFileSize := StrToIntDef(sValue, gEngineProperties.MaxLogFileSize) + else if SameText(sName,'CatalogName') then gEngineProperties.CatalogName := sValue + else if SameText(sName,'CatalogExtension') then gEngineProperties.CatalogExtension := sValue + else if SameText(sName,'BackupExtension') then gEngineProperties.BackupExtension := sValue + else if SameText(sName,'TableExtension') then gEngineProperties.TableExtension := sValue + else if SameText(sName,'TableIndexExtension') then gEngineProperties.TableIndexExtension := sValue + else if SameText(sName,'TableBlobExtension') then gEngineProperties.TableBlobExtension := sValue + else if SameText(sName,'TempTablesPath') then gEngineProperties.TempTablesPath := sValue + else if SameText(sName,'ServerName') then gEngineProperties.ServerName := sValue + else if SameText(sName,'ServerDescription') then gEngineProperties.ServerDescription := sValue + else if SameText(sName,'ServerPort') then gEngineProperties.ServerPort := StrToIntDef(sValue, gEngineProperties.ServerPort) + else if SameText(sName,'ServerThreadCacheSize') then gEngineProperties.ServerThreadCacheSize := StrToIntDef(sValue, gEngineProperties.ServerThreadCacheSize) + else if SameText(sName,'ServerEncryptedOnly') then gEngineProperties.ServerEncryptedOnly := StrToBoolDef(sValue, gEngineProperties.ServerEncryptedOnly) + else if SameText(sName,'ServerSessionTimeout') then gEngineProperties.ServerSessionTimeout := StrToIntDef(sValue, gEngineProperties.ServerSessionTimeout) + else if SameText(sName,'ServerDeadSessionInterval') then gEngineProperties.ServerDeadSessionInterval := StrToIntDef(sValue, gEngineProperties.ServerDeadSessionInterval) + else if SameText(sName,'ServerDeadSessionExpiration') then gEngineProperties.ServerDeadSessionExpiration := StrToIntDef(sValue, gEngineProperties.ServerDeadSessionExpiration) + else if SameText(sName,'ServerMaxDeadSessions') then gEngineProperties.ServerMaxDeadSessions := StrToIntDef(sValue, gEngineProperties.ServerMaxDeadSessions) + else if SameText(sName,'ServerRunJobs') then gEngineProperties.ServerRunJobs := StrToBoolDef(sValue, gEngineProperties.ServerRunJobs) + else if SameText(sName,'ServerJobCategory') then gEngineProperties.ServerJobCategory := sValue + // session settings + else if SameText(sName,'ForceBufferFlush') then FNativeSession.ForceBufferFlush := StrToBoolDef(sValue, FNativeSession.ForceBufferFlush) + else if SameText(sName,'KeepConnections') then FNativeSession.KeepConnections := StrToBoolDef(sValue, FNativeSession.KeepConnections) + else if SameText(sName,'KeepTablesOpen') then FNativeSession.KeepTablesOpen := StrToBoolDef(sValue, FNativeSession.KeepTablesOpen) + else if SameText(sName,'RecordLockProtocol') then begin + if SameText(sValue,'lpPessimistic') then FNativeSession.RecordLockProtocol:=lpPessimistic + else if SameText(sValue,'lpOptimistic') then FNativeSession.RecordLockProtocol:=lpOptimistic; + end + else if SameText(sName,'RecordLockRetryCount') then FNativeSession.RecordLockRetryCount := StrToIntDef(sValue, fNativeSession.RecordLockRetryCount) + else if SameText(sName,'RecordLockWaitTime') then fNativeSession.RecordLockWaitTime := StrToIntDef(sValue, fNativeSession.RecordLockWaitTime) + else if SameText(sName,'RecordChangeDetection') then FNativeSession.RecordChangeDetection := StrToBoolDef(sValue, FNativeSession.RecordChangeDetection) + else if SameText(sName,'ProgressTimeInterval') then fNativeSession.ProgressTimeInterval := StrToIntDef(sValue, fNativeSession.ProgressTimeInterval) + else if SameText(sName,'SessionType') then begin + if SameText(sValue,'stLocal') then FNativeSession.SessionType:=stLocal + else if SameText(sValue,'stRemote') then FNativeSession.SessionType:=stRemote; + end + else if SameText(sName,'RemoteCompression') then fNativeSession.RemoteCompression := StrToIntDef(sValue, fNativeSession.RemoteCompression) + else if SameText(sName,'RemoteEncryption') then FNativeSession.RemoteEncryption := StrToBoolDef(sValue, FNativeSession.RemoteEncryption) + else if SameText(sName,'RemoteHost') then fNativeSession.RemoteHost := sValue + else if SameText(sName,'RemoteAddress') then fNativeSession.RemoteAddress := sValue + else if SameText(sName,'RemotePort') then fNativeSession.RemotePort := StrToIntDef(sValue, fNativeSession.RemotePort) + else if SameText(sName,'RemoteService') then fNativeSession.RemoteService := sValue + else if SameText(sName,'RemoteTrace') then FNativeSession.RemoteTrace := StrToBoolDef(sValue, FNativeSession.RemoteTrace) + else if SameText(sName,'RemoteTimeout') then fNativeSession.RemoteTimeout := StrToIntDef(sValue, fNativeSession.RemoteTimeout) + else if SameText(sName,'RemotePing') then FNativeSession.RemotePing := StrToBoolDef(sValue, FNativeSession.RemotePing) + else if SameText(sName,'RemotePingInterval') then fNativeSession.RemotePingInterval := StrToIntDef(sValue, fNativeSession.RemotePingInterval) + // + else if SameText(sName,'DataBaseName') then FDataBaseName:=sValue; + end; + fNativeDatabase.DatabaseName := FDataBaseName; + fNativeDatabase.Database := FDataBaseName; + end; +end; + +function TDAEEDBConnection.DoBeginTransaction: integer; +begin + CheckConnected; + fNativeDatabase.StartTransaction(EmptyEDBStringsArray); + Result := 0; +end; + +procedure TDAEEDBConnection.DoCommitTransaction; +begin + CheckConnected; + fNativeDatabase.Commit; +end; + +function TDAEEDBConnection.CreateCustomConnection: TCustomConnection; +begin + FNativeSession := TEDBSession.Create(nil); + FNativeSession.AutoSessionName:=True; + fNativeDatabase := TEDBDatabase.Create(nil); + fNativeDatabase.SessionName := FNativeSession.SessionName; + result := fNativeDatabase; +end; + +function TDAEEDBConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEElevDBQuery; +end; + +function TDAEEDBConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEElevDBStoredProcedure; +end; + +procedure TDAEEDBConnection.DoRollbackTransaction; +begin + CheckConnected; + fNativeDatabase.Rollback; +end; + +function TDAEEDBConnection.DoGetInTransaction: boolean; +begin + CheckConnected; + Result := fNativeDatabase.InTransaction; +end; + + +procedure TDAEEDBConnection.SetConnected(Value: boolean); +begin + if (fNativeDatabase <> nil) then + if Value then begin + FNativeSession.Connected:=True; + ElevateDB_RegisterDatabase(CreateConfigQuery,fNativeDatabase.DatabaseName,FDataBasePath); + fNativeDatabase.Connected:=True; + end + else begin + fNativeDatabase.Connected:=False; + FNativeSession.Connected:=False; + end; +end; + +procedure TDAEEDBConnection.CheckConnected; +begin + if not fNativeDatabase.Connected then SetConnected(True); +end; + +destructor TDAEEDBConnection.Destroy; +begin + FNativeSession.Free; + Engine.Active:=False; + inherited; +end; + +function TDAEEDBConnection.CreateConfigQuery: TDAEDataset; +begin + Result:= GetDatasetClass.Create(Self); + TEDBQuery(TDAEElevDBQuery(Result).Dataset).DatabaseName := ElevateDB_ConfigDBName; +end; + +function TDAEEDBConnection.EngineProperties: IElevateDBEngineProperties; +begin + Result:= gEngineProperties; +end; + +function TDAEEDBConnection.GetForceBufferFlush: Boolean; +begin + Result := FNativeSession.ForceBufferFlush; +end; + +function TDAEEDBConnection.GetKeepConnections: Boolean; +begin + Result := FNativeSession.KeepConnections; +end; + +function TDAEEDBConnection.GetKeepTablesOpen: Boolean; +begin + Result := FNativeSession.KeepTablesOpen; +end; + +function TDAEEDBConnection.GetProgressTimeInterval: Integer; +begin + Result := FNativeSession.ProgressTimeInterval; +end; + +function TDAEEDBConnection.GetRecordChangeDetection: Boolean; +begin + Result := FNativeSession.RecordChangeDetection; +end; + +function TDAEEDBConnection.GetRecordLockProtocol: TEDBRecordLockProtocol; +begin + Result := FNativeSession.RecordLockProtocol; +end; + +function TDAEEDBConnection.GetRecordLockRetryCount: Integer; +begin + Result := FNativeSession.RecordLockRetryCount; +end; + +function TDAEEDBConnection.GetRecordLockWaitTime: Integer; +begin + Result := FNativeSession.RecordLockWaitTime; +end; + +function TDAEEDBConnection.GetRemoteAddress: TEDBString; +begin + Result := FNativeSession.RemoteAddress; +end; + +function TDAEEDBConnection.GetRemoteCompression: Integer; +begin + Result := FNativeSession.RemoteCompression; +end; + +function TDAEEDBConnection.GetRemoteEncryption: Boolean; +begin + Result := FNativeSession.RemoteEncryption; +end; + +function TDAEEDBConnection.GetRemoteHost: TEDBString; +begin + Result := FNativeSession.RemoteHost; +end; + +function TDAEEDBConnection.GetRemotePing: Boolean; +begin + Result := FNativeSession.RemotePing; +end; + +function TDAEEDBConnection.GetRemotePingInterval: Integer; +begin + Result := FNativeSession.RemotePingInterval; +end; + +function TDAEEDBConnection.GetRemotePort: Integer; +begin + Result := FNativeSession.RemotePort; +end; + +function TDAEEDBConnection.GetRemoteService: TEDBString; +begin + Result := FNativeSession.RemoteService; +end; + +function TDAEEDBConnection.GetRemoteTimeout: Integer; +begin + Result := FNativeSession.RemoteTimeout; +end; + +function TDAEEDBConnection.GetRemoteTrace: Boolean; +begin + Result := FNativeSession.RemoteTrace; +end; + +function TDAEEDBConnection.GetSessionType: TEDBSessionType; +begin + Result := FNativeSession.SessionType; +end; + +procedure TDAEEDBConnection.SetForceBufferFlush(const Value: Boolean); +begin + FNativeSession.ForceBufferFlush := Value; +end; + +procedure TDAEEDBConnection.SetKeepConnections(const Value: Boolean); +begin + FNativeSession.KeepConnections := Value; +end; + +procedure TDAEEDBConnection.SetKeepTablesOpen(const Value: Boolean); +begin + FNativeSession.KeepTablesOpen := Value; +end; + +procedure TDAEEDBConnection.SetProgressTimeInterval(const Value: Integer); +begin + FNativeSession.ProgressTimeInterval := Value; +end; + +procedure TDAEEDBConnection.SetRecordChangeDetection(const Value: Boolean); +begin + FNativeSession.RecordChangeDetection := Value; +end; + +procedure TDAEEDBConnection.SetRecordLockProtocol( + const Value: TEDBRecordLockProtocol); +begin + FNativeSession.RecordLockProtocol := Value; +end; + +procedure TDAEEDBConnection.SetRecordLockRetryCount(const Value: Integer); +begin + FNativeSession.RecordLockRetryCount := Value; +end; + +procedure TDAEEDBConnection.SetRecordLockWaitTime(const Value: Integer); +begin + FNativeSession.RecordLockWaitTime := Value; +end; + +procedure TDAEEDBConnection.SetRemoteAddress(const Value: TEDBString); +begin + FNativeSession.RemoteAddress := Value; +end; + +procedure TDAEEDBConnection.SetRemoteCompression(const Value: Integer); +begin + FNativeSession.RemoteCompression := Value; +end; + +procedure TDAEEDBConnection.SetRemoteEncryption(const Value: Boolean); +begin + FNativeSession.RemoteEncryption := Value; +end; + +procedure TDAEEDBConnection.SetRemoteHost(const Value: TEDBString); +begin + FNativeSession.RemoteHost := Value; +end; + +procedure TDAEEDBConnection.SetRemotePing(const Value: Boolean); +begin + FNativeSession.RemotePing := Value; +end; + +procedure TDAEEDBConnection.SetRemotePingInterval(const Value: Integer); +begin + FNativeSession.RemotePingInterval := Value; +end; + +procedure TDAEEDBConnection.SetRemotePort(const Value: Integer); +begin + FNativeSession.RemotePort := Value; +end; + +procedure TDAEEDBConnection.SetRemoteService(const Value: TEDBString); +begin + FNativeSession.RemoteService := Value; +end; + +procedure TDAEEDBConnection.SetRemoteTimeout(const Value: Integer); +begin + FNativeSession.RemoteTimeout := Value; +end; + +procedure TDAEEDBConnection.SetRemoteTrace(const Value: Boolean); +begin + FNativeSession.RemoteTrace := Value; +end; + +procedure TDAEEDBConnection.SetSessionType(const Value: TEDBSessionType); +begin + FNativeSession.SessionType := Value; +end; + +function TDAEEDBConnection.GetSPSelectSyntax( + HasArguments: Boolean): string; +begin + Result:= ''; // not supported! +end; + +{ TDAEElevateDBDriver } + +procedure TDAEElevateDBDriver.GetAuxDrivers(out List: IROStrings); +begin + inherited; + // List.Add('Driver1'); + // List.Add('Driver2'); +end; + +procedure TDAEElevateDBDriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +begin + inherited; + List.Add('DataBaseName='); + List.Add('ForceBufferFlush=(True,False)'); + List.Add('KeepConnections=(True,False)'); + List.Add('KeepTablesOpen=(True,False)'); + List.Add('RecordLockProtocol=(lpPessimistic,lpOptimistic)'); + List.Add('RecordLockRetryCount='); + List.Add('RecordLockWaitTime='); + List.Add('RecordChangeDetection=(True,False)'); + List.Add('ProgressTimeInterval='); + List.Add('SessionType=(stLocal,stRemote)'); + List.Add('RemoteCompression='); + List.Add('RemoteEncryption=(True,False)'); + List.Add('RemoteHost='); + List.Add('RemoteAddress='); + List.Add('RemotePort='); + List.Add('RemoteService='); + List.Add('RemoteTrace=(True,False)'); + List.Add('RemoteTimeout='); + List.Add('RemotePing=(True,False)'); + List.Add('RemotePingInterval='); + List.Add(''); + List.Add('=== Global Engine Options ==='); + List.Add('EngineType=(etClient,etServer)'); + List.Add('Signature='); + List.Add('EncryptionPassword='); + List.Add('LargeFileSupport=(True,False)'); + List.Add('LicensedSessions='); + List.Add('ConfigPath='); + List.Add('ConfigName='); + List.Add('ConfigExtension='); + List.Add('LockExtension='); + List.Add('LogExtension='); + List.Add('MaxLogFileSize='); + List.Add('CatalogName='); + List.Add('CatalogExtension='); + List.Add('BackupExtension='); + List.Add('TableExtension='); + List.Add('TableIndexExtension='); + List.Add('TableBlobExtension='); + List.Add('TempTablesPath='); + List.Add('ServerName='); + List.Add('ServerDescription='); + List.Add('ServerPort='); + List.Add('ServerThreadCacheSize='); + List.Add('ServerEncryptedOnly=(True,False)'); + List.Add('ServerSessionTimeout='); + List.Add('ServerDeadSessionInterval='); + List.Add('ServerDeadSessionExpiration='); + List.Add('ServerMaxDeadSessions='); + List.Add('ServerRunJobs=(True,False)'); + List.Add('ServerJobCategory='); +end; + +function TDAEElevateDBDriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + Result:=[doServerName, doDatabaseName, doLogin, doCustom]; +end; + +function TDAEElevateDBDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEEDBConnection; +end; + + +function TDAEElevateDBDriver.GetDescription: string; +begin + result := 'ElevateDB Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; +end; + +function TDAEElevateDBDriver.GetDriverID: string; +begin + result := 'ElevateDB'; +end; + +function TDAEElevateDBDriver.GetProviderDefaultCustomParameters( + Provider: string): string; +begin + Result:='DataBaseName='; +end; + +{ TDAEElevDBQuery } + +procedure TDAEElevDBQuery.ClearParams; +begin + inherited; + TEDBQuery(Dataset).Params.Clear; +end; + +function TDAEElevDBQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + Result := TEDBQuery.Create(nil); + TEDBQuery(Result).SessionName := TDAEEDBConnection(aConnection).fNativeDatabase.SessionName; + TEDBQuery(Result).DatabaseName := TDAEEDBConnection(aConnection).fNativeDatabase.DatabaseName; +end; + +function TDAEElevDBQuery.DoExecute: integer; +begin + TEDBQuery(Dataset).ExecSQL; + Result:=TEDBQuery(Dataset).RowsAffected; +end; + +function TDAEElevDBQuery.DoGetSQL: string; +begin + Result := TEDBQuery(Dataset).SQL.Text; +end; + +procedure TDAEElevDBQuery.DoPrepare(Value: boolean); +begin +//nothing + TEDBQuery(Dataset).Prepared:= Value; +end; + +procedure TDAEElevDBQuery.DoSetSQL(const Value: string); +begin + TEDBQuery(Dataset).SQL.Text := Value; +end; + +function TDAEElevDBQuery.Execute: integer; +begin + SetParamValues(GetParams); + Result:= DoExecute; + GetParamValues(GetParams); +end; + +procedure TDAEElevDBQuery.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TEDBQuery(Dataset).Params); +end; + +procedure TDAEElevDBQuery.SetParamValues(AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams, TEDBQuery(Dataset).Params); +end; + +{ TDAEElevDBStoredProcedure } + +function TDAEElevDBStoredProcedure.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TEDBStoredProc.Create(nil); + TEDBStoredProc(Result).SessionName := TDAEEDBConnection(aConnection).fNativeDatabase.SessionName; + TEDBStoredProc(Result).DatabaseName := TDAEEDBConnection(aConnection).fNativeDatabase.DatabaseName; +end; + +function TDAEElevDBStoredProcedure.Execute: integer; +begin + TEDBStoredProc(Dataset).Prepare; + SetParamValues(GetParams); + Result:= DoExecute; + //Result:=TEDBStoredProc(Dataset).RecordCount; + GetParamValues(GetParams); +end; + +function TDAEElevDBStoredProcedure.DoGetSQL: string; +begin + Result := ''; +end; + +procedure TDAEElevDBStoredProcedure.DoPrepare(Value: boolean); +begin + TEDBStoredProc(Dataset).Prepared:=Value; +end; + +procedure TDAEElevDBStoredProcedure.DoSetSQL(const Value: string); +begin + // +end; + +procedure TDAEElevDBStoredProcedure.GetParamValues( + AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TEDBStoredProc(Dataset).Params); +end; + +function TDAEElevDBStoredProcedure.GetStoredProcedureName: string; +begin + Result := TEDBStoredProc(Dataset).StoredProcName; +end; + +procedure TDAEElevDBStoredProcedure.RefreshParams; +var + lField: TField; + i: integer; + par: TDAParam; +begin + DoPrepare(False); + DoPrepare(True); + RefreshParamsStd(TEDBStoredProc(Dataset).Params); + For i:=0 to TEDBStoredProc(Dataset).FieldCount-1 do begin + par := GetParams.Add; + lField:=TEDBStoredProc(Dataset).Fields[i]; + par.Name := lField.Name; + par.DataType := intVCLTypeToDAType(lField.DataType); + par.ParamType := daptOutput; + par.Size := lField.Size; + end; +end; + +procedure TDAEElevDBStoredProcedure.SetParamValues( + AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams, TEDBStoredProc(Dataset).Params); +end; + +procedure TDAEElevDBStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TEDBStoredProc(Dataset).StoredProcName := Name; +end; + +function TDAEElevDBStoredProcedure.DoExecute: integer; +begin + TEDBStoredProc(Dataset).ExecProc; + Result:=0; +end; + +{ TElevateDBEngineProperties } + +function TElevateDBEngineProperties.GetBackupExtension: TEDBString; +begin + Result := edbcomps.Engine.BackupExtension; +end; + +function TElevateDBEngineProperties.GetCatalogExtension: TEDBString; +begin + Result := edbcomps.Engine.CatalogExtension; +end; + +function TElevateDBEngineProperties.GetCatalogName: TEDBString; +begin + Result := edbcomps.Engine.CatalogName; +end; + +function TElevateDBEngineProperties.GetConfigExtension: TEDBString; +begin + Result := edbcomps.Engine.ConfigExtension; +end; + +function TElevateDBEngineProperties.GetConfigName: TEDBString; +begin + Result := edbcomps.Engine.ConfigName; +end; + +function TElevateDBEngineProperties.GetConfigPath: TEDBString; +begin + Result := edbcomps.Engine.ConfigPath; +end; + +function TElevateDBEngineProperties.GetEncryptionPassword: TEDBString; +begin + Result := edbcomps.Engine.EncryptionPassword; +end; + +function TElevateDBEngineProperties.GetEngineType: TEDBEngineType; +begin + Result := edbcomps.Engine.EngineType; +end; + +function TElevateDBEngineProperties.GetLargeFileSupport: Boolean; +begin + Result := edbcomps.Engine.LargeFileSupport; +end; + +function TElevateDBEngineProperties.GetLicensedSessions: Integer; +begin + Result := edbcomps.Engine.LicensedSessions; +end; + +function TElevateDBEngineProperties.GetLockExtension: TEDBString; +begin + Result := edbcomps.Engine.LockExtension; +end; + +function TElevateDBEngineProperties.GetLogCategories: TEDBLogCategories; +begin + Result := edbcomps.Engine.LogCategories; +end; + +function TElevateDBEngineProperties.GetLogExtension: TEDBString; +begin + Result := edbcomps.Engine.LogExtension; +end; + +function TElevateDBEngineProperties.GetMaxLogFileSize: Integer; +begin + Result := edbcomps.Engine.MaxLogFileSize; +end; + +function TElevateDBEngineProperties.GetServerAddress: TEDBString; +begin + Result := edbcomps.Engine.ServerAddress; +end; + +function TElevateDBEngineProperties.GetServerAuthorizedAddresses: TEDBStrings; +begin + Result := edbcomps.Engine.ServerAuthorizedAddresses; +end; + +function TElevateDBEngineProperties.GetServerBlockedAddresses: TEDBStrings; +begin + Result := edbcomps.Engine.ServerBlockedAddresses; +end; + +function TElevateDBEngineProperties.GetServerDeadSessionExpiration: Integer; +begin + Result := edbcomps.Engine.ServerDeadSessionExpiration; +end; + +function TElevateDBEngineProperties.GetServerDeadSessionInterval: Integer; +begin + Result := edbcomps.Engine.ServerDeadSessionInterval; +end; + +function TElevateDBEngineProperties.GetServerDescription: TEDBString; +begin + Result := edbcomps.Engine.ServerDescription; +end; + +function TElevateDBEngineProperties.GetServerEncryptedOnly: Boolean; +begin + Result := edbcomps.Engine.ServerEncryptedOnly; +end; + +function TElevateDBEngineProperties.GetServerJobCategory: TEDBString; +begin + Result := edbcomps.Engine.ServerJobCategory; +end; + +function TElevateDBEngineProperties.GetServerMaxDeadSessions: Integer; +begin + Result := edbcomps.Engine.ServerMaxDeadSessions; +end; + +function TElevateDBEngineProperties.GetServerName: TEDBString; +begin + Result := edbcomps.Engine.ServerName; +end; + +function TElevateDBEngineProperties.GetServerPort: Integer; +begin + Result := edbcomps.Engine.ServerPort; +end; + +function TElevateDBEngineProperties.GetServerRunJobs: Boolean; +begin + Result := edbcomps.Engine.ServerRunJobs; +end; + +function TElevateDBEngineProperties.GetServerSessionTimeout: Integer; +begin + Result := edbcomps.Engine.ServerSessionTimeout; +end; + +function TElevateDBEngineProperties.GetServerThreadCacheSize: Integer; +begin + Result := edbcomps.Engine.ServerThreadCacheSize; +end; + +function TElevateDBEngineProperties.GetSignature: TEDBString; +begin + Result := edbcomps.Engine.Signature; +end; + +function TElevateDBEngineProperties.GetTableBlobExtension: TEDBString; +begin + Result := edbcomps.Engine.TableBlobExtension; +end; + +function TElevateDBEngineProperties.GetTableExtension: TEDBString; +begin + Result := edbcomps.Engine.TableExtension; +end; + +function TElevateDBEngineProperties.GetTableIndexExtension: TEDBString; +begin + Result := edbcomps.Engine.TableIndexExtension; +end; + +function TElevateDBEngineProperties.GetTempTablesPathProperty: TEDBString; +begin + Result := edbcomps.Engine.TempTablesPath; +end; + +procedure TElevateDBEngineProperties.SetBackupExtension( + const Value: TEDBString); +begin + edbcomps.Engine.BackupExtension := Value; +end; + +procedure TElevateDBEngineProperties.SetCatalogExtension( + const Value: TEDBString); +begin + edbcomps.Engine.CatalogExtension := Value; +end; + +procedure TElevateDBEngineProperties.SetCatalogName( + const Value: TEDBString); +begin + edbcomps.Engine.CatalogName := Value; +end; + +procedure TElevateDBEngineProperties.SetConfigExtension( + const Value: TEDBString); +begin + edbcomps.Engine.ConfigExtension := Value; +end; + +procedure TElevateDBEngineProperties.SetConfigName( + const Value: TEDBString); +begin + edbcomps.Engine.ConfigName := Value; +end; + +procedure TElevateDBEngineProperties.SetConfigPath( + const Value: TEDBString); +begin + edbcomps.Engine.ConfigPath := Value; +end; + +procedure TElevateDBEngineProperties.SetEncryptionPassword( + const Value: TEDBString); +begin + edbcomps.Engine.EncryptionPassword := Value; +end; + +procedure TElevateDBEngineProperties.SetEngineType( + const Value: TEDBEngineType); +begin + edbcomps.Engine.EngineType := Value; +end; + +procedure TElevateDBEngineProperties.SetLargeFileSupport( + const Value: Boolean); +begin + edbcomps.Engine.LargeFileSupport := Value; +end; + +procedure TElevateDBEngineProperties.SetLicensedSessions( + const Value: Integer); +begin + edbcomps.Engine.LicensedSessions := Value; +end; + +procedure TElevateDBEngineProperties.SetLockExtension( + const Value: TEDBString); +begin + edbcomps.Engine.LockExtension := Value; +end; + +procedure TElevateDBEngineProperties.SetLogCategories( + const Value: TEDBLogCategories); +begin + edbcomps.Engine.LogCategories := Value; +end; + +procedure TElevateDBEngineProperties.SetLogExtension( + const Value: TEDBString); +begin + edbcomps.Engine.LogExtension := Value; +end; + +procedure TElevateDBEngineProperties.SetMaxLogFileSize( + const Value: Integer); +begin + edbcomps.Engine.MaxLogFileSize := Value; +end; + +procedure TElevateDBEngineProperties.SetServerAddress( + const Value: TEDBString); +begin + edbcomps.Engine.ServerAddress := Value; +end; + +procedure TElevateDBEngineProperties.SetServerAuthorizedAddresses( + const Value: TEDBStrings); +begin + edbcomps.Engine.ServerAuthorizedAddresses := Value; +end; + +procedure TElevateDBEngineProperties.SetServerBlockedAddresses( + const Value: TEDBStrings); +begin + edbcomps.Engine.ServerBlockedAddresses := Value; +end; + +procedure TElevateDBEngineProperties.SetServerDeadSessionExpiration( + const Value: Integer); +begin + edbcomps.Engine.ServerDeadSessionExpiration := Value; +end; + +procedure TElevateDBEngineProperties.SetServerDeadSessionInterval( + const Value: Integer); +begin + edbcomps.Engine.ServerDeadSessionInterval := Value; +end; + +procedure TElevateDBEngineProperties.SetServerDescription( + const Value: TEDBString); +begin + edbcomps.Engine.ServerDescription := Value; +end; + +procedure TElevateDBEngineProperties.SetServerEncryptedOnly( + const Value: Boolean); +begin + edbcomps.Engine.ServerEncryptedOnly := Value; +end; + +procedure TElevateDBEngineProperties.SetServerJobCategory( + const Value: TEDBString); +begin + edbcomps.Engine.ServerJobCategory := Value; +end; + +procedure TElevateDBEngineProperties.SetServerMaxDeadSessions( + const Value: Integer); +begin + edbcomps.Engine.ServerMaxDeadSessions := Value; +end; + +procedure TElevateDBEngineProperties.SetServerName( + const Value: TEDBString); +begin + edbcomps.Engine.ServerName := Value; +end; + +procedure TElevateDBEngineProperties.SetServerPort(const Value: Integer); +begin + edbcomps.Engine.ServerPort := Value; +end; + +procedure TElevateDBEngineProperties.SetServerRunJobs( + const Value: Boolean); +begin + edbcomps.Engine.ServerRunJobs := Value; +end; + +procedure TElevateDBEngineProperties.SetServerSessionTimeout( + const Value: Integer); +begin + edbcomps.Engine.ServerSessionTimeout := Value; +end; + +procedure TElevateDBEngineProperties.SetServerThreadCacheSize( + const Value: Integer); +begin + edbcomps.Engine.ServerThreadCacheSize := Value; +end; + +procedure TElevateDBEngineProperties.SetSignature(const Value: TEDBString); +begin + edbcomps.Engine.Signature := Value; +end; + +procedure TElevateDBEngineProperties.SetTableBlobExtension( + const Value: TEDBString); +begin + edbcomps.Engine.TableBlobExtension := Value; +end; + +procedure TElevateDBEngineProperties.SetTableExtension( + const Value: TEDBString); +begin + edbcomps.Engine.TableExtension := Value; +end; + +procedure TElevateDBEngineProperties.SetTableIndexExtension( + const Value: TEDBString); +begin + edbcomps.Engine.TableIndexExtension := Value; +end; + +procedure TElevateDBEngineProperties.SetTempTablesPath( + const Value: TEDBString); +begin + edbcomps.Engine.TempTablesPath := Value; +end; + +exports + GetDriverObject name func_GetDriverObject; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + gEngineProperties := TElevateDBEngineProperties.Create; +finalization + gEngineProperties := nil; + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAFIBDriver.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAFIBDriver.pas new file mode 100644 index 0000000..19d9a46 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAFIBDriver.pas @@ -0,0 +1,681 @@ +unit uDAFIBDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up +{ platform: Win32 +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ENDIF MSWINDOWS} +{$IFDEF LINUX} +{$I ../DataAbstract.inc} +{$ENDIF LINUX} + +{$R DataAbstract_FIBDriver_Glyphs.res} + +{.$DEFINE MANUAL_STARTTRANSACTION} +interface + +uses + Classes, DB, uDAEngine, uDAInterfaces, uDAIBInterfaces, FIBDatabase, + uROClasses, pFIBDatabase, FIBQuery, pFIBQuery, pFIBStoredProc, uDAUtils, + FIBDataSet, ibase, FIBSQLMonitor; + +type + { TDAFIBDriver } + TDAFIBDriver = class(TDADriverReference) + end; + + { TFIBConnection } + TFIBConnection = class(TDAConnectionWrapper) + private + fDatabase: TpFIBDatabase; + fTransaction: TFIBTransaction; + + protected + function GetConnected: Boolean; override; + procedure SetConnected(Value: boolean); override; + + public + constructor Create(AOwner: TComponent); override; + + property Database: TpFIBDatabase read fDatabase; + property Transaction: TFIBTransaction read fTransaction; + end; + + { TDAEFIBDriver } + TDAEFIBDriver = class(TDAIBDriver) + private + fFIBTraceOptions: TFIBTraceFlags; + fTraceCallback: TDALogTraceEvent; + fMonitor: TFIBSQLMonitor; + procedure OnTrace(EventText: string; EventTime: TDateTime); + protected + function GetConnectionClass: TDAEConnectionClass; override; + procedure CustomizeConnectionObject(aConnection: TDAEConnection); override; + procedure DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); override; + + // IDADriver + function GetDriverID: string; override; + function GetDescription: string; override; + public + end; + + { TDAEFIBConnection } + TDAEFIBConnection = class(TDAIBConnection, IDAInterbaseConnection, IDAIBTransactionAccess, IDAIBConnectionProperties, IDAUseGenerators, IDAFileBasedDatabase) + private + fConnection: TFIBConnection; + procedure IntOpen; + protected + + // IIBTransactionAccess + function GetTransaction: TObject; safecall; + + procedure Commit; safecall; + procedure CommitRetaining; safecall; + procedure Rollback; safecall; + procedure RollbackRetaining; safecall; + + // IIBConnectionProperties + function GetRole: string; safecall; + procedure SetRole(const Value: string); safecall; + function GetSQLDialect: integer; override; safecall; + procedure SetSQLDialect(Value: integer); safecall; + function GetCharset: string; safecall; + procedure SetCharset(const Value: string); safecall; + + // IDAConnection + function CreateCustomConnection: TCustomConnection; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + public + end; + + { TDAEFIBQuery } + TDAEFIBQuery = class(TDAEDataset, IDAMustSetParams) + private + protected + function DoGetRecordCount: integer; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure ClearParams; override; + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: boolean); override; + procedure RefreshParams; override; + procedure DoSetActive(Value: Boolean); override; + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + { TDAEFIBStoredProcedure } + TDAEFIBStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + private + FSP: TpFIBStoredProc; + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function DoExecute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function Execute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses SysUtils, uDADriverManager, uDARes, + pFIBProps; + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAFIBDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAEFIBDriver.Create(nil); + result := _driver; +end; + + +{ TFIBConnection } + +constructor TFIBConnection.Create(AOwner: TComponent); +begin + inherited; + + fDatabase := TpFIBDatabase.Create(Self); + fTransaction := TFIBTransaction.Create(Self); + + fDatabase.UseLoginPrompt := FALSE; + fDatabase.DefaultTransaction := fTransaction; +end; + +function TFIBConnection.GetConnected: Boolean; +begin + result := fDatabase.Connected +end; + +procedure TFIBConnection.SetConnected(Value: boolean); +begin + // This first check is required. + // I think there's a bug in the FIB destroying sequence and the notification. TCustomConnection gets to this point *after* + // the owned components are destroyed. Only happens with FIB... + + if (csDestroying in ComponentState) then Exit; + fDatabase.Connected := Value +end; + +{ TDAEFIBConnection } + +procedure TDAEFIBConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +begin + inherited; + + fConnection.Database.SQLDialect := 3; + with aConnStrParser do begin + if (Self.UserID <> '') then + fConnection.Database.ConnectParams.UserName := Self.UserID + else + fConnection.Database.ConnectParams.UserName := UserID; + + if (Self.Password <> '') then + fConnection.Database.ConnectParams.Password := Self.Password + else + fConnection.Database.ConnectParams.Password := Password; + + if Server <> '' then + fConnection.Database.DatabaseName := Server + ':' + Database + else + fConnection.Database.DatabaseName := Database; + + if AuxParams['Dialect'] <> '' then + fConnection.Database.SQLDialect := StrtoInt(AuxParams['Dialect']) + else if AuxParams['SQLDialect'] <> '' then + fConnection.Database.SQLDialect := StrtoInt(AuxParams['SQLDialect']); + + if AuxParams['Role'] <> '' then + fConnection.Database.ConnectParams.RoleName := AuxParams['Role']; + + if AuxParams['Charset'] <> '' then + SetCharset(AuxParams['Charset']); + + end; +end; + +function TDAEFIBConnection.DoBeginTransaction: integer; +begin + result := -1; + fConnection.Database.DefaultTransaction.StartTransaction; +end; + +procedure TDAEFIBConnection.DoCommitTransaction; +begin + fConnection.Database.DefaultTransaction.Commit; +end; + +function TDAEFIBConnection.CreateCustomConnection: TCustomConnection; +begin + fConnection := TFIBConnection.Create(nil); + result := fConnection; +end; + +function TDAEFIBConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEFIBQuery +end; + +function TDAEFIBConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEFIBStoredProcedure +end; + +function TDAEFIBConnection.GetTransaction: TObject; +begin + result := fConnection.fTransaction; +end; + +procedure TDAEFIBConnection.DoRollbackTransaction; +begin + fConnection.Database.DefaultTransaction.Rollback; +end; + +function TDAEFIBConnection.GetRole: string; +begin + result := fConnection.Database.ConnectParams.RoleName; +end; + +function TDAEFIBConnection.GetSQLDialect: integer; +begin + result := fConnection.Database.SQLDialect +end; + +function TDAEFIBConnection.GetCharset: string; +begin + result := fConnection.Database.ConnectParams.CharSet +end; + +procedure TDAEFIBConnection.SetRole(const Value: string); +begin + fConnection.Database.ConnectParams.RoleName := Value +end; + +procedure TDAEFIBConnection.SetSQLDialect(Value: integer); +begin + fConnection.Database.SQLDialect := Value +end; + +procedure TDAEFIBConnection.SetCharset(const Value: string); +begin + fConnection.Database.ConnectParams.CharSet := Value; +end; + +procedure TDAEFIBConnection.Commit; +begin + fConnection.fTransaction.Commit +end; + +procedure TDAEFIBConnection.CommitRetaining; +begin + fConnection.fTransaction.CommitRetaining +end; + +procedure TDAEFIBConnection.Rollback; +begin + fConnection.fTransaction.Rollback +end; + +procedure TDAEFIBConnection.RollbackRetaining; +begin + fConnection.fTransaction.RollbackRetaining +end; + +function TDAEFIBConnection.DoGetInTransaction: boolean; +begin + result := fConnection.fTransaction.InTransaction +end; + +procedure TDAEFIBConnection.IntOpen; +begin + {$IFNDEF MANUAL_STARTTRANSACTION} + if not fConnection.Connected then fConnection.Open; + if not fConnection.Transaction.InTransaction then fConnection.Transaction.StartTransaction; + {$ENDIF} +end; + +{ TDAEFIBDriver } + +procedure TDAEFIBDriver.CustomizeConnectionObject(aConnection: TDAEConnection); +begin + // 25/04/06 13:05 Donald Shimoda . To do. + //TDAEFIBConnection(aConnection).fConnection.Database.TraceFlags := fIBTraceOptions; +end; + +procedure TDAEFIBDriver.DoSetTraceOptions(TraceActive: boolean; + TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); +begin + inherited; + + if TraceActive then begin + if (fMonitor = nil) then fMonitor := TFIBSQLMonitor.Create(Self); + + fMonitor.Active := False; + fMonitor.OnSQL := OnTrace; + + fFIBTraceOptions := []; + if (toPrepare in TraceOptions) then fFIBTraceOptions := fFIBTraceOptions + [tfQPrepare]; + if (toExecute in TraceOptions) then fFIBTraceOptions := fFIBTraceOptions + [tfQExecute]; + if (toFetch in TraceOptions) then fFIBTraceOptions := fFIBTraceOptions + [tfQFetch]; + if (toConnect in TraceOptions) then fFIBTraceOptions := fFIBTraceOptions + [tfConnect]; + if (toTransact in TraceOptions) then fFIBTraceOptions := fFIBTraceOptions + [tfTransact]; + if (toService in TraceOptions) then fFIBTraceOptions := fFIBTraceOptions + [tfService]; + if (toMisc in TraceOptions) then fFIBTraceOptions := fFIBTraceOptions + [tfMisc]; + + fTraceCallBack := Callback; + + fMonitor.TraceFlags := fFIBTraceOptions; + fMonitor.Active := True; + end + else begin + FreeAndNIL(fMonitor); + fTraceCallback := nil; + end; +end; + + +function TDAEFIBDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEFIBConnection; +end; + +function TDAEFIBDriver.GetDescription: string; +begin + result := 'FIBPlus Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; +end; + +function TDAEFIBDriver.GetDriverID: string; +begin + result := 'FIB'; +end; + +procedure CreateParams(FQuery: TFIBQuery; Pars: TDAParamCollection; CreateOutputParams: Boolean = False); +var + i: Integer; + par: TDAParam; + sqPar: TFIBXSQLVAR; +begin + if FQuery.Database.Handle = nil then + FQuery.Database.Open; + + if not FQuery.Prepared then + FQuery.Prepare; + pars.Clear; + for i := 0 to FQuery.ParamCount -1 do begin + sqpar := FQuery.Params[i]; + if sqpar.IsParam then begin + par := pars.Add; + par.Name := sqPar.Name; + par.ParamType:= daptInput; + case sqpar.SQLType and not 1 of + SQL_VARYING, SQL_TEXT: + begin + if sqPar.CharacterSet = 'UNICODE_FSS' then + par.DataType := datWideString + else + par.DataType := datString; + par.Size := sqPar.Size; + end; + SQL_DOUBLE, SQL_FLOAT,SQL_D_FLOAT:par.DataType := datFloat; + SQL_SHORT, SQL_LONG: begin + if sqPar.Scale <> 0 then + par.DataType := datFloat + else + par.DataType := datInteger; + end; + SQL_INT64: begin + if sqPar.Scale <> 0 then + par.DataType := datFloat + else + par.DataType := datLargeInt; + end; + SQL_TIMESTAMP, + SQL_TYPE_TIME, + SQL_TYPE_DATE: par.DataType := datDateTime; + SQL_BLOB: + if sqPar.SQLSubtype = 1 then + par.DataType := datMemo + else + par.DataType := datBlob; + SQL_BOOLEAN: par.DataType := datBoolean; + else + par.DataType := datUnknown; + end; + end; + end; + + if CreateOutputParams then + for i := 0 to FQuery.FieldCount -1 do begin + sqpar := FQuery.Fields[i]; + par := pars.Add; + par.Name := sqPar.Name; + par.ParamType:= daptOutput; + case sqpar.SQLType and not 1 of + SQL_VARYING, SQL_TEXT: + begin + if sqPar.CharacterSet = 'UNICODE_FSS' then + par.DataType := datWideString + else + par.DataType := datString; + par.Size := sqPar.Size; + end; + SQL_DOUBLE, SQL_FLOAT,SQL_D_FLOAT:par.DataType := datFloat; + SQL_SHORT, SQL_LONG: begin + if sqPar.Scale <> 0 then + par.DataType := datFloat + else + par.DataType := datInteger; + end; + SQL_INT64: begin + if sqPar.Scale <> 0 then + par.DataType := datFloat + else + par.DataType := datLargeInt; + end; + SQL_TIMESTAMP, + SQL_TYPE_TIME, + SQL_TYPE_DATE: par.DataType := datDateTime; + SQL_BLOB: + if sqPar.SQLSubtype = 1 then + par.DataType := datMemo + else + par.DataType := datBlob; + SQL_BOOLEAN: par.DataType := datBoolean; + else + par.DataType := datUnknown; + end; + end; +end; + + +{ TDAEFIBQuery } + + +procedure TDAEFIBDriver.OnTrace(EventText: string; EventTime: TDateTime); +begin + if Assigned(fTraceCallback) then fTraceCallback(fMonitor, EventText, 0); +end; + +procedure TDAEFIBQuery.ClearParams; +begin + inherited; + TFIBDataSet(Dataset).Params.ClearValues; +end; + +{ TDAEFIBStoredProcedure } + +function TDAEFIBStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + FreeAndNil(FSP); + FSP := TpFIBStoredProc.Create(nil); + FSP.Database := TDAEFIBConnection(aConnection).fConnection.Database; + result := nil; +end; + +function TDAEFIBStoredProcedure.Execute: integer; +begin + TDAEFIBConnection(Connection).IntOpen; + if FSP.Database.Handle = nil then FSP.Database.Open; + + SetParamValues(GetParams); + Result:= DoExecute; + GetParamValues(GetParams); +end; + +procedure TDAEFIBStoredProcedure.SetParamValues(AParams: TDAParamCollection); +var + i: integer; + sqPar: TFIBXSQLVAR; +begin + for i := 0 to AParams.Count - 1 do begin + if (AParams[i].ParamType in [daptInput, daptInputOutput, daptUnknown]) then begin + sqPar:= FSP.ParamByName(AParams[i].Name); + if (sqPar <> nil) and sqPar.IsParam then sqPar.Value:=AParams[i].Value; + end; + end; +end; + +procedure TDAEFIBStoredProcedure.GetParamValues(AParams: TDAParamCollection); +var + i: integer; + sqPar: TFIBXSQLVAR; +begin + for i := 0 to AParams.Count - 1 do begin + if (AParams[i].ParamType in [daptOutput, daptInputOutput, daptResult]) then begin + sqPar:= FSP.FieldByName(AParams[i].Name); + if (sqPar <> nil) then AParams[i].Value:=sqPar.Value; + end; + end; +end; + + +function TDAEFIBStoredProcedure.GetStoredProcedureName: string; +begin + result := FSP.StoredProcName; +end; + +procedure TDAEFIBStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TDAEFIBConnection(Connection).IntOpen; + FSP.StoredProcName := Name; +end; + +procedure TDAEFIBStoredProcedure.RefreshParams; +begin + TDAEFIBConnection(Connection).IntOpen; + CreateParams(FSP, GetParams,True); +end; + +exports + GetDriverObject name func_GetDriverObject; + +function TDAEFIBStoredProcedure.DoExecute: integer; +begin + FSP.ExecQuery; + result := FSP.RowsAffected; +end; + +{ TDAEFIBQuery } + +function TDAEFIBQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +var + ds: TFIBDataSet; +begin + ds := TFIBDataSet.Create(nil); + ds.Database := TDAEFIBConnection(aConnection).fConnection.Database; + ds.Transaction := TDAEFIBConnection(aConnection).fConnection.Transaction; + ds.PrepareOptions := ds.PrepareOptions + [psUseLargeIntField]; + result := ds; +end; + +function TDAEFIBQuery.DoExecute: integer; +begin + TDAEFIBConnection(Connection).IntOpen; + TFIBDataSet(Dataset).QSelect.ExecQuery; + result := TFIBDataSet(Dataset).QSelect.RowsAffected; +end; + +function TDAEFIBQuery.DoGetRecordCount: integer; +begin + result := TFIBDataSet(DAtaset).QSelect.RecordCount; +end; + +function TDAEFIBQuery.DoGetSQL: string; +begin + result := TFIBDataSet(DAtaset).QSelect.SQL.Text; +end; + +procedure TDAEFIBQuery.DoPrepare(Value: boolean); +begin + TDAEFIBConnection(Connection).IntOpen; + if Value then TFIBDataSet(DAtaset).QSelect.Prepare; +end; + +procedure TDAEFIBQuery.DoSetActive(Value: Boolean); +begin + TDAEFIBConnection(Connection).IntOpen; + if Value then begin + if not TFIBDataSet(Dataset).Database.Connected then + TFIBDataSet(Dataset).Database.Connected := true; + end; + inherited DoSetActive(Value); +end; + +procedure TDAEFIBQuery.DoSetSQL(const Value: string); +begin + TFIBDataSet(DAtaset).QSelect.SQL.Text := Value; +end; + + + +procedure TDAEFIBQuery.RefreshParams; +begin + CreateParams(TFIBDataSet(Dataset).QSelect, GetParams); +end; + + +procedure TDAEFIBQuery.SetParamValues(AParams: TDAParamCollection); +var + i: integer; + _par: TDAParam; +begin + for i := 0 to TFIBDataSet(Dataset).ParamCount - 1 do begin + _Par := AParams.ParamByName(TFIBDataSet(Dataset).Params[i].Name); + if (_Par.ParamType in [daptInput, daptInputOutput, daptUnknown]) then + if (TFIBDataSet(Dataset).Params[i].IsParam) then + TFIBDataSet(Dataset).Params[i].Value := _Par.Value; + end; +end; + +procedure TDAEFIBQuery.GetParamValues(AParams: TDAParamCollection); +var + i: integer; + _Par: TDAParam; +begin + for i := 0 to TFIBDataSet(Dataset).ParamCount - 1 do begin + _Par := AParams.ParamByName(TFIBDataSet(Dataset).Params[i].Name); + if (_Par.ParamType in [daptOutput, daptInputOutput, daptResult]) then + _Par.Value := TFIBDataSet(Dataset).Params[i].Value; + end; +end; + + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAIBDACDriver.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAIBDACDriver.pas new file mode 100644 index 0000000..2f8f148 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAIBDACDriver.pas @@ -0,0 +1,562 @@ +unit uDAIBDACDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up +{ platform: Win32 +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$I ..\DataAbstract.inc} + +{$R DataAbstract_IBDACDriver_Glyphs.res} + +interface + +uses + DB, Classes, uDAEngine, uDAInterfaces, uDAADOInterfaces, uROClasses, + DBAccess, IBC, DASQLMonitor, + IBCSQLMonitor, Variants, uDAUtils, uDAIBInterfaces; + +type { TDAIBDACDriver } + TDAIBDACDriver = class(TDADriverReference) + end; + + { TDAEIBDACDriver } + TDAEIBDACDriver = class(TDAIBDriver) + private + fMonitor: TIBCSQLMonitor; + fTraceCallBack: TDALogTraceEvent; + procedure OnIBDACTrace(Sender: TObject; Text: string; Flag: TDATraceFlag); + protected + function GetConnectionClass: TDAEConnectionClass; override; + procedure DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); override; + procedure CustomizeConnectionObject(aConnection: TDAEConnection); override; + // IDADriver + function GetDriverID: string; override; + function GetDescription: string; override; + end; + + { TDAEIBDACConnection } + TDAEIBDACConnection = class(TDAIBConnection, IDAInterbaseConnection, IDAIBTransactionAccess, IDAIBConnectionProperties, IDAUseGenerators, IDAFileBasedDatabase) + private + fConnection: TIBCConnection; + protected + // IIBTransactionAccess + function GetTransaction: TObject; safecall; + + procedure Commit; safecall; + procedure CommitRetaining; safecall; + procedure Rollback; safecall; + procedure RollbackRetaining; safecall; + + // IIBConnectionProperties + function GetRole: string; safecall; + procedure SetRole(const Value: string); safecall; + function GetSQLDialect: integer;override; safecall; + procedure SetSQLDialect(Value: integer); safecall; + function GetCharset: string; safecall; + procedure SetCharset(const Value: string); safecall; + + + // IDAConnection + function CreateCustomConnection: TCustomConnection; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + end; + + { TDAEIBDACQuery } + TDAEIBDACQuery = class(TDAEDataset, IDAMustSetParams) + private + + protected + function DoGetRecordCount: integer; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure ClearParams; override; + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: boolean); override; + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + public + end; + + { TDAEIBDACStoredProcedure } + TDAEIBDACStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: Integer; override; + function Execute: integer; override; + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses + SysUtils, + uDADriverManager, uDARes, + uROBinaryHelpers; + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAIBDACDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin +{$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; +{$ENDIF} + if (_driver = nil) then _driver := TDAEIBDACDriver.Create(nil); + result := _driver; +end; + +{$I uDACRLabsUtils.inc} + +{ TDAEIBDACConnection } + +procedure TDAEIBDACConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +begin + inherited; + SetSQLDialect(3); + with aConnStrParser do begin + if (Self.UserID <> '') then + fConnection.Username := Self.UserID + else + fConnection.Username := UserID; + + if (Self.Password <> '') then + fConnection.Password := Self.Password + else + fConnection.Password := Password; + + if Server <> '' then + fConnection.Database := Server + ':' + Database + else + fConnection.Database := Database; + + if AuxParams['Dialect'] <> '' then + SetSQLDialect(StrToInt(AuxParams['Dialect'])) + else if AuxParams['SQLDialect'] <> '' then + SetSQLDialect(StrToInt(AuxParams['SQLDialect'])); + + if AuxParams['Role'] <> '' then SetRole(AuxParams['Role']); + + if AuxParams['Charset'] <> '' then SetCharset(AuxParams['Charset']); + end; +end; + +function TDAEIBDACConnection.DoBeginTransaction: integer; +begin + result := -1; + fConnection.StartTransaction; +end; + +procedure TDAEIBDACConnection.DoCommitTransaction; +begin + fConnection.Commit; +end; + +function TDAEIBDACConnection.CreateCustomConnection: TCustomConnection; +begin + fConnection := TIBCConnection.Create(nil); + fConnection.LoginPrompt := FALSE; + + result := fConnection; +end; + +function TDAEIBDACConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEIBDACQuery; +end; + +function TDAEIBDACConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEIBDACStoredProcedure; +end; + +(*function SqlServerToDAType(aType:integer):TDADataType; +begin + case aType of + 34:result := datBlob; + 35:result := datMemo; + 36:result := datString; //uniqueidentifier + 48:result := datInteger; + 52:result := datInteger; + 56:result := datInteger; + 58:result := datDateTime; + 59:result := datFloat; + 60:result := datCurrency; + 61:result := datDateTime; + 62:result := datFloat; + //98 sql_variant + 99:result := datMemo;// ntext + 104:result := datBoolean; + 106:result := datFloat; + 108:result := datFloat; + 122:result := datCurrency; + 127:result := datInteger; + 165:result := datBlob; // varbinary + 167:result := datString; + 173:result := datBlob; // binary + 175:result := datString; // char + 189:result := datBlob; // timestamp + 231:result := datString; // nvarchar + 239:result := datString; //nchar + 240:result := datDateTime; + 241:result := datBlob;// xml + else result := datUnknown; + end; +end; + +procedure TDAEIBDACConnection.DoGetStoredProcedureParams(const aStoredProcedureName: string; out Params: TDAParamCollection); +var + ds : TIBCQuery; + lID:string; +begin + ds := TIBCQuery.Create(NIL); + try + + ds.Connection := fConnection; + ds.SQL.Text := 'select * from sysobjects where xtype=''P'' and name='''+aStoredProcedureName+''''; + ds.Open; + try + if ds.EOF then RaiseError('Stored Procedure %s not found in database',[aStoredProcedureName]); + lID := ds.FieldbyName('id').AsString; + finally + ds.Close(); + end; + + ds.SQL.Text := 'select * from sys.parameters where object_id='''+lID+''' ORDER BY parameter_id'; + ds.Open; + try + Params := TDAParamCollection.Create(nil); + while not ds.Eof do begin + with Params.Add() do begin + Name := ds.FieldByName('name').AsString; + + DataType := SqlServerToDAType(ds.FieldByName('system_type_id').AsInteger); + Size := ds.FieldByName('max_length').AsInteger; + + {if ds.FieldByName('has_default_value').AsBoolean then + DefaultValue := ds.FieldByName('default_Value').AsInteger;} + + if ds.FieldByName('is_output').AsBoolean then + ParamType := daptOutput + else + ParamType := daptInput; + + end; + ds.Next(); + end; + finally + Close(); + end; + + finally + ds.Free; + end; +end;*) + +procedure TDAEIBDACConnection.DoRollbackTransaction; +begin + fConnection.Rollback; +end; + +function TDAEIBDACConnection.DoGetInTransaction: boolean; +begin + result := fConnection.InTransaction +end; + +procedure TDAEIBDACConnection.Commit; +begin + fConnection.Commit; +end; + +procedure TDAEIBDACConnection.CommitRetaining; +begin + fConnection.CommitRetaining; +end; + +function TDAEIBDACConnection.GetCharset: string; +begin + result := fConnection.Options.Charset; +end; + +function TDAEIBDACConnection.GetRole: string; +begin + Result := fConnection.Options.Role; +end; + +function TDAEIBDACConnection.GetSQLDialect: integer; +begin + Result := fConnection.SQLDialect; +end; + +function TDAEIBDACConnection.GetTransaction: TObject; +begin + Result := fConnection.DefaultTransaction; +end; + +procedure TDAEIBDACConnection.Rollback; +begin + fConnection.Rollback; +end; + +procedure TDAEIBDACConnection.RollbackRetaining; +begin + fConnection.RollbackRetaining; +end; + +procedure TDAEIBDACConnection.SetCharset(const Value: string); +begin + fConnection.Options.Charset := Value; +end; + +procedure TDAEIBDACConnection.SetRole(const Value: string); +begin + fConnection.Options.Role := Value; +end; + +procedure TDAEIBDACConnection.SetSQLDialect(Value: integer); +begin + fConnection.SQLDialect := Value; +end; + +{ TDAEIBDACDriver } + +function TDAEIBDACDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEIBDACConnection; +end; + +function TDAEIBDACDriver.GetDescription: string; +begin + result := 'Core Lab IBDAC Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; +end; + +function TDAEIBDACDriver.GetDriverID: string; +begin + result := 'IBDAC'; +end; + +procedure TDAEIBDACDriver.OnIBDACTrace(Sender: TObject; Text: string; Flag: TDATraceFlag); +begin + inherited; + // if Assigned(fTraceCallback) then fTraceCallback(Sender, Text, integer(Flag)); +end; + +procedure TDAEIBDACDriver.DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); +var + IBDACopts: TDATraceFlags; +begin + inherited; + exit; + if TraceActive then begin + if (fMonitor = nil) then fMonitor := TIBCSQLMonitor.Create(Self); + + fMonitor.Active := FALSE; + fMonitor.OnSQL := OnIBDACTrace; + + IBDACopts := []; + if (toPrepare in TraceOptions) then IBDACopts := IBDACopts + [tfQPrepare]; + if (toExecute in TraceOptions) then IBDACopts := IBDACopts + [tfQExecute]; + if (toFetch in TraceOptions) then IBDACopts := IBDACopts + [tfQFetch]; + if (toError in TraceOptions) then IBDACopts := IBDACopts + [tfError]; + if (toStmt in TraceOptions) then IBDACopts := IBDACopts + [tfStmt]; + if (toConnect in TraceOptions) then IBDACopts := IBDACopts + [tfConnect]; + if (toTransact in TraceOptions) then IBDACopts := IBDACopts + [tfTransact]; + if (toBlob in TraceOptions) then IBDACopts := IBDACopts + [tfBlob]; + if (toService in TraceOptions) then IBDACopts := IBDACopts + [tfService]; + if (toMisc in TraceOptions) then IBDACopts := IBDACopts + [tfMisc]; + if (toParams in TraceOptions) then IBDACopts := IBDACopts + [tfParams]; + + fTraceCallBack := Callback; + + fMonitor.TraceFlags := IBDACopts; + fMonitor.Active := TRUE; + end + else begin + FreeAndNIL(fMonitor); + fTraceCallback := nil; + end; +end; + +procedure TDAEIBDACDriver.CustomizeConnectionObject( + aConnection: TDAEConnection); +begin + // +end; + +{ TDAEIBDACQuery } + +procedure TDAEIBDACQuery.ClearParams; +begin + inherited; + TIBCQuery(Dataset).Params.Clear; +end; + +function TDAEIBDACQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TIBCQuery.Create(nil); + TIBCQuery(result).FetchAll := True; //for preventing creating an additional session when you call StartTransaction (an known issue of OLEDB) + TIBCQuery(result).Unidirectional := True; + TIBCQuery(result).ReadOnly := TRUE; + TIBCQuery(result).Connection := TDAEIBDACConnection(aConnection).fConnection; +end; + +function TDAEIBDACQuery.DoExecute: integer; +begin + TIBCQuery(Dataset).ExecSQL; + result := TIBCQuery(Dataset).RowsAffected; +end; + +function TDAEIBDACQuery.DoGetRecordCount: integer; +begin + Result := TIBCQuery(Dataset).RecordCount; +end; + +function TDAEIBDACQuery.DoGetSQL: string; +begin + result := TIBCQuery(Dataset).SQL.Text; +end; + +procedure TDAEIBDACQuery.DoPrepare(Value: boolean); +begin + TIBCQuery(Dataset).Prepared := Value; +end; + +procedure TDAEIBDACQuery.DoSetSQL(const Value: string); +begin + TIBCQuery(Dataset).SQL.Text := Value; +end; + +procedure TDAEIBDACQuery.GetParamValues(AParams: TDAParamCollection); +var + I: Integer; + lParam: TIBCParam; +begin + for i := 0 to TIBCQuery(DataSet).Params.Count - 1 do begin + lParam:=TIBCQuery(DataSet).Params[i]; + if (lParam.ParamType in [ptOutput, ptInputOutput, ptResult]) then + AParams.ParamByName(lParam.Name).Value := lParam.Value; + end; +end; + +procedure TDAEIBDACQuery.SetParamValues(AParams: TDAParamCollection); +begin + WriteCrLabsParamValues(AParams, TIBCQuery(Dataset).Params, true); +end; + +{ TDAEIBDACStoredProcedure } + +function TDAEIBDACStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + result := TIBCStoredProc.Create(nil); + TIBCStoredProc(result).Connection := TDAEIBDACConnection(aConnection).fConnection; +end; + +function TDAEIBDACStoredProcedure.Execute: integer; +begin + TIBCStoredProc(Dataset).Prepare; + SetParamValues(GetParams); + Result:=DoExecute; + GetParamValues(GetParams); +end; + + +procedure TDAEIBDACStoredProcedure.GetParamValues(AParams: TDAParamCollection); +var + i: Integer; + lParam: TIBCParam; +begin + for i := 0 to TIBCStoredProc(DataSet).Params.Count - 1 do begin + lParam:=TIBCStoredProc(DataSet).Params[i]; + if (lParam.ParamType in [ptOutput, ptInputOutput, ptResult]) then + AParams.ParamByName(lParam.Name).Value := lParam.Value; + end; +end; + +function TDAEIBDACStoredProcedure.GetStoredProcedureName: string; +begin + result := TIBCStoredProc(Dataset).StoredProcName; +end; + +procedure TDAEIBDACStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TIBCStoredProc(Dataset).StoredProcName := Name; +end; + +procedure TDAEIBDACStoredProcedure.RefreshParams; +begin + TIBCStoredProc(Dataset).Prepare; + RefreshParamsStd(TIBCStoredProc(Dataset).Params); +end; + +procedure TDAEIBDACStoredProcedure.SetParamValues(AParams: TDAParamCollection); +begin + WriteCrLabsParamValues(AParams, TIBCStoredProc(Dataset).Params); +end; + +exports + GetDriverObject name func_GetDriverObject; + +function TDAEIBDACStoredProcedure.DoExecute: Integer; +begin + TIBCStoredProc(Dataset).ExecProc; + result := TIBCStoredProc(Dataset).RowsAffected; +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); + +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAIBODriver.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAIBODriver.pas new file mode 100644 index 0000000..a1a34af --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAIBODriver.pas @@ -0,0 +1,526 @@ +unit uDAIBODriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up, Kylix 3 and up +{ platform: Win32, Linux +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$I ..\DataAbstract.inc} + +{$R DataAbstract_IBODriver_Glyphs.res} + +interface + +uses DB, Classes, uDAEngine, uDAInterfaces, uDAIBInterfaces, uROClasses, + IBODataset, IB_Components, IB_Monitor, uDAUtils; + +type + { TDAIBODriver } + TDAIBODriver = class(TDADriverReference) + end; + + { TIBOConnection } + TIBOConnection = class(TDAConnectionWrapper) + private + fDatabase: TIBODatabase; + + protected + function GetConnected: Boolean; override; + procedure SetConnected(Value: boolean); override; + + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property Database: TIBODatabase read fDatabase; + end; + + { TDAEIBODriver } + TDAEIBODriver = class(TDAIBDriver) + private + fTraceCallback: TDALogTraceEvent; + fMonitor: TIB_Monitor; + procedure OnIBOTrace(Sender: TObject; const NewString: string); + protected + function GetConnectionClass: TDAEConnectionClass; override; + + // IDADriver + function GetDriverID: string; override; + function GetDescription: string; override; + + procedure DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; + Callback: TDALogTraceEvent); override; + + public + end; + + { TDAEIBOConnection } + TDAEIBOConnection = class(TDAIBConnection, IDAInterbaseConnection, IDAIBTransactionAccess, IDAIBConnectionProperties, IDAUseGenerators, + IDAFileBasedDatabase) + private + fConnection: TIBOConnection; + fSQLDialect: integer; // See TDAEIBOConnection.GetSQLDialect for more details + + protected + + // IIBTransactionAccess + function GetTransaction: TObject; safecall; + + procedure Commit; safecall; + procedure CommitRetaining; safecall; + procedure Rollback; safecall; + procedure RollbackRetaining; safecall; + + // IIBConnectionProperties + function GetRole: string; safecall; + procedure SetRole(const Value: string); safecall; + function GetSQLDialect: integer; override;safecall; + procedure SetSQLDialect(Value: integer); safecall; + function GetCharset: string; safecall; + procedure SetCharset(const Value: string); safecall; + + // IDAConnection + function CreateCustomConnection: TCustomConnection; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + public + end; + + { TDAEIBOQuery } + TDAEIBOQuery = class(TDAEDataset, IDAMustSetParams) + private + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure ClearParams; override; + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: boolean); override; + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + public + end; + + { TDAEIBOStoredProcedure } + TDAEIBOStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + private + + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: integer; override; + function Execute: integer; override; + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses SysUtils, uDADriverManager, uDARes, uROBinaryHelpers, Variants; + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAIBODriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAEIBODriver.Create(nil); + result := _driver; +end; + + + +{ TIBOConnection } + +constructor TIBOConnection.Create(AOwner: TComponent); +begin + inherited; + + fDatabase := TIBODatabase.Create(Self); + fDatabase.LoginPrompt := FALSE; +end; + +destructor TIBOConnection.Destroy; +begin + FreeAndNil(fDatabase); + inherited; +end; + +function TIBOConnection.GetConnected: Boolean; +begin + result := fDatabase.Connected +end; + +procedure TIBOConnection.SetConnected(Value: boolean); +begin + if fDatabase <> nil then fDatabase.Connected := Value; +end; + +{ TDAEIBOConnection } + +procedure TDAEIBOConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +begin + inherited; + + with aConnStrParser do begin + if (Self.UserID <> '') then + fConnection.Database.Username := Self.UserID + else + fConnection.Database.Username := UserID; + + if (Self.Password <> '') then + fConnection.Database.Password := Self.Password + else + fConnection.Database.Password := Password; + + if (Server <> '') then + fConnection.Database.DatabaseName := Server + ':' + Database + else + fConnection.Database.DatabaseName := Database; + + if AuxParams['Dialect'] <> '' then + SetSQLDialect(StrToInt(AuxParams['Dialect'])) + else if AuxParams['SQLDialect'] <> '' then + SetSQLDialect(StrToInt(AuxParams['SQLDialect'])); + + if AuxParams['Role'] <> '' then + SetRole(AuxParams['Role']); + + if AuxParams['Charset'] <> '' then + fConnection.Database.CharSet := AuxParams['Charset']; + + end; +end; + +function TDAEIBOConnection.DoBeginTransaction: integer; +begin + fConnection.Database.DefaultTransaction.StartTransaction; + result := -1; +end; + +procedure TDAEIBOConnection.DoCommitTransaction; +begin + fConnection.Database.DefaultTransaction.Commit; +end; + +function TDAEIBOConnection.CreateCustomConnection: TCustomConnection; +begin + fConnection := TIBOConnection.Create(nil); + fSQLDialect := fConnection.Database.SQLDialect; + result := fConnection; +end; + +function TDAEIBOConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEIBOQuery +end; + +function TDAEIBOConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEIBOStoredProcedure +end; + +function TDAEIBOConnection.GetTransaction: TObject; +begin + result := fConnection.Database.DefaultTransaction; +end; + +procedure TDAEIBOConnection.DoRollbackTransaction; +begin + fConnection.Database.DefaultTransaction.Rollback; +end; + +function TDAEIBOConnection.GetRole: string; +begin + result := fConnection.Database.SQLRole +end; + +function TDAEIBOConnection.GetSQLDialect: integer; +begin + // AleF: I modified this because somehow IBO returned 3 even after setting this value to 2 or else. + // Somewhere in the IBO code this calue gets reset. This is a work around that basically makes QuoteIdentifier work correctly + + result := fSQLDialect; // fConnection.Database.SQLDialect; +end; + +procedure TDAEIBOConnection.SetSQLDialect(Value: integer); +begin + fSQLDialect := Value; + fConnection.Database.SQLDialect := Value; +end; + +procedure TDAEIBOConnection.SetRole(const Value: string); +begin + fConnection.Database.SQLRole := Value +end; + +procedure TDAEIBOConnection.Commit; +begin + fConnection.Database.Commit +end; + +procedure TDAEIBOConnection.CommitRetaining; +begin + fConnection.Database.CommitRetaining +end; + +procedure TDAEIBOConnection.Rollback; +begin + fConnection.Database.Rollback +end; + +procedure TDAEIBOConnection.RollbackRetaining; +begin + fConnection.Database.RollbackRetaining +end; + +function TDAEIBOConnection.DoGetInTransaction: boolean; +begin + result := fConnection.Database.InTransaction +end; + +function TDAEIBOConnection.GetCharset: string; +begin + result := fConnection.Database.CharSet; +end; + +procedure TDAEIBOConnection.SetCharset(const Value: string); +begin + fConnection.Database.CharSet := Value; +end; + +{ TDAEIBODriver } + +function TDAEIBODriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEIBOConnection +end; + +function TDAEIBODriver.GetDescription: string; +begin + result := 'Interbase Objects (IBO) Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; +end; + +function TDAEIBODriver.GetDriverID: string; +begin + result := 'IBO'; +end; + +procedure TDAEIBODriver.OnIBOTrace(Sender: TObject; const NewString: string); +begin + if Assigned(fTraceCallback) then fTraceCallback(fMonitor, NewString, 0); +end; + +procedure TDAEIBODriver.DoSetTraceOptions(TraceActive: boolean; TraceOptions: + TDATraceOptions; Callback: TDALogTraceEvent); +begin + inherited; + + if TraceActive then begin + if (fMonitor = nil) then fMonitor := TIB_Monitor.Create(Self); + + fMonitor.Enabled := FALSE; + fMonitor.OnMonitorOutputItem := OnIBOTrace; + fMonitor.IncludeTimeStamp := True; + fMonitor.ItemStart := ''; + fMonitor.ItemEnd := ''; + fMonitor.NewLineText := ','; + + FMonitor.MonitorGroups := []; + FMonitor.StatementGroups := []; + + if (toPrepare in TraceOptions) then begin + FMonitor.MonitorGroups := FMonitor.MonitorGroups + [mgStatement]; + FMonitor.StatementGroups := FMonitor.StatementGroups + [sgPrepare, sgAllocate, sgStatementInfo, sgDescribe]; + end; + + if (toExecute in TraceOptions) then begin + FMonitor.MonitorGroups := FMonitor.MonitorGroups + [mgStatement]; + FMonitor.StatementGroups := FMonitor.StatementGroups + [sgExecute]; + end; + + if (toFetch in TraceOptions) then begin + FMonitor.MonitorGroups := FMonitor.MonitorGroups + [mgStatement, mgRow]; + FMonitor.StatementGroups := FMonitor.StatementGroups + [sgDescribe, sgStatementInfo]; + end; + + if (toStmt in TraceOptions) then begin + FMonitor.MonitorGroups := FMonitor.MonitorGroups + [mgStatement]; + FMonitor.StatementGroups := FMonitor.StatementGroups + [sgDescribe, sgStatementInfo]; + end; + + if (toConnect in TraceOptions) then FMonitor.MonitorGroups := FMonitor.MonitorGroups + [mgConnection]; + if (toTransact in TraceOptions) then FMonitor.MonitorGroups := FMonitor.MonitorGroups + [mgtransaction]; + + if (toBlob in TraceOptions) then FMonitor.MonitorGroups := FMonitor.MonitorGroups + [mgBlob]; + + if (toMisc in TraceOptions) then begin + FMonitor.MonitorGroups := FMonitor.MonitorGroups + [mgBlob, mgArray, mgClientTrace]; + FMonitor.StatementGroups := FMonitor.StatementGroups + [sgStatementInfo, sgServerCursor, sgServerCursor]; + end; + + fTraceCallBack := Callback; + + fMonitor.Enabled := TRUE; + end + else begin + FreeAndNIL(fMonitor); + fTraceCallback := nil; + end; +end; + +{ TDAEIBOQuery } + +procedure TDAEIBOQuery.ClearParams; +begin + inherited; + TIBOQuery(Dataset).Params.Clear; +end; + +function TDAEIBOQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TIBOQuery.Create(nil); + TIBOQuery(result).IB_Connection := TDAEIBOConnection(aConnection).fConnection.Database; + TIBOQuery(result).AutoFetchAll := TRUE; + TIBOQuery(result).RecordCountAccurate := TRUE; +end; + +function TDAEIBOQuery.DoExecute: integer; +begin + TIBOQuery(Dataset).ExecSQL; + result := TIBOQuery(Dataset).RowsAffected; +end; + +function TDAEIBOQuery.DoGetSQL: string; +begin + result := TIBOQuery(Dataset).SQL.Text +end; + +procedure TDAEIBOQuery.DoPrepare(Value: boolean); +begin + TIBOQuery(Dataset).Prepared := Value; +end; + +procedure TDAEIBOQuery.DoSetSQL(const Value: string); +begin + TIBOQuery(Dataset).SQL.Text := Value; +end; + +procedure TDAEIBOQuery.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TIBOQuery(Dataset).Params); +end; + +procedure TDAEIBOQuery.SetParamValues(AParams: TDAParamCollection); +var i: Integer; +begin + for i := 0 to AParams.Count - 1 do + if (VarType(AParams[i].Value) = varOleStr) and (AParams[i].Value = '') then + AParams[i].Value := Unassigned; + SetParamValuesStd(AParams, TIBOQuery(Dataset).Params); +end; + +{ TDAEIBOStoredProcedure } + +function TDAEIBOStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + result := TIBOStoredProc.Create(nil); + TIBOStoredProc(result).IB_Connection := TDAEIBOConnection(aConnection).fConnection.Database; +end; + +function TDAEIBOStoredProcedure.Execute: integer; +begin + with TIBOStoredProc(Dataset) do begin + Unprepare; + Prepare; + end; + + SetParamValues(GetParams); + Result := DoExecute; + GetParamValues(GetParams); +end; + +function TDAEIBOStoredProcedure.GetStoredProcedureName: string; +begin + result := TIBOStoredProc(Dataset).StoredProcName; +end; + +procedure TDAEIBOStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TIBOStoredProc(Dataset).StoredProcName := Name; +end; + +procedure TDAEIBOStoredProcedure.RefreshParams; +begin + // Apparently a bug in IBO requires to do so... Automatic gathering only works at runtime + TIBOStoredProc(Dataset).Prepare; + RefreshParamsStd(TIBOStoredProc(Dataset).Params); +end; + +procedure TDAEIBOStoredProcedure.SetParamValues(AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams, TIBOStoredProc(Dataset).Params); +end; + +procedure TDAEIBOStoredProcedure.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TIBOStoredProc(Dataset).Params); +end; + +exports + GetDriverObject name func_GetDriverObject; + +function TDAEIBOStoredProcedure.DoExecute: integer; +begin + TIBOStoredProc(Dataset).ExecProc; + result := TIBOStoredProc(Dataset).RowsAffected; +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAIBXDriver.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAIBXDriver.pas new file mode 100644 index 0000000..6513ac5 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAIBXDriver.pas @@ -0,0 +1,496 @@ +unit uDAIBXDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up +{ platform: Win32 +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ENDIF MSWINDOWS} +{$IFDEF LINUX} +{$I ../DataAbstract.inc} +{$ENDIF LINUX} + +{$R DataAbstract_IBXDriver_Glyphs.res} + +interface + +uses + Classes, DB, uDAEngine, uDAInterfaces, uDAIBInterfaces, IBDatabase, + uROClasses, IBQuery, IBStoredProc, IBSQLMonitor, IB, uDAUtils; + +type + { TDAIBXDriver } + TDAIBXDriver = class(TDADriverReference) + end; + + { TIBXConnection } + TIBXConnection = class(TDAConnectionWrapper) + private + fDatabase: TIBDatabase; + fTransaction: TIBTransaction; + + protected + function GetConnected: Boolean; override; + procedure SetConnected(Value: boolean); override; + + public + constructor Create(AOwner: TComponent); override; + + property Database: TIBDatabase read fDatabase; + property Transaction: TIBTransaction read fTransaction; + end; + + { TDAEIBXDriver } + TDAEIBXDriver = class(TDAIBDriver) + private + fIBTraceOptions: TTraceFlags; + fTraceCallback: TDALogTraceEvent; + fMonitor: TIBSQLMonitor; + + procedure OnIBXTrace(EventText: string; EventTime: TDateTime); + protected + function GetConnectionClass: TDAEConnectionClass; override; + procedure CustomizeConnectionObject(aConnection: TDAEConnection); override; + procedure DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); override; + + // IDADriver + function GetDriverID: string; override; + function GetDescription: string; override; + public + end; + + { TDAEIBXConnection } + TDAEIBXConnection = class(TDAIBConnection, IDAInterbaseConnection, IDAIBTransactionAccess, IDAIBConnectionProperties, IDAUseGenerators, IDAFileBasedDatabase) + private + fConnection: TIBXConnection; + + protected + // IIBTransactionAccess + function GetTransaction: TObject; safecall; + + procedure Commit; safecall; + procedure CommitRetaining; safecall; + procedure Rollback; safecall; + procedure RollbackRetaining; safecall; + + // IIBConnectionProperties + function GetRole: string; safecall; + procedure SetRole(const Value: string); safecall; + function GetSQLDialect: integer; override;safecall; + procedure SetSQLDialect(Value: integer); safecall; + function GetCharset: string; safecall; + procedure SetCharset(const Value: string); safecall; + + + // IDAConnection + function CreateCustomConnection: TCustomConnection; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + + end; + + { TDAEIBXQuery } + TDAEIBXQuery = class(TDAEDataset,IDAMustSetParams) + + protected + function DoGetRecordCount: integer; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure ClearParams; override; + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: boolean); override; + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + { TDAEIBXStoredProcedure } + TDAEIBXStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: integer; override; + function Execute: integer; override; + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses SysUtils, uDADriverManager, uDARes, IBCustomDataSet, IBSQL,uROBinaryHelpers; + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAIBXDriver]); +end; + +function GetDriverObject: IDADriver; +begin + if (_driver = nil) then _driver := TDAEIBXDriver.Create(nil); + result := _driver; +end; + +{ TIBXConnection } + +constructor TIBXConnection.Create(AOwner: TComponent); +begin + inherited; + + fDatabase := TIBDatabase.Create(Self); + fTransaction := TIBTransaction.Create(Self); + fTransaction.AutoStopAction := saNone; + //fTransaction.AutoStopAction := saCommit; + // ^ new per recommendation from Andy Gibson, to fix the "Transaction in progress" error. + + fDatabase.LoginPrompt := FALSE; + fDatabase.DefaultTransaction := fTransaction; +end; + +function TIBXConnection.GetConnected: Boolean; +begin + result := fDatabase.Connected +end; + +procedure TIBXConnection.SetConnected(Value: boolean); +begin + // This first check is required. + // I think there's a bug in the IBX destroying sequence and the notification. TCustomConnection gets to this point *after* + // the owned components are destroyed. Only happens with IBX... + + if (csDestroying in ComponentState) then Exit; + fDatabase.Connected := Value +end; + +{ TDAEIBXConnection } + +procedure TDAEIBXConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +begin + inherited; + + with aConnStrParser do begin + if (Self.UserID <> '') then + fConnection.Database.Params.Add('user_name=' + Self.UserID) + else + fConnection.Database.Params.Add('user_name=' + UserID); + + if (Self.Password <> '') then + fConnection.Database.Params.Add('password=' + Self.Password) + else + fConnection.Database.Params.Add('password=' + Password); + + if Server <> '' then { Change: Aleksander Oven, 27. july 2003 } + fConnection.Database.DatabaseName := Server + ':' + Database + else + fConnection.Database.DatabaseName := Database; + + if AuxParams['Dialect'] <> '' then + SetSQLDialect(StrToInt(AuxParams['Dialect'])) + else if AuxParams['SQLDialect'] <> '' then + SetSQLDialect(StrToInt(AuxParams['SQLDialect'])); + + if AuxParams['Role'] <> '' then + SetRole(AuxParams['Role']); + + if AuxParams['Charset'] <> '' then + SetCharset(AuxParams['Charset']); + + end; +end; + +function TDAEIBXConnection.DoBeginTransaction: integer; +begin + result := -1; + fConnection.Database.DefaultTransaction.StartTransaction; +end; + +procedure TDAEIBXConnection.DoCommitTransaction; +begin + fConnection.Database.DefaultTransaction.Commit; +end; + +function TDAEIBXConnection.CreateCustomConnection: TCustomConnection; +begin + fConnection := TIBXConnection.Create(nil); + result := fConnection; +end; + +function TDAEIBXConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEIBXQuery +end; + +function TDAEIBXConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEIBXStoredProcedure +end; + +function TDAEIBXConnection.GetTransaction: TObject; +begin + result := fConnection.fTransaction; +end; + +procedure TDAEIBXConnection.DoRollbackTransaction; +begin + fConnection.Database.DefaultTransaction.Rollback; +end; + +function TDAEIBXConnection.GetRole: string; +begin + result := fConnection.Database.Params.Values['sql_role_name'] +end; + +function TDAEIBXConnection.GetSQLDialect: integer; +begin + result := fConnection.Database.SQLDialect +end; + +function TDAEIBXConnection.GetCharset: string; +begin + result := fConnection.Database.Params.Values['lc_ctype'] +end; + +procedure TDAEIBXConnection.SetRole(const Value: string); +begin + fConnection.Database.Params.Values['sql_role_name'] := Value +end; + +procedure TDAEIBXConnection.SetSQLDialect(Value: integer); +begin + fConnection.Database.SQLDialect := Value +end; + +procedure TDAEIBXConnection.SetCharset(const Value: string); +begin + fConnection.Database.Params.Values['lc_ctype'] := Value; +end; + +procedure TDAEIBXConnection.Commit; +begin + fConnection.fTransaction.Commit +end; + +procedure TDAEIBXConnection.CommitRetaining; +begin + fConnection.fTransaction.CommitRetaining +end; + +procedure TDAEIBXConnection.Rollback; +begin + fConnection.fTransaction.Rollback +end; + +procedure TDAEIBXConnection.RollbackRetaining; +begin + fConnection.fTransaction.RollbackRetaining +end; + +function TDAEIBXConnection.DoGetInTransaction: boolean; +begin + result := fConnection.fTransaction.InTransaction +end; + +{ TDAEIBXDriver } + +procedure TDAEIBXDriver.CustomizeConnectionObject(aConnection: TDAEConnection); +begin + TDAEIBXConnection(aConnection).fConnection.Database.TraceFlags := fIBTraceOptions; +end; + +function TDAEIBXDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEIBXConnection; +end; + +function TDAEIBXDriver.GetDescription: string; +begin + result := 'Borland Interbase Express Driver'; +end; + +function TDAEIBXDriver.GetDriverID: string; +begin + result := 'IBX'; +end; + +procedure TDAEIBXDriver.OnIBXTrace(EventText: string; EventTime: TDateTime); +begin + if Assigned(fTraceCallback) then fTraceCallback(fMonitor, EventText, 0); +end; + +procedure TDAEIBXDriver.DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); +begin + inherited; + + if TraceActive then begin + if (fMonitor = nil) then fMonitor := TIBSQLMonitor.Create(Self); + + fMonitor.Enabled := FALSE; + fMonitor.OnSQL := OnIBXTrace; + + fIBTraceOptions := []; + if (toPrepare in TraceOptions) then fIBTraceOptions := fIBTraceOptions + [tfQPrepare]; + if (toExecute in TraceOptions) then fIBTraceOptions := fIBTraceOptions + [tfQExecute]; + if (toFetch in TraceOptions) then fIBTraceOptions := fIBTraceOptions + [tfQFetch]; + if (toError in TraceOptions) then fIBTraceOptions := fIBTraceOptions + [tfError]; + if (toStmt in TraceOptions) then fIBTraceOptions := fIBTraceOptions + [tfStmt]; + if (toConnect in TraceOptions) then fIBTraceOptions := fIBTraceOptions + [tfConnect]; + if (toTransact in TraceOptions) then fIBTraceOptions := fIBTraceOptions + [tfTransact]; + if (toBlob in TraceOptions) then fIBTraceOptions := fIBTraceOptions + [tfBlob]; + if (toService in TraceOptions) then fIBTraceOptions := fIBTraceOptions + [tfService]; + if (toMisc in TraceOptions) then fIBTraceOptions := fIBTraceOptions + [tfMisc]; + + fTraceCallBack := Callback; + + fMonitor.TraceFlags := fIBTraceOptions; + fMonitor.Enabled := TRUE; + end + else begin + FreeAndNIL(fMonitor); + fTraceCallback := nil; + end; +end; + +{ TDAEIBXQuery } + +procedure TDAEIBXQuery.ClearParams; +begin + inherited; + TIBQuery(Dataset).Params.Clear; +end; + +function TDAEIBXQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TIBQuery.Create(nil); + TIBQuery(result).UniDirectional := true; + TIBQuery(result).Database := TDAEIBXConnection(aConnection).fConnection.Database; +end; + +function TDAEIBXQuery.DoExecute: integer; +begin + TIBQuery(Dataset).ExecSQL; + result := TIBQuery(Dataset).RowsAffected; +end; + +function TDAEIBXQuery.DoGetRecordCount: integer; +begin + TIBQuery(Dataset).FetchAll; + Result := inherited DoGetRecordCount; +end; + +function TDAEIBXQuery.DoGetSQL: string; +begin + result := TIBQuery(Dataset).SQL.Text +end; + +procedure TDAEIBXQuery.DoPrepare(Value: boolean); +begin + TIBQuery(Dataset).Prepared := Value +end; + +procedure TDAEIBXQuery.DoSetSQL(const Value: string); +begin + TIBQuery(Dataset).SQL.Text := Value; +end; + + +procedure TDAEIBXQuery.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams,TIBQuery(Dataset).Params); +end; + +procedure TDAEIBXQuery.SetParamValues(AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams,TIBQuery(Dataset).Params); +end; + +{ TDAEIBXStoredProcedure } + +function TDAEIBXStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + result := TIBStoredProc.Create(nil); + TIBStoredProc(result).Database := TDAEIBXConnection(aConnection).fConnection.Database; +end; + +function TDAEIBXStoredProcedure.Execute: integer; +begin + SetParamValues(GetParams); + Result:=DoExecute; + GetParamValues(GetParams); +end; + +procedure TDAEIBXStoredProcedure.SetParamValues(AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams,TIBStoredProc(Dataset).Params); +end; + +procedure TDAEIBXStoredProcedure.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams,TIBStoredProc(Dataset).Params); +end; + +function TDAEIBXStoredProcedure.GetStoredProcedureName: string; +begin + result := TIBStoredProc(Dataset).StoredProcName +end; + +procedure TDAEIBXStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TIBStoredProc(Dataset).StoredProcName := Name; +end; + +procedure TDAEIBXStoredProcedure.RefreshParams; +begin + // Apparently a bug in IBX requires to do so... Automatic gathering only works at runtime + TIBStoredProc(Dataset).Prepare; + RefreshParamsStd(TIBStoredProc(Dataset).Params); +end; + +exports + GetDriverObject name func_GetDriverObject; + +function TDAEIBXStoredProcedure.DoExecute: integer; +begin + TIBStoredProc(Dataset).ExecProc; + result := TIBStoredProc(Dataset).RowsAffected; +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAMyDACDriver.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAMyDACDriver.pas new file mode 100644 index 0000000..104a0dc --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAMyDACDriver.pas @@ -0,0 +1,539 @@ +unit uDAMyDACDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up, Kylix 3 and up +{ platform: Win32, Linux +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$I ..\DataAbstract.inc} + +{$R DataAbstract_MyDACDriver_Glyphs.res} +{.$DEFINE ENABLE_SQLMonitor} +{.$DEFINE MYSQL4Compatible} + +interface + +uses DB, Classes, uDAEngine, uDAInterfaces, {uDAADOInterfaces,} uROClasses, DBAccess, MyAccess, + {$IFDEF ENABLE_SQLMonitor}DASQLMonitor, MySQLMonitor,{$ENDIF ENABLE_SQLMonitor} uROBinaryHelpers, uDAUtils, uDAMySQLInterfaces; + +type { TDAMyDACDriver } + TDAMyDACDriver = class(TDADriverReference) + end; + + { TDAEADODriver } + TDAEADODriver = class(TDAMySQLDriver) + private + {$IFDEF ENABLE_SQLMonitor} + fMonitor: TMySQLMonitor; + fTraceCallBack: TDALogTraceEvent; + + procedure OnMyDACTrace(Sender: TObject; Text: string; Flag: TDATraceFlag); + {$ENDIF ENABLE_SQLMonitor} + protected + function GetConnectionClass: TDAEConnectionClass; override; + {$IFDEF ENABLE_SQLMonitor} + procedure DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); override; + {$ENDIF ENABLE_SQLMonitor} + // IDADriver + function GetDriverID: string; override; safecall; + function GetDescription: string; override; safecall; + function GetDefaultCustomParameters: string; override; safecall; + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + end; + + { TDAEMyConnection } + TDAEMyConnection = class(TDAMySQLConnection, IDAMySQLConnection,IDACanQueryDatabaseNames) + private + function GetMyConnection: TMyConnection; + + protected + function GetTableSchema: string; override; + function useUnicode:Boolean; override; + + function CreateCustomConnection: TCustomConnection; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + procedure DoGetTableNames(out List: IROStrings); override; + procedure DoGetViewNames(out List: IROStrings); override; + procedure DoGetStoredProcedureNames(out List: IROStrings); override; + procedure DoGetForeignKeys(out ForeignKeys: TDADriverForeignKeyCollection); override; + procedure DoGetStoredProcedureParams(const aStoredProcedureName: string; out Params: TDAParamCollection); override; + function GetDatabaseNames: IROStrings; + procedure DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection); override; + property MyConnection: TMyConnection read GetMyConnection; + public + end; + + { TDAEMyQuery } + TDAEMyQuery = class(TDAEDataset, IDAMustSetParams) + private + + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure ClearParams; override; + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: boolean); override; + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + public + end; + + { TDAEADOStoredProcedure } + TDAEADOStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: integer; override; + function Execute: integer; override; + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses + SysUtils,Variants, + uDADriverManager, uDARes; + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAMyDACDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAEADODriver.Create(nil); + result := _driver; +end; + +{$IFDEF LATEST_MyDAC} +{$I uDACRLabsUtils.inc} +{$ENDIF LATEST_MyDAC} + + +{$I uDACRLabsUtils.inc} +{ TDAEMyConnection } + +function TDAEMyConnection.DoBeginTransaction: integer; +begin + MyConnection.StartTransaction; + result := 0; +end; + +procedure TDAEMyConnection.DoCommitTransaction; +begin + MyConnection.Commit; +end; + +function TDAEMyConnection.GetMyConnection: TMyConnection; +begin + result := TMyConnection(inherited ConnectionObject); +end; + +function TDAEMyConnection.CreateCustomConnection: TCustomConnection; +begin + result := TMyConnection.Create(nil); + TMyConnection(result).LoginPrompt := FALSE; +end; + +function TDAEMyConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEMyQuery; +end; + +function TDAEMyConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEADOStoredProcedure; +end; + +procedure TDAEMyConnection.DoGetStoredProcedureNames(out List: IROStrings); +begin + {$IFDEF MYSQL4Compatible} + List := TROStrings.Create; + MyConnection.GetStoredProcNames(List.Strings); + {$ELSE} + inherited DoGetStoredProcedureNames(List); + {$ENDIF} +end; + +procedure TDAEMyConnection.DoGetTableNames(out List: IROStrings); +begin + {$IFDEF MYSQL4Compatible} + List := TROStrings.Create; + MyConnection.GetTableNames(List.Strings); + {$ELSE} + inherited DoGetTableNames(List); + {$ENDIF MYSQL4Compatible} +end; + +procedure TDAEMyConnection.DoRollbackTransaction; +begin + MyConnection.Rollback; +end; + +function TDAEMyConnection.DoGetInTransaction: boolean; +begin + result := MyConnection.InTransaction +end; + + +procedure TDAEMyConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +const + stdMSSQL_ConnectionString = 'User ID=%s;Password=%s;Initial Catalog=%s;Data Source=%s'; +var + adoconn: string; + i: integer; + sName,sValue: string; +begin + inherited; + + with aConnStrParser do begin + adoconn := Format(stdMSSQL_ConnectionString, [UserID, Password, Database, Server]); + + MyConnection.Database := Database; + + MyConnection.Server := Server; + + if (Self.UserID <> '') then + MyConnection.Username := Self.UserID + else + MyConnection.Username := UserID; + + if (Self.Password <> '') then + MyConnection.Password := Self.Password + else + MyConnection.Password := Password; + for i := 0 to AuxParamsCount -1 do + begin + sName := AuxParamNames[i]; + sValue := AuxParams[AuxParamNames[i]]; + if SameText('Port', sName) then MyConnection.Port:= StrToIntDef(sValue,3306); + if SameText('useUnicode', sName) then MyConnection.Options.UseUnicode:=StrToBoolDef(sValue,False); + end; + end; +end; + +function TDAEMyConnection.GetTableSchema: string; +begin + Result:=MyConnection.Database; +end; + +function TDAEMyConnection.useUnicode: Boolean; +begin + Result:= GetMyConnection.Options.UseUnicode; +end; + +function TDAEMyConnection.GetDatabaseNames: IROStrings; +begin + {$IFDEF MYSQL4Compatible} + Result := TROStrings.Create(); + MyConnection.GetDatabaseNames(Result.Strings); + {$ELSE} + Result := inherited GetDatabaseNames; + {$ENDIF MYSQL4Compatible} +end; + +procedure TDAEMyConnection.DoGetViewNames(out List: IROStrings); +begin + {$IFDEF MYSQL4Compatible} + List := TROStrings.Create; + GetTablesList(MyConnection, List.Strings); + {$ELSE} + inherited DoGetViewNames(List); + {$ENDIF MYSQL4Compatible} +end; + +procedure TDAEMyConnection.DoGetForeignKeys( + out ForeignKeys: TDADriverForeignKeyCollection); +begin + {$IFDEF MYSQL4Compatible} + ForeignKeys := TDADriverForeignKeyCollection.Create(nil); + {$ELSE} + inherited DoGetForeignKeys(ForeignKeys); + {$ENDIF MYSQL4Compatible} +end; + +procedure TDAEMyConnection.DoGetStoredProcedureParams( + const aStoredProcedureName: string; out Params: TDAParamCollection); +{$IFDEF MYSQL4Compatible} +var + cmd: IDASQLCommand; + {$ENDIF MYSQL4Compatible} +begin + {$IFDEF MYSQL4Compatible} + cmd := NewCommand(aStoredProcedureName, stStoredProcedure); + cmd.RefreshParams; + Params := TDAParamCollection.Create(nil); + Params.AssignParamCollection(cmd.Params); + {$ELSE} + inherited DoGetStoredProcedureParams(aStoredProcedureName, Params); + {$ENDIF MYSQL4Compatible} +end; + +procedure TDAEMyConnection.DoGetTableFields(const aTableName: string; + out Fields: TDAFieldCollection); +{$IFDEF MYSQL4Compatible} + var + qry: IDADataset; +{$ENDIF} +begin + {$IFDEF MYSQL4Compatible} + Fields := TDAFieldCollection.Create(nil); + qry := GetDatasetClass.Create(Self); + try + qry.SQL := 'SELECT * FROM ' + QuoteIdentifierIfNeeded(aTableName) + ' WHERE 1=0'; + qry.Open; + Fields.Assign(qry.Fields); + finally + qry := nil; + end; + {$ELSE} + inherited DoGetTableFields(aTableName, Fields); + {$ENDIF MYSQL4Compatible} +end; + +{ TDAEADODriver } + +procedure TDAEADODriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +begin + inherited; + List.Add('useUnicode=(True;False)'); +end; + +function TDAEADODriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEMyConnection; +end; + +function TDAEADODriver.GetDefaultCustomParameters: string; +begin + Result:= inherited GetDefaultCustomParameters + 'useUnicode=False;'; +end; + +function TDAEADODriver.GetDescription: string; +begin + result := 'Core Lab MyDAC Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; +end; + +function TDAEADODriver.GetDriverID: string; +begin + result := 'MyDAC'; +end; + +{$IFDEF ENABLE_SQLMonitor} +procedure TDAEADODriver.OnMyDACTrace(Sender: TObject; Text: string; Flag: TDATraceFlag); +begin + if Assigned(fTraceCallback) then fTraceCallback(Sender, Text, integer(Flag)); +end; + +procedure TDAEADODriver.DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); +var + MyDACopts: TDATraceFlags; +begin + inherited; + + if TraceActive then begin + if (fMonitor = nil) then fMonitor := TMySQLMonitor.Create(Self); + + fMonitor.Active := FALSE; + fMonitor.OnSQL := OnMyDACTrace; + + MyDACopts := []; + if (toPrepare in TraceOptions) then MyDACopts := MyDACopts + [tfQPrepare]; + if (toExecute in TraceOptions) then MyDACopts := MyDACopts + [tfQExecute]; + if (toFetch in TraceOptions) then MyDACopts := MyDACopts + [tfQFetch]; + if (toError in TraceOptions) then MyDACopts := MyDACopts + [tfError]; + if (toStmt in TraceOptions) then MyDACopts := MyDACopts + [tfStmt]; + if (toConnect in TraceOptions) then MyDACopts := MyDACopts + [tfConnect]; + if (toTransact in TraceOptions) then MyDACopts := MyDACopts + [tfTransact]; + if (toBlob in TraceOptions) then MyDACopts := MyDACopts + [tfBlob]; + if (toService in TraceOptions) then MyDACopts := MyDACopts + [tfService]; + if (toMisc in TraceOptions) then MyDACopts := MyDACopts + [tfMisc]; + if (toParams in TraceOptions) then MyDACopts := MyDACopts + [tfParams]; + + fTraceCallBack := Callback; + + fMonitor.TraceFlags := MyDACopts; + fMonitor.Active := TRUE; + end + else begin + FreeAndNIL(fMonitor); + fTraceCallback := nil; + end; +end; +{$ENDIF ENABLE_SQLMonitor} + +{ TDAEMyQuery } + +function TDAEMyQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TMyQuery.Create(nil); + TMyQuery(result).ReadOnly := TRUE; + TMyQuery(result).Connection := TDAEMyConnection(aConnection).MyConnection; + TMyQuery(result).FetchAll := True; //for preventing creating an additional session when you call StartTransaction (an known issue of OLEDB) + +// GetLastAutoInc will work in case these options is commented +// TMyQuery(result).FetchAll := False; +// TMyQuery(result).Unidirectional := True; +end; + +function TDAEMyQuery.DoExecute: integer; +begin + TMyQuery(Dataset).Execute; + result := TMyQuery(Dataset).RowsAffected; +end; + +function TDAEMyQuery.DoGetSQL: string; +begin + result := TMyQuery(Dataset).SQL.Text; +end; + +procedure TDAEMyQuery.DoPrepare(Value: boolean); +begin + // Do not do inherited DoPrepare for MySQL. + {with TMyQuery(Dataset) do begin + if not Options.Direct then Prepared := Value; + end;} +end; + +procedure TDAEMyQuery.DoSetSQL(const Value: string); +begin + TMyQuery(Dataset).SQL.Text := Value; +end; + +procedure TDAEMyQuery.SetParamValues(AParams: TDAParamCollection); +begin + WriteCrLabsParamValues(AParams, TMyQuery(Dataset).Params); +end; + +procedure TDAEMyQuery.GetParamValues(AParams: TDAParamCollection); +var + i: integer; + par: uDAInterfaces.TDAParam; + inpar: TParam; +begin + for i := 0 to (AParams.Count - 1) do begin + par := AParams[i]; + inpar := TMyQuery(Dataset).Params.ParamByName(par.Name); + par.Value := inpar.Value; + end; +end; + +procedure TDAEMyQuery.ClearParams; +begin + inherited; + TMyQuery(Dataset).Params.Clear; +end; + +{ TDAEADOStoredProcedure } + +function TDAEADOStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + result := TMyStoredProc.Create(nil); + TMyStoredProc(result).Connection := TDAEMyConnection(aConnection).MyConnection; +end; + +function TDAEADOStoredProcedure.Execute: integer; +begin + SetParamValues(GetParams); + Result:= DoExecute; + GetParamValues(GetParams); +end; + +function TDAEADOStoredProcedure.GetStoredProcedureName: string; +begin + result := TMyStoredProc(Dataset).StoredProcName; +end; + +procedure TDAEADOStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TMyStoredProc(Dataset).StoredProcName := Name; +end; + +procedure TDAEADOStoredProcedure.SetParamValues(AParams: TDAParamCollection); +begin + WriteCrLabsParamValues(AParams, TMyStoredProc(Dataset).Params); +end; + +procedure TDAEADOStoredProcedure.GetParamValues(AParams: TDAParamCollection); +var + i: Integer; + lParam: DBAccess.TDAParam; +begin + for i := 0 to TMyStoredProc(DataSet).Params.Count - 1 do begin + lParam:=TMyStoredProc(DataSet).Params[i]; + if (lParam.ParamType in [ptOutput, ptInputOutput, ptResult]) then + Aparams.ParamByName(lParam.Name).Value := lParam.Value; + end; +end; + +exports + GetDriverObject name func_GetDriverObject; + +procedure TDAEADOStoredProcedure.RefreshParams; +begin + RefreshParamsStd(TMyStoredProc(DataSet).Params); +end; + +function TDAEADOStoredProcedure.DoExecute: integer; +begin + TMyStoredProc(Dataset).ExecProc; + Result := -1; +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAMySQLDACDriver.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAMySQLDACDriver.pas new file mode 100644 index 0000000..a5879e8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAMySQLDACDriver.pas @@ -0,0 +1,362 @@ +unit uDAMySQLDACDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up, Kylix 3 and up +{ platform: Win32, Linux +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$I ..\DataAbstract.inc} + +{$R DataAbstract_MySQLDACDriver_Glyphs.res} + +interface + +uses DB, Classes, uDAEngine, uDAInterfaces, uDAADOInterfaces, uROClasses, + uROBinaryHelpers, uDAUtils, mySQLAccess, mySQLDbTables, mySQLTypes, uDAMySQLInterfaces; + +type { TDAMySQLDACDriver } + TDAMySQLDacDriver = class(TDADriverReference) + end; + + { TDAEMySQLDacDriver } + TDAEMySQLDacDriver = class(TDAMySQLDriver) + private + protected + function GetConnectionClass: TDAEConnectionClass; override; + + // IDADriver + function GetDriverID: string; override; safecall; + function GetDescription: string; override; safecall; + end; + + { TDAEMyConnection } + TDAEMySQLDacConnection = class(TDAMySQLConnection, IDACanQueryDatabaseNames,IDAMySQLConnection) + private + function GetConnection: TmySQLDatabase; + + protected + function GetTableSchema: string; override; + function CreateCustomConnection: TCustomConnection; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + + property Connection: TmySQLDatabase read GetConnection; + public + end; + + { TDAEMySQLDacQuery } + TDAEMySQLDacQuery = class(TDAEDataset, IDAMustSetParams) + private + + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure ClearParams; override; + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: boolean); override; + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + public + end; + + { TDAEMySQLDacStoredProcedure } + TDAEMySQLDacStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: integer; override; + function Execute: integer; override; + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses + SysUtils, + uDADriverManager, uDARes, uDAMacroProcessors; + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAMySQLDACDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAEMySQLDacDriver.Create(nil); + result := _driver; +end; + +{$IFDEF LATEST_MyDAC} +{$I uDACRLabsUtils.inc} +{$ENDIF LATEST_MyDAC} + +{ TDAEMySQLDacConnection } + +function TDAEMySQLDacConnection.DoBeginTransaction: integer; +begin + Connection.StartTransaction; + result := 0; +end; + +procedure TDAEMySQLDacConnection.DoCommitTransaction; +begin + Connection.Commit; +end; + +function TDAEMySQLDacConnection.GetConnection: TmySQLDatabase; +begin + result := TmySQLDatabase(inherited ConnectionObject); +end; + +function TDAEMySQLDacConnection.CreateCustomConnection: TCustomConnection; +begin + result := TmySQLDatabase.Create(nil); + TmySQLDatabase(result).LoginPrompt := false; +end; + +function TDAEMySQLDacConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEMySQLDacQuery; +end; + +function TDAEMySQLDacConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEMySQLDacStoredProcedure; +end; + + +procedure TDAEMySQLDacConnection.DoRollbackTransaction; +begin + Connection.Rollback; +end; + +function TDAEMySQLDacConnection.DoGetInTransaction: boolean; +begin + result := Connection.InTransaction +end; + + + +procedure TDAEMySQLDacConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +var + i: Integer; +begin + inherited; + + with aConnStrParser do begin + Connection.DatabaseName := Database; + + Connection.Host := Server; + + if (Self.UserID <> '') then + Connection.Username := Self.UserID + else + Connection.Username := UserID; + + if (Self.Password <> '') then + Connection.UserPassword := Self.Password + else + Connection.UserPassword := Password; + if AuxParams['Port'] <> '' then Connection.Port := StrToIntDef(AuxParams['Port'],3306); + + for i := 0 to AuxParamsCount -1 do + begin + if SameText(AuxParamNames[i], 'Port') then continue; + if AuxParams[AuxParamNames[i]] <> '' then + Connection.Params.Add(AuxParamNames[i]+'='+AuxParams[AuxParamNames[i]]); + end; + end; +end; + + +function TDAEMySQLDacConnection.GetTableSchema: string; +begin + Result:=Connection.DatabaseName; +end; + +{ TDAEMySQLDacDriver } + + +function TDAEMySQLDacDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEMySQLDacConnection; +end; + +function TDAEMySQLDacDriver.GetDescription: string; +begin + result := 'MicroOlap DAC for MySQL Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; +end; + +function TDAEMySQLDacDriver.GetDriverID: string; +begin + result := 'MySQLDAC'; +end; + + +{ TDAEMySQLDacQuery } + +procedure TDAEMySQLDacQuery.ClearParams; +begin + inherited; + TmySQLQuery(Dataset).Params.Clear; +end; + +function TDAEMySQLDacQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TmySQLQuery.Create(nil); + + TmySQLQuery(result).RequestLive := false; + TmySQLQuery(result).UniDirectional:=True; + TMySqlQuery(result).Database := TDAEMySQLDacConnection(aConnection).Connection; +end; + +function TDAEMySQLDacQuery.DoExecute: integer; +begin + TmySQLQuery(Dataset).ExecSQL; + result := TmySQLQuery(Dataset).RowsAffected; +end; + +function TDAEMySQLDacQuery.DoGetSQL: string; +begin + result := TmySQLQuery(Dataset).SQL.Text; +end; + +procedure TDAEMySQLDacQuery.DoPrepare(Value: boolean); +begin + TmySQLQuery(Dataset).Prepared := Value; +end; + +procedure TDAEMySQLDacQuery.DoSetSQL(const Value: string); +begin + TmySQLQuery(Dataset).SQL.Text := Value; +end; + +procedure TDAEMySQLDacQuery.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TmySQLQuery(Dataset).Params); +end; + +procedure TDAEMySQLDacQuery.SetParamValues(AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams, TmySQLQuery(Dataset).Params); +end; + + +{ TDAEADOStoredProcedure } + +function TDAEMySQLDacStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + result := TmySQLStoredProc.Create(nil); + TmySQLStoredProc(result).Database := TDAEMySQLDacConnection(aConnection).Connection; +end; + +function TDAEMySQLDacStoredProcedure.Execute: integer; +var + i: integer; + _params: TDAParamCollection; + lParam: TmySQLSPParam; +begin + _params := GetParams; + + with TmySQLStoredProc(Dataset) do begin + for i := 0 to (Params.Count-1) do begin + lParam:=Params[i]; + if (lParam.ParamType in [ptInput, ptInputOutput]) then + lParam.Value := _params.ParamByName(lParam.Name).Value; + end; + + Result:= DoExecute; + + for i := 0 to (Params.Count-1) do begin + lParam:=Params[i]; + if (lParam.ParamType in [ptOutput, ptInputOutput, ptResult]) then + _params.ParamByName(lParam.Name).Value := lParam.Value; + end; + end; +end; + +function TDAEMySQLDacStoredProcedure.GetStoredProcedureName: string; +begin + Result := TmySQLStoredProc(Dataset).ProcedureName; +end; + +procedure TDAEMySQLDacStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TmySQLStoredProc(Dataset).ProcedureName := Name; +end; + +procedure TDAEMySQLDacStoredProcedure.RefreshParams; +begin + RefreshParamsStd(TmySQLStoredProc(Dataset).Params); +end; + +procedure TDAEMySQLDacStoredProcedure.GetParamValues( + AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TmySQLStoredProc(Dataset).Params); +end; + +procedure TDAEMySQLDacStoredProcedure.SetParamValues( + AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams, TmySQLStoredProc(Dataset).Params); +end; + +exports GetDriverObject name func_GetDriverObject; + +function TDAEMySQLDacStoredProcedure.DoExecute: integer; +begin + TmySQLStoredProc(Dataset).ExecProc; + result := -1; +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDANexusDBDriver.dcr b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDANexusDBDriver.dcr new file mode 100644 index 0000000..52a0cec Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDANexusDBDriver.dcr differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDANexusDBDriver.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDANexusDBDriver.pas new file mode 100644 index 0000000..abb049c --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDANexusDBDriver.pas @@ -0,0 +1,1065 @@ +unit uDANexusDBDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up +{ platform: Win32 +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ (c)opyright Nexus Database Systems Pty. Ltd. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I DataAbstract.inc} +{$ENDIF MSWINDOWS} +{$IFDEF LINUX} +{$I DataAbstract.inc} +{$ENDIF LINUX} + +interface + +uses + Classes, + DB, + + uDAEngine, + uDAInterfaces, + uROClasses, + + nxllMemoryManager, + nxllSync, + nxllComponent, + nxllTransport, + + nxsdServerEngine, + + nxdb, + + {$IFNDEF DataAbstract_NexusDBPack} + nxptBasePooledTransport, + nxtwWinsockTransport, + nxtnNamedPipeTransport, + + nxreRemoteServerEngine, + {$ENDIF} + + nxsrSqlEngineBase, + nxsrServerEngine, + + nxsqlEngine, + + //nx1xAllEngines, + nxseAllEngines, // // NXDB2: Renamed + uDAUtils; + +type + TDANexusDBDriver = class(TDADriverReference) + end; + + INexusDBConnection = interface + ['{DFF41623-A766-44C0-A61A-CC18FB80CAE3}'] + end; + + INexusDBDriver = interface + ['{CFE4B5BB-3C38-40BF-BE57-5BE3C627A6C3}'] + procedure RegisterServerEngine(aServerEngine: TnxBaseServerEngine; + const aName: string); safecall; + + procedure UnregisterServerEngine(aServerEngine: TnxBaseServerEngine); overload; safecall; + procedure UnregisterServerEngine(const aName: string); overload; safecall; + end; + + TNexusDBConnection = class; + + TNexusDBBaseEngineContainer = class(TnxObject) + protected {private} + becServerName: string; + + becConnectionsHead : TNexusDBConnection; + becConnectionsTail : TNexusDBConnection; + protected + function becGetEngine: TnxBaseServerEngine; virtual; abstract; + public + constructor Create(aServerName: string); + destructor Destroy; override; + + procedure CheckedFree; virtual; + + property Engine: TnxBaseServerEngine + read becGetEngine; + end; + + TNexusDBConnection = class(TDAConnectionWrapper) + protected {private} + conEngineContainer : TNexusDBBaseEngineContainer; + conEngineContainerNext : TNexusDBConnection; + conEngineContainerPrev : TNexusDBConnection; + conEngineContainerAdded : Boolean; + + conSession : TnxSession; + conDatabase : TnxDatabase; + + procedure conSetEngineContainer(aContainer: TNexusDBBaseEngineContainer); + protected + function GetConnected: Boolean; override; + procedure SetConnected(Value: Boolean); override; + + procedure conAddToEngineContainer; + procedure conRemoveFromEngineContainer; + public + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; + property EngineContainer: TNexusDBBaseEngineContainer read conEngineContainer write conSetEngineContainer; + property Session: TnxSession read conSession; + property Database: TnxDatabase read conDatabase; + end; + + TDAENexusDBDriver = class(TDAEDriver, INexusDBDriver) + protected {private} + nxdEnginesPadlock: TnxPadlock; + nxdEngines: TStringList; + protected + function GetConnectionClass: TDAEConnectionClass; override; + + { IDADriver } + function GetDriverID: string; override; + function GetDescription: string; override; + + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; + function GetDefaultCustomParameters: string; override; safecall; + { INexusDBDriver } + procedure RegisterServerEngine(aServerEngine: TnxBaseServerEngine;const aName: string); safecall; + + procedure UnregisterServerEngine(aServerEngine: TnxBaseServerEngine); overload; safecall; + procedure UnregisterServerEngine(const aName: string); overload; safecall; + function GetDefaultConnectionType(const AuxDriver: string): string; override; safecall; + public + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; + end; + + { TDAENexusDBConnection } + TDAENexusDBConnection = class(TDAEConnection, INexusDBConnection) + private + dacConnection: TNexusDBConnection; + protected + { IDAConnection } + function CreateCustomConnection: TCustomConnection; override; + function CreateMacroProcessor: TDASQLMacroProcessor; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject : TCustomConnection); override; + function DoBeginTransaction: Integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: Boolean; override; + + procedure DoGetTableNames(out aList: IROStrings); override; + procedure DoGetStoredProcedureNames(out List: IROStrings); override; + procedure DoGetTableFields(const aTableName : string; + out aFields : TDAFieldCollection); override; + + function DoGetLastAutoInc(const GeneratorName: string): integer; override; + function IdentifierNeedsQuoting(const iIdentifier: string): boolean; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + { TDAENexusDBQuery } + TDAENexusDBQuery = class(TDAEDataset, IDAMustSetParams) + private + protected + function CreateDataset(aConnection: TDAEConnection): TDataSet; override; + procedure ClearParams; override; + function DoExecute: Integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: Boolean); override; + + { IDAMustSetParams } + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + { TDAENexusStoredProcedure } + TDAENexusStoredProcedure = class(TDAEStoredProcedure, IDAStoredProcedure, IDAMustSetParams) + protected + // Internal + // function DoGetStoredProcedureName: string; override; + // procedure DoSetStoredProcedureName(const Name: string); override; + + // IDAStoredProcedure + function GetStoredProcedureName: string; override; safecall; + procedure SetStoredProcedureName(const Name: string); override; safecall; + + // procedure PrepareSQLStatement; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure DoPrepare(Value: boolean); override; safecall; + function DoExecute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function Execute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure DoSetSQL(const Value: string); override; safecall; + function DoGetSQL: string; override; safecall; + // function intVCLTypeToDAType(aFieldType: TFieldType): TDADataType;override; + + { IDASQLCommand } + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function DoGetRecordCount: integer; override; + // function DoGetActive: boolean; override; + // procedure DoSetActive(Value: boolean); override; + // function DoGetBOF: boolean; override; + // function DoGetEOF: boolean; override; + // procedure DoNext; override; + // function DoLocate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; override; + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +const + Nexus_DriverType = 'Nexus'; +implementation + +uses + SysUtils, + + nxllUtils,nxsdTypes,nxsqlBase, + + uDADriverManager, + uDARes, + uDAMacroProcessors, + + TypInfo; + +const + csUrlSeperator = '://'; + + csEmbedded = 'embedded'; + csRegistered = 'registered'; + csEmbeddedDefault = 'embedded://default'; + + csAlias = 'alias'; + csPath = 'path'; + + csNexusDB = 'NexusDB'; + csNexusDBDriver = 'NexusDB Driver'; + +resourcestring + rsEmbeddedOnly = ' [embedded only]'; + rsThisDriverOnlySupportsEmbeddedServerEngines = 'This driver only supports embedded server engines. Connections to remote server engines require a full NexusDB license.'; + rsNoProtocolHasBeenSpecified = 'No protocol has been specified'; + rsNoServerEngineHasBeenRegisteredAs = 'No Server Engine has been registered as "%s"'; + rsNoTransportAvailableForProtocol = 'No transport available for protocol "%s"'; + rsUnknownDatabaseType = 'Unknown database type "%s"'; + +var + _driver : TDAENexusDBDriver = nil; + +{===Register===================================================================} +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDANexusDBDriver]); +end; +{==============================================================================} + + + +{===GetDriverObject============================================================} +{$IFDEF DataAbstract_SchemaModelerOnly}{$INCLUDE DataAbstract_SchemaModelerOnly.inc}{$ENDIF DataAbstract_SchemaModelerOnly} +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + Result := nil; + Exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAENexusDBDriver.Create(nil); + Result := _driver; +end; +{==============================================================================} + + + +{===TNexusDBBaseEngineContainer================================================} +procedure TNexusDBBaseEngineContainer.CheckedFree; +begin + if not Assigned(becConnectionsHead) then + Free; +end; +{------------------------------------------------------------------------------} +constructor TNexusDBBaseEngineContainer.Create(aServerName: string); +begin + becServerName := aServerName; + + inherited Create; + + _driver.nxdEnginesPadlock.Lock; + try + _driver.nxdEngines.AddObject(aServerName, Self); + finally + _driver.nxdEnginesPadlock.Unlock; + end; +end; +{------------------------------------------------------------------------------} +destructor TNexusDBBaseEngineContainer.Destroy; +var + i : Integer; +begin + if Assigned(_driver) then begin + _driver.nxdEnginesPadlock.Lock; + try + with _driver.nxdEngines do + if Find(becServerName, i) and (Objects[i] = Self) then + Delete(i); + while Assigned(becConnectionsHead) do try + becConnectionsHead.EngineContainer := nil; + except end; + finally + _driver.nxdEnginesPadlock.Unlock; + end; + end; + + inherited; +end; +{==============================================================================} + + + +{===TNexusDBEmbeddedEngineContainer============================================} +type + TNexusDBEmbeddedEngineContainer = class(TNexusDBBaseEngineContainer) + protected {private} + eecServerEngine: TnxServerEngine; + protected + function becGetEngine: TnxBaseServerEngine; override; + public + constructor Create(aServerName: string); + destructor Destroy; override; + + procedure CheckedFree; override; + end; +function TNexusDBEmbeddedEngineContainer.becGetEngine: TnxBaseServerEngine; +begin + Result := eecServerEngine; +end; +{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~} +procedure TNexusDBEmbeddedEngineContainer.CheckedFree; +begin + if not SameText(becServerName, csEmbeddedDefault) then + inherited; +end; +{------------------------------------------------------------------------------} +constructor TNexusDBEmbeddedEngineContainer.Create(aServerName: string); +begin + eecServerEngine := TnxServerEngine.Create(nil); + eecServerEngine.SqlEngine := TnxSqlEngine.Create(eecServerEngine); + eecServerEngine.Open; + + inherited Create(aServerName); +end; +{------------------------------------------------------------------------------} +destructor TNexusDBEmbeddedEngineContainer.Destroy; +begin + inherited; + FreeAndNil(eecServerEngine); +end; +{==============================================================================} + + + +{$IFNDEF DataAbstract_NexusDBPack} +{==============================================================================} +type + TNexusDBRemoteEngineContainer = class(TNexusDBBaseEngineContainer) + protected {private} + recTransport: TnxBaseTransport; + recServerEngine: TnxRemoteServerEngine; + protected + function becGetEngine: TnxBaseServerEngine; override; + public + constructor Create(aServerName, aAuxParamsString: string; + aTransportClass: TnxBaseTransportClass); + destructor Destroy; override; + end; +{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~} +function TNexusDBRemoteEngineContainer.becGetEngine: TnxBaseServerEngine; +begin + Result := recServerEngine; +end; +{------------------------------------------------------------------------------} +constructor TNexusDBRemoteEngineContainer.Create(aServerName, aAuxParamsString: string; + aTransportClass: TnxBaseTransportClass); +var + S, + N, + V : string; + AuxParams : IROStrings; + i : integer; + + procedure SetProperty(Instance: TObject; const Prefix, Name, Value: string); + begin + if (Pos(Prefix, Name) = 1) then + begin + SetPropValue(Instance, + Copy(Name, Length(Prefix) + 1, Length(Name)), + Value); + end; + end; + +begin + S := aServerName; + Delete(S, 1, Pos(csUrlSeperator, S) + 2); + + AuxParams := ListStringElements(aAuxParamsString); + + recTransport := aTransportClass.Create(nil); + recTransport.ServerName := S; + + recServerEngine := TnxRemoteServerEngine.Create(nil); + recServerEngine.Transport := recTransport; + + for i := 0 to AuxParams.Count-1 do + begin + N := AuxParams.Names[i]; + V := AuxParams.Values[AuxParams.Names[i]]; + SetProperty(recTransport, 'Transport.', N, V); + SetProperty(recServerEngine, 'Server.', N, V); + end; + + recTransport.Open; + recServerEngine.Open; + + inherited Create(aServerName); +end; +{------------------------------------------------------------------------------} +destructor TNexusDBRemoteEngineContainer.Destroy; +begin + inherited; + FreeAndNil(recServerEngine); + FreeAndNil(recTransport); +end; +{==============================================================================} +{$ENDIF} + + + +{===TNexusDBRegisteredEngineContainer==========================================} +type + TNexusDBRegisteredEngineContainer = class(TNexusDBBaseEngineContainer) + protected {private} + regecServerEngine: TnxBaseServerEngine; + protected + function becGetEngine: TnxBaseServerEngine; override; + public + constructor Create(aServerName: string; + aServerEngine: TnxBaseServerEngine); + + procedure CheckedFree; override; + end; +{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~} +function TNexusDBRegisteredEngineContainer.becGetEngine: TnxBaseServerEngine; +begin + Result := regecServerEngine; +end; +{------------------------------------------------------------------------------} +procedure TNexusDBRegisteredEngineContainer.CheckedFree; +begin + {never} +end; +{------------------------------------------------------------------------------} +constructor TNexusDBRegisteredEngineContainer.Create(aServerName: string; + aServerEngine: TnxBaseServerEngine); +begin + regecServerEngine := aServerEngine; + inherited Create(aServerName); +end; +{==============================================================================} + + + +{===TNexusDBConnection=========================================================} +procedure TNexusDBConnection.conAddToEngineContainer; +begin + if conEngineContainerAdded then + Exit; + if not Assigned(conEngineContainer) then + Exit; + + _driver.nxdEnginesPadlock.Lock; + try + conEngineContainerPrev := conEngineContainer.becConnectionsTail; + conEngineContainer.becConnectionsTail := Self; + if Assigned(conEngineContainerPrev) then + conEngineContainerPrev.conEngineContainerNext := Self; + if not Assigned(conEngineContainer.becConnectionsHead) then + conEngineContainer.becConnectionsHead := Self; + finally + _driver.nxdEnginesPadlock.Unlock; + end; + + conEngineContainerAdded := True; +end; +{------------------------------------------------------------------------------} +procedure TNexusDBConnection.conRemoveFromEngineContainer; +begin + if not conEngineContainerAdded then + Exit; + + _driver.nxdEnginesPadlock.Lock; + try + if Assigned(conEngineContainerNext) then + conEngineContainerNext.conEngineContainerPrev := conEngineContainerPrev + else + if conEngineContainer.becConnectionsTail = Self then + conEngineContainer.becConnectionsTail := conEngineContainerPrev; + + if Assigned(conEngineContainerPrev) then + conEngineContainerPrev.conEngineContainerNext := conEngineContainerNext + else + if conEngineContainer.becConnectionsHead = Self then + conEngineContainer.becConnectionsHead := conEngineContainerNext; + + conEngineContainerNext := nil; + conEngineContainerPrev := nil; + + conEngineContainer.CheckedFree; + conEngineContainer := nil; + finally + _driver.nxdEnginesPadlock.Unlock; + end; + conEngineContainerAdded := False; +end; +{------------------------------------------------------------------------------} +procedure TNexusDBConnection.conSetEngineContainer(aContainer: TNexusDBBaseEngineContainer); +begin + if conEngineContainer <> aContainer then begin + conSession.Close; + conSession.ServerEngine := nil; + + conRemoveFromEngineContainer; + + conEngineContainer := aContainer; + if Assigned(conEngineContainer) then + conSession.ServerEngine := conEngineContainer.Engine; + + conAddToEngineContainer; + end; +end; +{------------------------------------------------------------------------------} +constructor TNexusDBConnection.Create(aOwner: TComponent); +begin + inherited; + + conSession := TnxSession.Create(Self); + conDatabase := TnxDatabase.Create(Self); + conDatabase.Session := conSession; +end; +{------------------------------------------------------------------------------} +destructor TNexusDBConnection.Destroy; +begin + EngineContainer := nil; + inherited; +end; +{------------------------------------------------------------------------------} +function TNexusDBConnection.GetConnected: Boolean; +begin + Result := conDatabase.Connected; +end; +{------------------------------------------------------------------------------} +procedure TNexusDBConnection.SetConnected(Value: Boolean); +begin + if (csDestroying in ComponentState) then Exit; + + try + conSession.Active := Value; + conDatabase.Connected := Value; + except + conSession.Active := False; + conDatabase.Connected := False; + raise; + end; +end; +{==============================================================================} + + + +{===TDAENexusDBDriver==========================================================} +constructor TDAENexusDBDriver.Create(aOwner: TComponent); +begin + inherited; + nxdEnginesPadlock := TnxPadlock.Create; + nxdEngines := TStringList.Create; +end; +{------------------------------------------------------------------------------} +destructor TDAENexusDBDriver.Destroy; +var + i : Integer; +begin + if Assigned(nxdEnginesPadlock) then begin + nxdEnginesPadlock.Lock; + try + if Assigned(nxdEngines) then begin + for i := Pred(nxdEngines.Count) downto 0 do + nxdEngines.Objects[i].Free; + nxdEngines.Clear; + end; + finally + nxdEnginesPadlock.Unlock; + end; + end; + inherited; + FreeAndNil(nxdEnginesPadlock); + FreeAndNil(nxdEngines); +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBDriver.GetAuxParams(const AuxDriver: string; out List: IROStrings); +begin + inherited; +end; +{------------------------------------------------------------------------------} +function TDAENexusDBDriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + {$IFDEF DataAbstract_NexusDBPack} + Result := [doDatabaseName]; + {$ELSE} + Result := [doServerName, doDatabaseName, doLogin]; + {$ENDIF} +end; +{------------------------------------------------------------------------------} +function TDAENexusDBDriver.GetConnectionClass: TDAEConnectionClass; +begin + Result := TDAENexusDBConnection; +end; +{------------------------------------------------------------------------------} +function TDAENexusDBDriver.GetDefaultConnectionType( + const AuxDriver: string): string; +begin + Result:=Nexus_DriverType; +end; + +function TDAENexusDBDriver.GetDefaultCustomParameters: string; +begin + Result:=''; +end; + +function TDAENexusDBDriver.GetDescription: string; +begin + Result := csNexusDBDriver + {$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF} + {$IFDEF DataAbstract_NexusDBPack} + rsEmbeddedOnly{$ENDIF}; +end; +{------------------------------------------------------------------------------} +function TDAENexusDBDriver.GetDriverID: string; +begin + Result := csNexusDB; +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBDriver.RegisterServerEngine(aServerEngine : TnxBaseServerEngine; + const aName : string); +begin + TNexusDBRegisteredEngineContainer.Create(csRegistered + csUrlSeperator + aName, aServerEngine); +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBDriver.UnregisterServerEngine(aServerEngine : TnxBaseServerEngine); +var + i : Integer; +begin + _driver.nxdEnginesPadlock.Lock; + try + for i := Pred(_driver.nxdEngines.Count) downto 0 do + if _driver.nxdEngines.Objects[i] is TNexusDBRegisteredEngineContainer then + if TNexusDBRegisteredEngineContainer(_driver.nxdEngines.Objects[i]).regecServerEngine = aServerEngine then + _driver.nxdEngines.Objects[i].Free; + finally + _driver.nxdEnginesPadlock.Unlock; + end; +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBDriver.UnregisterServerEngine(const aName : string); +var + i : Integer; +begin + _driver.nxdEnginesPadlock.Lock; + try + if _driver.nxdEngines.Find(csRegistered + csUrlSeperator + aName, i) then + _driver.nxdEngines.Objects[i].Free; + finally + _driver.nxdEnginesPadlock.Unlock; + end; +end; +{==============================================================================} + + + +{===TDAENexusDBConnection======================================================} +function TDAENexusDBConnection.CreateCustomConnection: TCustomConnection; +begin + Result := TNexusDBConnection.Create(nil); + dacConnection := TNexusDBConnection(Result); +end; +{------------------------------------------------------------------------------} +function TDAENexusDBConnection.CreateMacroProcessor: TDASQLMacroProcessor; +begin + Result := TOracleMacroProcessor.Create; +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBConnection.DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject : TCustomConnection); +var + S, T : string; + i : Integer; + sl : TStringList; + tpc : TnxBaseTransportClass; +begin + inherited; + + with aConnStrParser do begin + (aConnectionObject as TNexusDBConnection).Session.Close; + + if Self.UserID <> '' then + dacConnection.Session.Username := Self.UserID + else + dacConnection.Session.Username := UserID; + + if Self.Password <> '' then + dacConnection.Session.Password := Self.Password + else + dacConnection.Session.Password := Password; + + Server := Trim(Server); + + if Server = '' then + Server := csEmbeddedDefault; + + _driver.nxdEnginesPadlock.Lock; + try + S := Server; + SetLength(S, nxMaxI32(0, Pred(Pos(csUrlSeperator, S)))); + + if S = '' then + raise EDADriverException.Create(rsNoProtocolHasBeenSpecified); + + if not _driver.nxdEngines.Find(Server, i) then begin + + if SameText(S, csEmbedded) then begin + (aConnectionObject as TNexusDBConnection).EngineContainer := + TNexusDBEmbeddedEngineContainer.Create(Server); + end else if SameText(S, csRegistered) then begin + raise EDADriverException.CreateFmt(rsNoServerEngineHasBeenRegisteredAs, [Server]); + end else begin + {$IFDEF DataAbstract_NexusDBPack} + raise EDADriverException.Create(rsThisDriverOnlySupportsEmbeddedServerEngines); + {$ELSE} + sl := TStringList.Create; + try + TnxBaseDirectTransport.GetRegisteredClasses(sl); + tpc := nil; + for i := 0 to Pred(sl.Count) do + if SameText(S, TnxBaseTransportClass(sl.Objects[i]).ProtocolName) then begin + tpc := TnxBaseTransportClass(sl.Objects[i]); + Break; + end; + if not Assigned(tpc) then + raise EDADriverException.CreateFmt(rsNoTransportAvailableForProtocol, [S]); + (aConnectionObject as TNexusDBConnection).EngineContainer := + TNexusDBRemoteEngineContainer.Create(Server, AuxParamsString, tpc); + finally + FreeAndNil(sl); + end; + {$ENDIF} + end; + end else + (aConnectionObject as TNexusDBConnection).EngineContainer := + (_driver.nxdEngines.Objects[i] as TNexusDBBaseEngineContainer); + finally + _driver.nxdEnginesPadlock.Unlock; + end; + + Database := Trim(Database); + + S := Database; + SetLength(S, nxMaxI32(0, Pred(Pos(csUrlSeperator, S)))); + if Pos(csUrlSeperator, Database) > 0 then + T := Copy(Database, Length(S) + 4, High(Integer)) + else + T := Database; + + if S = '' then + if (aConnectionObject as TNexusDBConnection).EngineContainer.becGetEngine is TnxServerEngine then + S := csPath + else + S := csAlias; + + if SameText(S, csAlias) then + (aConnectionObject as TNexusDBConnection).Database.AliasName := T + else if SameText(S, csPath) then + (aConnectionObject as TNexusDBConnection).Database.AliasPath := T + else + raise EDADriverException.CreateFmt(rsUnknownDatabaseType, [S]); + + end; +end; +{------------------------------------------------------------------------------} +function TDAENexusDBConnection.DoBeginTransaction: Integer; +begin + Result := -1; + dacConnection.Database.StartTransaction; +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBConnection.DoCommitTransaction; +begin + dacConnection.Database.Commit; +end; +{------------------------------------------------------------------------------} +function TDAENexusDBConnection.DoGetInTransaction: Boolean; +begin + Result := dacConnection.Database.InTransaction; +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBConnection.DoGetTableFields(const aTableName : string; + out aFields : TDAFieldCollection); +var + i : Integer; + fld: TField; +begin + dacConnection.Open; + + with TnxQuery.Create(nil) do try + SQL.Text := 'SELECT * FROM "' + aTableName + '" WHERE ''c'' <> ''c'''; + Database := dacConnection.Database; + Open; + + aFields := TDAFieldCollection.Create(nil); + try + for i := 0 to Pred(FieldCount) do begin + fld:=Fields.Fields[i]; + with aFields.Add do begin + Name := fld.FieldName; + Size := fld.Size; + Required := fld.Required; + ReadOnly := fld.ReadOnly; + Calculated := fld.Calculated; + DisplayWidth := fld.DisplayWidth; + DisplayLabel := fld.DisplayLabel; + DataType := VCLTypeToDAType(fld.DataType); + if DataType = datDecimal then begin + case fld.DataType of + ftBCD: begin + DecimalPrecision:= TBCDField(fld).Precision; + DecimalScale:= TBCDField(fld).Size; + end; + ftFMTBCD: begin + DecimalPrecision:= TFMTBCDField(fld).Precision; + DecimalScale:= TFMTBCDField(fld).Size; + end; + end; + end; + end; + end; + except + FreeAndNil(aFields); + raise; + end; + finally + Free; + end; +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBConnection.DoGetTableNames(out aList: IROStrings); +begin + inherited; + dacConnection.Database.Open; + dacConnection.Database.GetTableNames(aList.Strings); +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBConnection.DoRollbackTransaction; +begin + dacConnection.Database.Rollback; +end; +{------------------------------------------------------------------------------} +function TDAENexusDBConnection.GetDatasetClass: TDAEDatasetClass; +begin + Result := TDAENexusDBQuery; +end; + +function TDAENexusDBConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + Result:=TDAENexusStoredProcedure; +end; + +{------------------------------------------------------------------------------} +function TDAENexusDBConnection.DoGetLastAutoInc(const GeneratorName: string): integer; +begin + // dacConnection.Database.GetAutoIncValue(GeneratorName, Cardinal(Result)); // NXDB2: Changed + dacConnection.Database.GetAutoIncValue(GeneratorName, + dacConnection.Session.Password, + Cardinal(Result)); +// Dec(Result); +end; +{==============================================================================} + + + +{===TDAENexusDBQuery===========================================================} +function TDAENexusDBQuery.CreateDataset(aConnection: TDAEConnection): TDataSet; +begin + Result := TnxQuery.Create(nil); + with TnxQuery(Result) do begin + Database := TDAENexusDBConnection(aConnection).dacConnection.Database; + RequestLive := False; + end; +end; +{------------------------------------------------------------------------------} +function TDAENexusDBQuery.DoExecute: Integer; +begin + with TnxQuery(DataSet) do begin + ExecSQL; + Result := RowsAffected; + end; +end; +{------------------------------------------------------------------------------} +function TDAENexusDBQuery.DoGetSQL: string; +begin + Result := TnxQuery(DataSet).SQL.Text +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBQuery.DoPrepare(Value: Boolean); +begin + TnxQuery(DataSet).Prepared := Value; +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBQuery.DoSetSQL(const Value: string); +begin + TnxQuery(DataSet).SQL.Text := Value; +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBQuery.SetParamValues(AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams, TnxQuery(DataSet).Params); +end; + +procedure TDAENexusDBQuery.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TnxQuery(DataSet).Params); +end; + +procedure TDAENexusDBQuery.ClearParams; +begin + inherited; + TnxQuery(DataSet).Params.Clear; +end; + + +{==============================================================================} + +exports GetDriverObject Name func_GetDriverObject; + +procedure TDAENexusDBConnection.DoGetStoredProcedureNames( + out List: IROStrings); +begin + inherited; + dacConnection.Database.Open; + dacConnection.Database.GetStoredProcNames(List.Strings); +end; + + +{ TDAENexusStoredProcedure } + +function TDAENexusStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + Result := TnxStoredProc.Create(nil); + with TnxStoredProc(Result) do begin + Database := TDAENexusDBConnection(aConnection).dacConnection.Database; + RequestLive := False; + end; +end; + +function TDAENexusStoredProcedure.Execute: integer; +begin + SetParamValues(GetParams); + Result:=DoExecute; + GetParamValues(GetParams); +end; + +function TDAENexusStoredProcedure.DoGetSQL: string; +begin + Result:=''; +end; + +procedure TDAENexusStoredProcedure.DoSetSQL(const Value: string); +begin +// +end; + +procedure TDAENexusStoredProcedure.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams,TnxStoredProc(Dataset).Params); +end; + +function TDAENexusStoredProcedure.GetStoredProcedureName: string; +begin + Result:=TnxStoredProc(Dataset).StoredProcName; +end; + +procedure TDAENexusStoredProcedure.SetParamValues(AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams,TnxStoredProc(Dataset).Params); +end; + +procedure TDAENexusStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TnxStoredProc(Dataset).StoredProcName:=Name; +end; + +procedure TDAENexusStoredProcedure.RefreshParams; +begin + TnxStoredProc(DataSet).RefreshParam; + RefreshParamsStd(TnxStoredProc(DataSet).Params); +end; + +procedure TDAENexusStoredProcedure.DoPrepare(Value: boolean); +begin + TnxStoredProc(DataSet).Prepared:=Value; +end; + + +function TDAENexusStoredProcedure.DoExecute: integer; +begin + TnxStoredProc(Dataset).ExecProc; + Result:=-1; +end; + + +function TDAENexusDBConnection.IdentifierNeedsQuoting( + const iIdentifier: string): boolean; +begin + Result := inherited IdentifierNeedsQuoting(iIdentifier) or IsReservedName(iIdentifier); +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); +finalization + UnregisterDriverProc(GetDriverObject); + try + _driver.Free; + except end; + _driver := nil; +end. + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAODACDriver.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAODACDriver.pas new file mode 100644 index 0000000..6dfce43 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAODACDriver.pas @@ -0,0 +1,667 @@ +unit uDAODACDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up +{ platform: Win32 +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$I ..\DataAbstract.inc} + +{$R DataAbstract_ODACDriver_Glyphs.res} + +{ + If you have the version with source code, uncomment the following conditional to + make this unit compile. +} + +{.$DEFINE SOURCECODEVERSION} + +interface + +uses DB, Classes, uDAEngine, uDAInterfaces, uDAADOInterfaces, uROClasses, Variants, + uDAOracleInterfaces, Ora, DBAccess, DASQLMonitor, OraSQLMonitor, OraSmart, uDAMacroProcessors, uDAUtils, OraClasses; + +type { TDAODACDriver } + TDAODACDriver = class(TDADriverReference) + end; + + { TDAEODACDriver } + TDAEODACDriver = class(TDAOracleDriver) + private + fMonitor: TOraSQLMonitor; + fTraceCallBack: TDALogTraceEvent; + + procedure OnODACTrace(Sender: TObject; Text: string; Flag: TDATraceFlag); + + protected + function GetConnectionClass: TDAEConnectionClass; override; + + // IDADriver + function GetDriverID: string; override; + function GetDescription: string; override; + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + + procedure DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); override; + + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; + function GetDefaultCustomParameters: string; override; + + public + end; + + { TDAEODACConnection } + TDAEODACConnection = class(TDAOracleConnection) + private + fConnection: TORASession; + protected + function CreateCustomConnection: TCustomConnection; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + + public + function GetDatabaseNames: IROStrings; + end; + + { TDAEODACQuery } + TDAEODACQuery = class(TDAEDataset, IDAOracleDataset, IDAMustSetParams) + private + + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + function intVCLTypeToDAType(aFieldType: TFieldType): TDADataType;override; + procedure ClearParams; override; + // IDADataset + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: boolean); override; + procedure DoSetActive(Value: boolean); override; + + // IOracleDataset + function GetLockMode: TDAOracleLockMode; + procedure SetLockMode(Value: TDAOracleLockMode); + function GetOptions: TDAOracleOptions; + procedure SetOptions(Value: TDAOracleOptions); + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + { TDAEODACStoredProcedure } + TDAEODACStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + function intVCLTypeToDAType(aFieldType: TFieldType): TDADataType;override; + + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function DoExecute: integer; override; + function Execute: integer; override; + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses + SysUtils, + uDADriverManager, uDARes, uROBinaryHelpers; + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAODACDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAEODACDriver.Create(nil); + result := _driver; +end; + + +procedure ReadODACParamValues(AParams: TDAParamCollection;aDACParams: TOraParams;pvSession: TOraSession); +var + i: integer; + lParam: TOraParam; + ms: IROStream; +begin + for i := 0 to aDACParams.Count - 1 do begin + lParam := aDACParams[i]; + if (lParam.ParamType in [ptOutput, ptInputOutput, ptResult]) then + if ord(lParam.DataType) = ftBFile then begin + ms := TROStream.Create; + lParam.AsBFile.SaveToStream(ms.Stream); + ms.Position:=0; + Aparams.ParamByName(lParam.Name).LoadFromStream(ms); + ms:=nil; + end + else + Aparams.ParamByName(lParam.Name).Value := lParam.Value; + end; +end; + + +procedure WriteODACParamValues(InputParams: TDAParamCollection;OutputParams: TOraParams;pvSession: TOraSession); +var i : integer; + par : uDAInterfaces.TDAParam; + outpar : TOraParam; + ms: IROStream; + blobtype : TFieldType; + lvOraLob : TOralob; +begin + for i := 0 to (InputParams.Count-1) do begin + par := InputParams[i]; + outpar := OutputParams.ParamByName(par.Name); + + // If no blob type is specified, then gets the default field type. + // BlobType is only meaningful to Oracle. MSSQL works fine just setting the DataType + blobtype := BlobTypeMappings[par.BlobType]; + if (blobtype=ftUnknown) then blobtype := DADataTypesMappings[par.DataType]; + + case par.DataType of + datBlob : begin + outpar.ParamType := TParamType(par.ParamType); + outpar.DataType := DADataTypesMappings[par.DataType]; + if par.ParamType <> daptOutput then begin + ms := TROStream.Create; + par.SaveToStream(ms); + ms.Position := 0; + lvOraLob := TOralob.Create(pvSession.OCISvcCtx); + try + lvOraLob.CreateTemporary(ltBlob); + if ms.Size>0 then lvOraLob.LoadFromStream(ms.Stream); + lvOraLob.WriteLob; + outpar.AsOraBLOB := lvOraLob; + finally + lvOraLob.Free; + end; + end; + + end; + datMemo : begin + outpar.ParamType := TParamType(par.ParamType); + outpar.DataType := ftMemo; + + // Only happens with Oracle + if (blobtype<>ftUnknown) then outpar.DataType := blobtype; + if par.ParamType <> daptOutput then outpar.Value := par.Value; + end; + else begin + outpar.ParamType := TParamType(par.ParamType); + case par.DataType of + datAutoInc : outpar.DataType := ftInteger; + datLargeAutoInc: outpar.DataType := ftLargeInt; + else + outpar.DataType := DADataTypesMappings[par.DataType]; + end; + if par.ParamType <> daptOutput then outpar.Value := par.Value; + end; + end; + end; +end; + +{ TDAEODACConnection } + +procedure TDAEODACConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +begin + inherited; + + with aConnStrParser do begin + + if (Self.UserID <> '') then + fConnection.Username := Self.UserID + else + fConnection.Username := UserID; + + if (Self.Password <> '') then + fConnection.Password := Self.Password + else + fConnection.Password := Password; + + fConnection.Server := Server; + fConnection.ConnectPrompt := FALSE; + fConnection.Debug := (AuxParams['Debug']='1'); + + fConnection.Options.Net := AuxParams['Net'] = '1'; + end; +end; + +function TDAEODACConnection.DoBeginTransaction: integer; +begin + fConnection.StartTransaction; + result := 0; +end; + +procedure TDAEODACConnection.DoCommitTransaction; +begin + fConnection.Commit; +end; + +function TDAEODACConnection.CreateCustomConnection: TCustomConnection; +begin + fConnection := TORASession.Create(nil); + fConnection.LoginPrompt := FALSE; + + { ToDo: add a COnnectionString parameter to set + fConnection.Debug := TRUE; } + + result := fConnection; +end; + +function TDAEODACConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEODACQuery; +end; + +function TDAEODACConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEODACStoredProcedure; +end; + +procedure TDAEODACConnection.DoRollbackTransaction; +begin + fConnection.Rollback; +end; + +function TDAEODACConnection.DoGetInTransaction: boolean; +begin + result := fConnection.InTransaction +end; + +function TDAEODACConnection.GetDatabaseNames: IROStrings; +begin + Result := TROStrings.Create(); + fConnection.GetDatabaseNames(Result.Strings); +end; + + +{ TDAEODACDriver } + +function TDAEODACDriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + result := [doServerName, doLogin, doCustom]; +end; + +function TDAEODACDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEODACConnection; +end; + +function TDAEODACDriver.GetDefaultCustomParameters: string; +begin + result := 'Net=0'; +end; + +function TDAEODACDriver.GetDescription: string; +begin + result := 'Core Lab ODAC Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; +end; + +function TDAEODACDriver.GetDriverID: string; +begin + result := 'ODAC'; +end; + +procedure TDAEODACDriver.GetAuxParams(const AuxDriver: string; out List: IROStrings); +begin + inherited; + List.Add('Net=0,1'); +end; + +procedure TDAEODACDriver.OnODACTrace(Sender: TObject; Text: string; Flag: TDATraceFlag); +begin + if Assigned(fTraceCallback) then fTraceCallback(Sender, Text, integer(Flag)); +end; + +procedure TDAEODACDriver.DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); +var + sdacopts: TDATraceFlags; +begin + inherited; + + if TraceActive then begin + if (fMonitor = nil) then fMonitor := TOraSQLMonitor.Create(Self); + + fMonitor.Active := FALSE; + fMonitor.OnSQL := OnODACTrace; + + sdacopts := []; + if (toPrepare in TraceOptions) then sdacopts := sdacopts + [tfQPrepare]; + if (toExecute in TraceOptions) then sdacopts := sdacopts + [tfQExecute]; + if (toFetch in TraceOptions) then sdacopts := sdacopts + [tfQFetch]; + if (toError in TraceOptions) then sdacopts := sdacopts + [tfError]; + if (toStmt in TraceOptions) then sdacopts := sdacopts + [tfStmt]; + if (toConnect in TraceOptions) then sdacopts := sdacopts + [tfConnect]; + if (toTransact in TraceOptions) then sdacopts := sdacopts + [tfTransact]; + if (toBlob in TraceOptions) then sdacopts := sdacopts + [tfBlob]; + if (toService in TraceOptions) then sdacopts := sdacopts + [tfService]; + if (toMisc in TraceOptions) then sdacopts := sdacopts + [tfMisc]; + if (toParams in TraceOptions) then sdacopts := sdacopts + [tfParams]; + + fTraceCallBack := Callback; + + fMonitor.TraceFlags := sdacopts; + fMonitor.Active := TRUE; + end + else begin + FreeAndNIL(fMonitor); + fTraceCallback := nil; + end; +end; + +{ TDAEODACQuery } + +function TDAEODACQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TSmartQuery.Create(nil); + TSmartQuery(result).Debug := TDAEODACConnection(aConnection).fConnection.Debug; + TSmartQuery(result).ReadOnly := TRUE; + TSmartQuery(result).FetchAll := True; //for preventing creating an additional session when you call StartTransaction (an known issue of OLEDB) + TSmartQuery(result).Unidirectional := True; + TSmartQuery(result).Session := TDAEODACConnection(aConnection).fConnection; +end; + +function TDAEODACQuery.DoGetSQL: string; +begin + result := TSmartQuery(Dataset).SQL.Text; +end; + +procedure TDAEODACQuery.DoSetSQL(const Value: string); +begin + TSmartQuery(Dataset).SQL.Text := Value; +end; + +function TDAEODACQuery.GetLockMode: TDAOracleLockMode; +begin + result := TDAOracleLockMode(TSmartQuery(Dataset).LockMode) +end; + +procedure TDAEODACQuery.SetLockMode(Value: TDAOracleLockMode); +begin + TSmartQuery(Dataset).LockMode := TLockMode(Value) +end; + +procedure TDAEODACQuery.SetOptions(Value: TDAOracleOptions); +var + {$IFDEF SOURCECODEVERSION} + dsopts: TOraDataSetOptions; + {$ELSE} + dsopts: TOraDataSetOptionsDS; + {$ENDIF} +begin + {$IFDEF SOURCECODEVERSION} + dsopts := TSmartQuery(Dataset).Options; + {$ELSE} + dsopts := TSmartQuery(Dataset).OptionsDS; + {$ENDIF} + + TSmartQuery(Dataset).DMLRefresh := True; // To get the output params when we exec SPs + dsopts.AutoClose := opAutoClose in Value; + dsopts.DefaultValues := opDefaultValues in Value; + dsopts.LongStrings := opLongStrings in Value; + dsopts.QueryRecCount := opQueryRecCount in Value; + dsopts.CacheLobs := opCacheLobs in Value; + dsopts.DeferredLobRead := opDeferredLobRead in Value; + dsopts.KeepPrepared := opKeepPrepared in Value; +end; + +function TDAEODACQuery.GetOptions: TDAOracleOptions; +var + {$IFDEF SOURCECODEVERSION} + dsopts: TOraDataSetOptions; + {$ELSE} + dsopts: TOraDataSetOptionsDS; + {$ENDIF} +begin + {$IFDEF SOURCECODEVERSION} + dsopts := TSmartQuery(Dataset).Options; + {$ELSE} + dsopts := TSmartQuery(Dataset).OptionsDS; + {$ENDIF} + + result := []; + + if dsopts.AutoClose then result := result + [opAutoClose]; + if dsopts.DefaultValues then result := result + [opDefaultValues]; + if dsopts.LongStrings then result := result + [opLongStrings]; + if dsopts.QueryRecCount then result := result + [opQueryRecCount]; + if dsopts.CacheLobs then result := result + [opCacheLobs]; + if dsopts.DeferredLobRead then result := result + [opDeferredLobRead]; + if dsopts.KeepPrepared then result := result + [opKeepPrepared]; +end; + +procedure TDAEODACQuery.DoPrepare(Value: boolean); +begin + TSmartQuery(Dataset).Prepared := Value +end; + +function TDAEODACQuery.DoExecute: integer; +begin + TSmartQuery(Dataset).ExecSQL; + result := TSmartQuery(Dataset).RowsAffected; +end; + +procedure TDAEODACQuery.SetParamValues(AParams: TDAParamCollection); +begin + WriteODACParamValues(AParams, TSmartQuery(Dataset).Params, TSmartQuery(Dataset).Session); +end; + +procedure TDAEODACQuery.GetParamValues(AParams: TDAParamCollection); +begin + ReadODACParamValues(AParams, TSmartQuery(Dataset).Params, TSmartQuery(Dataset).Session) +end; + + +function ExtractTableName(aSQLStatement: string): string; +var sql: string; + idx, i, x: integer; +begin + result := ''; + + sql := UpperCase(aSQLStatement); + ReplaceChar(sql, [#13, #9, #10], #32); + + idx := Pos(' FROM ', sql); + if (idx=0) then Exit; + + for i := idx+6 to Length(sql) do begin + if (sql[i]<>#32) then begin + for x := i to Length(sql) do + if not (sql[x] in ['A'..'Z', '0'..'9', '.', '_']) then begin + result := Trim(Copy(sql, i, x-i)); + Exit; + end; + end; + end; +end; + +procedure TDAEODACQuery.DoSetActive(Value: boolean); +var willCreateFields: boolean; + fieldColl: TDAFieldCollection; + tableName: string; + fld: TDAField; + qry: TSmartQuery; +begin + fieldColl:=nil; // prevent warnings + willCreateFields := FALSE; + if Value then begin + fieldColl := inherited GetFields; + willCreateFields := fieldColl.Count=0; + end; + + inherited; + + if not willCreateFields then Exit; + + { Determines which ones are part of the PK } + tableName := UpperCase(ExtractTableName(DoGetSQL)); + + if (tableName='') then Exit; + qry := TSmartQuery.Create(NIL); + try + qry.Assign(Dataset); + qry.SQL.Text := Format( + 'SELECT cols.column_name, cols.position '+ + 'FROM all_constraints cons, all_cons_columns cols '+ + 'WHERE cols.table_name = ''%s'' AND cons.constraint_type = ''P'' AND cons.constraint_name = cols.constraint_name '+ + 'AND cons.owner = cols.owner ORDER BY cols.position', [tableName]); + qry.Open; + if (qry.RecordCount=0) then Exit; + + while not qry.Eof do try + fld := fieldColl.FindField(qry.Fields[0].AsString); + if (fld<>NIL) then begin + fld.InPrimaryKey := TRUE; + fld.Required := TRUE; + end; + finally + qry.Next; + end; + finally + qry.Free; + end; +end; + +function TDAEODACQuery.intVCLTypeToDAType( + aFieldType: TFieldType): TDADataType; +begin + if ord(aFieldType) in [ftTimeStampTZ,ftTimeStampLTZ] then aFieldType:=ftTimeStamp; + if ord(aFieldType) in [ftBFile] then aFieldType:=ftBlob; + Result:= inherited intVCLTypeToDAType(aFieldType); +end; + +procedure TDAEODACQuery.ClearParams; +begin + inherited; + TSmartQuery(Dataset).Params.Clear; +end; + +{ TDAEODACStoredProcedure } + +function TDAEODACStoredProcedure.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TOraStoredProc.Create(nil); + TOraStoredProc(result).Debug := TDAEODACConnection(aConnection).fConnection.Debug; + TOraStoredProc(result).Session := TDAEODACConnection(aConnection).fConnection; +end; + +function TDAEODACStoredProcedure.Execute: integer; +var +// i: integer; + _params: TDAParamCollection; + // lParam: DBAccess.TDAParam; +begin + _params := GetParams; + setParamValues(_Params); +{ + with TOraStoredProc(Dataset) do begin + if (Params.Count <> _Params.Count) then TOraStoredProc(Dataset).PrepareSQL; + + for i := 0 to (Params.Count - 1) do + if (Params[i].ParamType in [ptInput, ptInputOutput]) then + Params[i].Value := _params.ParamByName(Params[i].Name).Value; + + for i := 0 to (_params.Count - 1) do begin + lParam := Params.ParamByName(_params[i].Name); + if (_params[i].DataType = datString) and (_params[i].Size > 4000) and (lParam.ParamType in [ptOutput, ptInputOutput]) then + lParam.Size := _params[i].Size; + end; + end; +} + result := DoExecute; + GetParamValues(_Params); +end; + +function TDAEODACStoredProcedure.GetStoredProcedureName: string; +begin + result := TOraStoredProc(Dataset).StoredProcName; +end; + +procedure TDAEODACStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TOraStoredProc(Dataset).StoredProcName := Name; +end; + +procedure TDAEODACStoredProcedure.SetParamValues(AParams: TDAParamCollection); +begin + if (AParams.Count <> TOraStoredProc(Dataset).Params.Count) then TOraStoredProc(Dataset).PrepareSQL; + WriteODACParamValues(AParams, TOraStoredProc(Dataset).Params, TOraStoredProc(Dataset).Session); +end; + +procedure TDAEODACStoredProcedure.GetParamValues(AParams: TDAParamCollection); +begin + ReadODACParamValues(AParams, TOraStoredProc(Dataset).Params, TOraStoredProc(Dataset).Session) +end; + +procedure TDAEODACStoredProcedure.RefreshParams; +begin + TOraStoredProc(Dataset).PrepareSQL; + RefreshParamsStd(TOraStoredProc(Dataset).Params); +end; + +function TDAEODACStoredProcedure.intVCLTypeToDAType( + aFieldType: TFieldType): TDADataType; +begin + if ord(aFieldType) in [ftTimeStampTZ,ftTimeStampLTZ] then aFieldType:=ftTimeStamp; + Result:= inherited intVCLTypeToDAType(aFieldType); +end; + +exports GetDriverObject name func_GetDriverObject; + +function TDAEODACStoredProcedure.DoExecute: integer; +begin + with TOraStoredProc(Dataset) do begin + ExecProc; + result := RowsAffected; + end; +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAPostgresDACDriver.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAPostgresDACDriver.pas new file mode 100644 index 0000000..e37aa3e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAPostgresDACDriver.pas @@ -0,0 +1,353 @@ +unit uDAPostgresDACDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up, Kylix 3 and up +{ platform: Win32, Linux +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$I ..\DataAbstract.inc} + +{$R DataAbstract_PostgresDACDriver_Glyphs.res} + +interface + +uses DB, Classes, uDAEngine, uDAInterfaces, uDAADOInterfaces, uROClasses, + uROBinaryHelpers, uDAUtils, PSQLDbTables, uDAPostgresInterfaces; + +type { TDAPostgresDACDriver } + TDAPostgresDACDriver = class(TDADriverReference) + end; + + { TDAEPostgresDACDriver } + TDAEPostgresDACDriver = class(TDAPostgresDriver) + private + protected + function GetConnectionClass: TDAEConnectionClass; override; + + // IDADriver + function GetDriverID: string; override; safecall; + function GetDescription: string; override; safecall; + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; safecall; + end; + + { TDAEMyConnection } + TDAEPostgresDACConnection = class(TDAEPostgresConnection) + private + function GetConnection: TPSQLDatabase; + protected + function CreateCustomConnection: TCustomConnection; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + property Connection: TPSQLDatabase read GetConnection; + public + end; + + { TDAEPostgresDACQuery } + TDAEPostgresDACQuery = class(TDAEDataset,IDAMustSetParams) + private + + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure ClearParams; override; + function DoExecute: integer; override;safecall; + function DoGetSQL: string; override;safecall; + procedure DoSetSQL(const Value: string); override;safecall; + procedure DoPrepare(Value: boolean); override;safecall; + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + public + end; + + { TDAEPostgresDACStoredProcedure } + TDAEPostgresDACStoredProcedure = class(TDAEStoredProcedure,IDAMustSetParams) + private + fConnection:TDAEConnection; + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + function GetStoredProcedureName: string; override; safecall; + procedure SetStoredProcedureName(const Name: string); override; safecall; + function DoExecute: integer; override;safecall; + function Execute: integer; override;safecall; + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses + SysUtils, + uDADriverManager, uDARes; + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAPostgresDACDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAEPostgresDacDriver.Create(nil); + result := _driver; +end; + +{$IFDEF LATEST_MyDAC} +{$I uDACRLabsUtils.inc} +{$ENDIF LATEST_MyDAC} + +{ TDAEPostgresDacConnection } + +function TDAEPostgresDacConnection.DoBeginTransaction: integer; +begin + Connection.StartTransaction; + result := 0; +end; + +procedure TDAEPostgresDacConnection.DoCommitTransaction; +begin + Connection.Commit; +end; + +function TDAEPostgresDacConnection.GetConnection: TPsqlDatabase; +begin + result := TPsqlDatabase(inherited ConnectionObject); +end; + +function TDAEPostgresDacConnection.CreateCustomConnection: TCustomConnection; +begin + result := TPsqlDatabase.Create(nil); + TPsqlDatabase(result).LoginPrompt := false; +end; + +function TDAEPostgresDacConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEPostgresDacQuery; +end; + +function TDAEPostgresDacConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEPostgresDacStoredProcedure; +end; + +procedure TDAEPostgresDacConnection.DoRollbackTransaction; +begin + Connection.Rollback; +end; + +function TDAEPostgresDacConnection.DoGetInTransaction: boolean; +begin + result := Connection.InTransaction +end; + + +procedure TDAEPostgresDacConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +var + i: Integer; +begin + inherited; + + with aConnStrParser do begin + Connection.DatabaseName := Database; + + Connection.Host := Server; + + if (Self.UserID <> '') then + Connection.Username := Self.UserID + else + Connection.Username := UserID; + + if (Self.Password <> '') then + Connection.UserPassword := Self.Password + else + Connection.UserPassword := Password; + + for i := 0 to AuxParamsCount -1 do + begin + if AuxParams[AuxParamNames[i]] <> '' then + Connection.Params.Add(AuxParamNames[i]+'='+AuxParams[AuxParamNames[i]]); + end; + end; +end; + + +{ TDAEPostgresDacDriver } + +function TDAEPostgresDacDriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + Result := [doServerName, doDatabaseName, doLogin, doCustom]; +end; + +function TDAEPostgresDacDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEPostgresDacConnection; +end; + +function TDAEPostgresDacDriver.GetDescription: string; +begin + result := 'MicroOlap DAC for Postgres Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; +end; + +function TDAEPostgresDacDriver.GetDriverID: string; +begin + result := 'PostgresDAC'; +end; + + +{ TDAEPostgresDacQuery } + +procedure TDAEPostgresDACQuery.ClearParams; +begin + inherited; + TPSQLQuery(Dataset).Params.Clear; +end; + +function TDAEPostgresDacQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TPSQLQuery.Create(nil); + TPSQLQuery(result).UniDirectional := True; + TPSQLQuery(result).RequestLive := false; + TPSQLQuery(result).Database := TDAEPostgresDacConnection(aConnection).Connection; +end; + +function TDAEPostgresDacQuery.DoExecute: integer; +begin + TPSQLQuery(Dataset).ExecSQL; + result := TPSQLQuery(Dataset).RowsAffected; +end; + +function TDAEPostgresDacQuery.DoGetSQL: string; +begin + result := TPSQLQuery(Dataset).SQL.Text; +end; + +procedure TDAEPostgresDacQuery.DoPrepare(Value: boolean); +begin + TPSQLQuery(Dataset).Prepared := Value; +end; + +procedure TDAEPostgresDacQuery.DoSetSQL(const Value: string); +begin + TPSQLQuery(Dataset).SQL.Text := Value; +end; + +procedure TDAEPostgresDACQuery.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TPSQLQuery(Dataset).Params); +end; + +procedure TDAEPostgresDACQuery.SetParamValues(AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams, TPSQLQuery(Dataset).Params); +end; + + +{ TDAEADOStoredProcedure } + +function TDAEPostgresDacStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + fConnection := aConnection; + result := TPSQLStoredProc.Create(nil); + TPSQLStoredProc(result).Database := TDAEPostgresDacConnection(aConnection).Connection; +end; + +function TDAEPostgresDACStoredProcedure.DoExecute: integer; +begin + TPSQLStoredProc(Dataset).ExecProc; + result := -1; +end; + +function TDAEPostgresDacStoredProcedure.Execute: integer; +var + i: integer; + _params: TDAParamCollection; +begin + _params := GetParams; + + with TPSQLStoredProc(Dataset) do begin + for i := 0 to (ParamCount-1) do + if (Params[i].ParamType in [ptInput, ptInputOutput]) then + Params[i].Value := _params.ParamByName(Params[i].Name).Value; + + result := DoExecute; + + for i := 0 to (ParamCount-1) do + if (Params[i].ParamType in [ptOutput, ptInputOutput, ptResult]) then + _params.ParamByName(Params[i].Name).Value := Params[i].Value; + end; +end; + +procedure TDAEPostgresDACStoredProcedure.GetParamValues( + AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams,TPSQLStoredProc(Dataset).Params); +end; + +function TDAEPostgresDacStoredProcedure.GetStoredProcedureName: string; +begin + Result := TPSQLStoredProc(Dataset).StoredProcName; +end; + +procedure TDAEPostgresDACStoredProcedure.RefreshParams; +begin + RefreshParamsStd(TPSQLStoredProc(Dataset).Params); +end; + +procedure TDAEPostgresDACStoredProcedure.SetParamValues( + AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams,TPSQLStoredProc(Dataset).Params); +end; + +procedure TDAEPostgresDacStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TPSQLStoredProc(Dataset).StoredProcName := Name; +end; + +exports GetDriverObject name func_GetDriverObject; + + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDASDACDriver.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDASDACDriver.pas new file mode 100644 index 0000000..9a6787d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDASDACDriver.pas @@ -0,0 +1,585 @@ +unit uDASDACDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up +{ platform: Win32 +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$I ..\DataAbstract.inc} + +{$R DataAbstract_SDACDriver_Glyphs.res} + +interface + +uses + DB, Classes, uDAEngine, uDAInterfaces, uDAADOInterfaces, uROClasses, + DBAccess, MSAccess, DASQLMonitor, + MSSQLMonitor, Variants, uDAUtils; + +type { TDASDACDriver } + TDASDACDriver = class(TDADriverReference) + end; + + { TDAEADODriver } + TDAEADODriver = class(TDAMSSQLDriver) + private + fMonitor: TMSSQLMonitor; + fTraceCallBack: TDALogTraceEvent; + + procedure OnSDACTrace(Sender: TObject; Text: string; Flag: TDATraceFlag); + + protected + function GetConnectionClass: TDAEConnectionClass; override; + procedure DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); override; + + // IDADriver + function GetDriverID: string; override; + function GetDescription: string; override; + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; safecall; + function GetDefaultCustomParameters: String; override; safecall; + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + end; + + { TDAEMSConnection } + TDAEMSConnection = class(TDAMSConnection, IDAADOConnection, IDACanQueryDatabaseNames) + private + fMSConnection: TMSConnection; + +// procedure GetSysObjects(const aCondition: string; aList: TStrings); + + protected + function CreateCustomConnection: TCustomConnection; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + //procedure DoGetStoredProcedureParams(const aStoredProcedureName : string; out Params : TDAParamCollection); //override; + // IADOConnection + function GetProviderName: string; safecall; + function GetProviderType: TDAOleDBProviderType; safecall; + function GetCommandTimeout: Integer; safecall; + procedure SetCommandTimeout(const Value: Integer); safecall; + end; + + { TDAEMSQuery } + TDAEMSQuery = class(TDAEDataset, IDAMustSetParams) + private + + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure ClearParams; override; + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: boolean); override; + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + public + end; + + { TDAEADOStoredProcedure } + TDAEADOStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: integer; override; + function Execute: integer; override; + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses + SysUtils, + uDADriverManager, uDARes, OLEDBAccess, + uROBinaryHelpers; + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDASDACDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAEADODriver.Create(nil); + result := _driver; +end; + +{$I uDACRLabsUtils.inc} + +{ TDAEMSConnection } + +procedure TDAEMSConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +var + adoconn: string; + i: integer; +begin + inherited; + + with aConnStrParser do begin + adoconn := Format(stdMSSQL_ConnectionString, [UserID, Password, Database, Server]); + adoconn := ''; + if UserId <> '' then begin + if adoconn = '' then + AdoConn := 'User ID='+UserID + else + AdoConn := ADoConn + ';User ID='+UserID; + end; + if Password <> '' then begin + if adoconn = '' then + AdoConn := 'Password='+Password + else + AdoConn := ADoConn + ';Password='+Password; + end; + if DataBase <> '' then begin + if adoconn = '' then + AdoConn := 'Initial Catalog='+Database + else + AdoConn := ADoConn + ';Initial Catalog='+Database; + end; + if Server <> '' then begin + if adoconn = '' then + AdoConn := 'Data Source='+Server + else + AdoConn := ADoConn + ';Data Source='+Server; + end; + + AdoConn := ADoConn + ';'; + MSSQLSchemaEnabled := True; // by default + for i := 0 to AuxParamsCount -1 do + begin + if Uppercase(AuxParamNames[i]) = 'SCHEMAS' then + MSSQLSchemaEnabled := AuxParams['Schemas'] = '1' + else + adoconn := adoconn + AuxParamNames[i] + '=' + AuxParams[AuxParamNames[i]]+';'; + end; + + fMSConnection.ConnectString := adoconn; + + if (Self.UserID <> '') then fMSConnection.Username := Self.UserID; + + if (Self.Password <> '') then fMSConnection.Password := Self.Password; + end; +end; + +function TDAEMSConnection.DoBeginTransaction: integer; +begin + fMSConnection.StartTransaction; + result := 0; +end; + +procedure TDAEMSConnection.DoCommitTransaction; +begin + fMSConnection.Commit; +end; + +function TDAEMSConnection.CreateCustomConnection: TCustomConnection; +begin + fMSConnection := TMSConnection.Create(nil); + fMSConnection.LoginPrompt := FALSE; + + result := fMSConnection; +end; + +function TDAEMSConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEMSQuery; +end; + +function TDAEMSConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEADOStoredProcedure; +end; + +(*function SqlServerToDAType(aType:integer):TDADataType; +begin + case aType of + 34:result := datBlob; + 35:result := datMemo; + 36:result := datString; //uniqueidentifier + 48:result := datInteger; + 52:result := datInteger; + 56:result := datInteger; + 58:result := datDateTime; + 59:result := datFloat; + 60:result := datCurrency; + 61:result := datDateTime; + 62:result := datFloat; + //98 sql_variant + 99:result := datMemo;// ntext + 104:result := datBoolean; + 106:result := datFloat; + 108:result := datFloat; + 122:result := datCurrency; + 127:result := datInteger; + 165:result := datBlob; // varbinary + 167:result := datString; + 173:result := datBlob; // binary + 175:result := datString; // char + 189:result := datBlob; // timestamp + 231:result := datString; // nvarchar + 239:result := datString; //nchar + 240:result := datDateTime; + 241:result := datBlob;// xml + else result := datUnknown; + end; +end; + +procedure TDAEMSConnection.DoGetStoredProcedureParams(const aStoredProcedureName: string; out Params: TDAParamCollection); +var + ds : TMSQuery; + lID:string; +begin + ds := TMSQuery.Create(NIL); + try + + ds.Connection := fMSConnection; + ds.SQL.Text := 'select * from sysobjects where xtype=''P'' and name='''+aStoredProcedureName+''''; + ds.Open; + try + if ds.EOF then RaiseError('Stored Procedure %s not found in database',[aStoredProcedureName]); + lID := ds.FieldbyName('id').AsString; + finally + ds.Close(); + end; + + ds.SQL.Text := 'select * from sys.parameters where object_id='''+lID+''' ORDER BY parameter_id'; + ds.Open; + try + Params := TDAParamCollection.Create(nil); + while not ds.Eof do begin + with Params.Add() do begin + Name := ds.FieldByName('name').AsString; + + DataType := SqlServerToDAType(ds.FieldByName('system_type_id').AsInteger); + Size := ds.FieldByName('max_length').AsInteger; + + {if ds.FieldByName('has_default_value').AsBoolean then + DefaultValue := ds.FieldByName('default_Value').AsInteger;} + + if ds.FieldByName('is_output').AsBoolean then + ParamType := daptOutput + else + ParamType := daptInput; + + end; + ds.Next(); + end; + finally + Close(); + end; + + finally + ds.Free; + end; +end;*) + +procedure TDAEMSConnection.DoRollbackTransaction; +begin + fMSConnection.Rollback; +end; + +function TDAEMSConnection.DoGetInTransaction: boolean; +begin + result := fMSConnection.InTransaction +end; + +function TDAEMSConnection.GetProviderName: string; +begin + result := oledb_MSSQLId; +end; + +function TDAEMSConnection.GetProviderType: TDAOleDBProviderType; +begin + result := oledb_MSSQL; +end; + +function TDAEMSConnection.GetCommandTimeout: Integer; +begin + if fMSConnection <> nil then + Result := fMSConnection.ConnectionTimeout + else + Result:=0; +end; + +procedure TDAEMSConnection.SetCommandTimeout(const Value: Integer); +begin + if fMSConnection <> nil then + fMSConnection.ConnectionTimeout := Value; +end; + +{ TDAEADODriver } + +function TDAEADODriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEMSConnection; +end; + +function TDAEADODriver.GetDescription: string; +begin + result := 'Core Lab SDAC Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; +end; + +function TDAEADODriver.GetDriverID: string; +begin + result := 'SDAC'; +end; + +procedure TDAEADODriver.OnSDACTrace(Sender: TObject; Text: string; Flag: TDATraceFlag); +begin + if Assigned(fTraceCallback) then fTraceCallback(Sender, Text, integer(Flag)); +end; + +procedure TDAEADODriver.DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); +var + sdacopts: TDATraceFlags; +begin + inherited; + + if TraceActive then begin + if (fMonitor = nil) then fMonitor := TMSSQLMonitor.Create(Self); + + fMonitor.Active := FALSE; + fMonitor.OnSQL := OnSDACTrace; + + sdacopts := []; + if (toPrepare in TraceOptions) then sdacopts := sdacopts + [tfQPrepare]; + if (toExecute in TraceOptions) then sdacopts := sdacopts + [tfQExecute]; + if (toFetch in TraceOptions) then sdacopts := sdacopts + [tfQFetch]; + if (toError in TraceOptions) then sdacopts := sdacopts + [tfError]; + if (toStmt in TraceOptions) then sdacopts := sdacopts + [tfStmt]; + if (toConnect in TraceOptions) then sdacopts := sdacopts + [tfConnect]; + if (toTransact in TraceOptions) then sdacopts := sdacopts + [tfTransact]; + if (toBlob in TraceOptions) then sdacopts := sdacopts + [tfBlob]; + if (toService in TraceOptions) then sdacopts := sdacopts + [tfService]; + if (toMisc in TraceOptions) then sdacopts := sdacopts + [tfMisc]; + if (toParams in TraceOptions) then sdacopts := sdacopts + [tfParams]; + + fTraceCallBack := Callback; + + fMonitor.TraceFlags := sdacopts; + fMonitor.Active := TRUE; + end + else begin + FreeAndNIL(fMonitor); + fTraceCallback := nil; + end; +end; + +function TDAEADODriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + result := [doServerName, doDatabaseName, doLogin, doCustom]; +end; + +function TDAEADODriver.GetDefaultCustomParameters: String; +begin + Result := 'Schemas=1;Integrated Security=SSPI'; +end; + + + +procedure TDAEADODriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +begin + inherited; + MSSQL_GetAuxParams(List); +end; + +{ TDAEMSQuery } + +procedure TDAEMSQuery.ClearParams; +begin + inherited; + TMSQuery(Dataset).Params.Clear; +end; + +function TDAEMSQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TMSQuery.Create(nil); + + TMSQuery(result).FetchAll := True; //for preventing creating an additional session when you call StartTransaction (an known issue of OLEDB) + TMSQuery(result).Unidirectional := True; + TMSQuery(result).ReadOnly := TRUE; + TMSQuery(result).Connection := TDAEMSConnection(aConnection).fMSConnection; +// TMSQuery(result).Options.AutoPrepare:=True; +end; + +function TDAEMSQuery.DoExecute: integer; +begin + TMSQuery(Dataset).Execute; + result := TMSQuery(Dataset).RowsAffected; +end; + +function TDAEMSQuery.DoGetSQL: string; +begin + result := TMSQuery(Dataset).SQL.Text; +end; + +procedure TDAEMSQuery.DoPrepare(Value: boolean); +var + i: integer; + par: TMSParam; +begin + if Value and not TMSQuery(Dataset).Prepared and (TMSQuery(Dataset).ParamCount<>0) then begin + for I := 0 to GetParams.Count - 1 do begin + par:=TMSQuery(Dataset).ParamByName(GetParams[i].Name); + par.DataType:= DATypeToVCLType(GetParams[i].DataType); + if par.DataType = ftAutoInc then par.DataType:= ftInteger; + end; + end; + TMSQuery(Dataset).Prepared := Value; +end; + +procedure TDAEMSQuery.DoSetSQL(const Value: string); +begin + TMSQuery(Dataset).SQL.Text := Value; +end; + +procedure TDAEMSQuery.GetParamValues(AParams: TDAParamCollection); +var + I: Integer; + lParam: TMSParam; +begin + for i := 0 to TMSQuery(DataSet).Params.Count - 1 do begin + lParam:=TMSQuery(DataSet).Params[i]; + if (lParam.ParamType in [ptOutput, ptInputOutput, ptResult]) then + Aparams.ParamByName(lParam.Name).Value := lParam.Value; + end; +end; + +procedure TDAEMSQuery.SetParamValues(AParams: TDAParamCollection); +begin + WriteCrLabsParamValues(AParams, TMSQuery(Dataset).Params, true); +end; + +{ TDAEADOStoredProcedure } + +function TDAEADOStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + result := TMSStoredProc.Create(nil); + TMSStoredProc(result).Connection := TDAEMSConnection(aConnection).fMSConnection; +end; + +function TDAEADOStoredProcedure.Execute: integer; +var + i: integer; + _params: TDAParamCollection; + lParam: uDAInterfaces.TDAParam; +begin + _params := GetParams; + + with TMSStoredProc(Dataset) do begin + for i := 0 to (Params.Count - 1) do + if (Params[i].ParamType in [ptInput, ptInputOutput]) then begin + lParam := _params.ParamByName(Params[i].Name); + if (Params[i].DataType in [ftMemo, ftBlob, ftGraphic]) and VarIsArray(lParam.Value)then + Params[i].Value := VariantBinaryToString(lParam.Value) + else + Params[i].Value := lParam.Value; + end; + + result := DoExecute; + + for i := 0 to (_params.Count-1) do + if (_params[i].ParamType in [daptOutput, daptInputOutput, daptResult]) + then _params[i].Value := params.ParamByName(_params[i].Name).Value; + end; +end; + +procedure TDAEADOStoredProcedure.GetParamValues(AParams: TDAParamCollection); +var + i: Integer; + lParam: TMSParam; +begin + for i := 0 to TMSStoredProc(DataSet).Params.Count - 1 do begin + lParam:=TMSStoredProc(DataSet).Params[i]; + if (lParam.ParamType in [ptOutput, ptInputOutput, ptResult]) then + Aparams.ParamByName(lParam.Name).Value := lParam.Value; + end; +end; + + +function TDAEADOStoredProcedure.GetStoredProcedureName: string; +begin + result := TMSStoredProc(Dataset).StoredProcName; +end; + +procedure TDAEADOStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TMSStoredProc(Dataset).StoredProcName := Name; +end; + +procedure TDAEADOStoredProcedure.SetParamValues(AParams: TDAParamCollection); +begin + WriteCrLabsParamValues(AParams, TMSStoredProc(Dataset).Params); +end; + + +exports + GetDriverObject name func_GetDriverObject; + +procedure TDAEADOStoredProcedure.RefreshParams; +begin + RefreshParamsStd(TMSStoredProc(Dataset).Params); +end; + +function TDAEADOStoredProcedure.DoExecute: integer; +begin + with TMSStoredProc(Dataset) do begin + ExecProc; + result := RowsAffected; + end; +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDASQLiteDriver.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDASQLiteDriver.pas new file mode 100644 index 0000000..d507516 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDASQLiteDriver.pas @@ -0,0 +1,374 @@ +unit uDASQLiteDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up, Kylix 3 and up +{ platform: Win32, Linux +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ENDIF MSWINDOWS} +{$IFDEF LINUX} +{$I ../DataAbstract.inc} +{$ENDIF LINUX} + +{$R DataAbstract_SQLiteDriver_Glyphs.res} + +interface + +uses Windows, Classes, DB, uDAEngine, uDAInterfaces, uROClasses, uDAUtils, ASGSQLite3, uDASQLiteInterfaces; + +type + { TDASQLiteDriver } + TDASQLiteDriver = class(TDADriverReference) + end; + + { TDAESQLiteDriver } + TDAESQLiteDriver = class(uDASQLiteInterfaces.TDASQLiteDriver, IDADriver40) + protected + function GetConnectionClass: TDAEConnectionClass; override; + + // IDADriver + function GetDriverID: string; override; + function GetDescription: string; override; + + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; + // IDADriver40 + function GetProviderDefaultCustomParameters(Provider: string): string; safecall; + public + end; + + // for access to protected methods + TDAASQLite3DB = class(TASQLite3DB) + private + public + function GetLastInsertRow: integer; + end; + + { TSQLiteConnection } + TSQLiteConnection = class(TDAConnectionWrapper) + private + fConnection: TDAASQLite3DB; + protected + function GetConnected: Boolean; override; + procedure SetConnected(Value: Boolean); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property Connection: TDAASQLite3DB read fConnection; + end; + + { TDAESQLiteConnection } + TDAESQLiteConnection = class(TDASQLiteConnection) + private + FtransactionFlag: Boolean; + fConnection: TSQLiteConnection; + protected + // TDAEConnection + function CreateCustomConnection: TCustomConnection; override; + function GetDatasetClass: TDAEDatasetClass; override; + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); override; + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + function DoGetLastAutoInc(const GeneratorName: string): integer; override; + procedure DoGetForeignKeys(out ForeignKeys: TDADriverForeignKeyCollection); override; + procedure DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection); override; + + function IdentifierNeedsQuoting(const iIdentifier: string): boolean; override; safecall; + public + constructor Create(aDriver: TDAEDriver; aName: string = ''); override; + end; + + { TDAESQLiteQuery } + TDAESQLiteQuery = class(TDAEDataset,IDAMustSetParams) + private + protected + procedure ClearParams; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure DoPrepare(Value: boolean); override; safecall; + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses SysUtils, uDADriverManager, uDARes, Variants, + uROBinaryHelpers, uDASQL92Interfaces; + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDASQLiteDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + if (_driver = nil) then _driver := TDAESQLiteDriver.Create(nil); + result := _driver; +end; + +{ TSQLiteConnection } + +constructor TSQLiteConnection.Create(AOwner: TComponent); +begin + inherited; + fConnection := TDAASQLite3DB.Create(nil); +end; + +destructor TSQLiteConnection.Destroy; +begin + inherited; + fConnection.Free; +end; + +function TSQLiteConnection.GetConnected: Boolean; +begin + result := fConnection.Connected; +end; + +procedure TSQLiteConnection.SetConnected(Value: Boolean); +begin + fConnection.Connected := Value; +end; + +{ TDAESQLiteConnection } + +procedure TDAESQLiteConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +var + sName, sValue: string; + i: integer; +begin + inherited; + with aConnStrParser do begin + TSQLiteConnection(aConnectionObject).Connection.Database := Database; + for i := 0 to (AuxParamsCount - 1) do begin + sName := AuxParamNames[i]; + sValue := AuxParams[sName]; + if AnsiSameText(sName, 'TransactionType') then begin + if AnsiSameText(sValue, 'DEFAULT') or + AnsiSameText(sValue, 'DEFERRED') or + AnsiSameText(sValue, 'IMMEDIATE') or + AnsiSameText(sValue, 'EXCLUSIVE') then + fConnection.fConnection.TransactionType := AnsiUpperCase(sValue); + end + else if AnsiSameText(sName, 'DriverDll') then begin + fConnection.fConnection.DriverDll := sValue + end + else if AnsiSameText(sName, 'CharacterEncoding') then begin + if AnsiSameText(sValue, 'STANDARD') or + AnsiSameText(sValue, 'UTF8') then + fConnection.fConnection.CharacterEncoding := AnsiUpperCase(sValue); + end; + end; + end; +end; + +function TDAESQLiteConnection.DoBeginTransaction: integer; +begin + result := -1; + fConnection.Connection.StartTransaction; + FtransactionFlag := True; +end; + +procedure TDAESQLiteConnection.DoCommitTransaction; +begin + fConnection.Connection.Commit; + FtransactionFlag := False; +end; + +function TDAESQLiteConnection.CreateCustomConnection: TCustomConnection; +begin + fConnection := TSQLiteConnection.Create(nil); + result := fConnection; +end; + +function TDAESQLiteConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAESQLiteQuery; +end; + +procedure TDAESQLiteConnection.DoRollbackTransaction; +begin + FtransactionFlag := False; + fConnection.Connection.RollBack; +end; + +function TDAESQLiteConnection.DoGetInTransaction: boolean; +begin + Result := FtransactionFlag; +end; + +procedure TDAESQLiteConnection.DoGetTableFields(const aTableName: string; + out Fields: TDAFieldCollection); +var + List: TList; + i: integer; + fld: TDAField; +begin + inherited DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), Fields); + List := TList.Create; + try + fConnection.Connection.GetTableInfo(aTableName, List); + for i := 0 to List.Count - 1 do + with TASQLite3Field(List[i]) do begin + fld := Fields.FieldByName(FieldName); + fld.Required := FieldNN <> 0; + fld.InPrimaryKey := FieldPK <> 0; + if fld.InPrimaryKey then fld.Required := True; + fld.DefaultValue := FieldDefault; + end; + finally + List.Free; + end; +end; + +function TDAESQLiteConnection.IdentifierNeedsQuoting( + const iIdentifier: string): boolean; +begin + Result := inherited IdentifierNeedsQuoting(iIdentifier) or + SQL92_IdentifierNeedsQuoting(iIdentifier); +end; + +constructor TDAESQLiteConnection.Create(aDriver: TDAEDriver; + aName: string); +begin + inherited; + FtransactionFlag := False; +end; + +function TDAESQLiteConnection.DoGetLastAutoInc( + const GeneratorName: string): integer; +begin + Result := fConnection.Connection.GetLastInsertRow; +end; + +procedure TDAESQLiteConnection.DoGetForeignKeys( + out ForeignKeys: TDADriverForeignKeyCollection); +begin + inherited; + // SQL Features That SQLite Does Not Implement +end; + +{ TDAESQLiteDriver } + +function TDAESQLiteDriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + result := [doDatabaseName, doCustom]; +end; + +function TDAESQLiteDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAESQLiteConnection; +end; + +function TDAESQLiteDriver.GetDescription: string; +begin + result := 'SQLite Driver'; +end; + +function TDAESQLiteDriver.GetDriverID: string; +begin + result := 'SQLite'; +end; + +procedure TDAESQLiteDriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +begin + inherited; + List.Add('TransactionType=(DEFAULT,DEFERRED,IMMEDIATE,EXCLUSIVE)'); + List.Add('DriverDll=SQLite3.dll'); + List.Add('CharacterEncoding=(STANDARD,UTF8)'); +end; + +function TDAESQLiteDriver.GetProviderDefaultCustomParameters( + Provider: string): string; +begin + Result := ''; +end; + +{ TDAESQLiteQuery } + +procedure TDAESQLiteQuery.ClearParams; +begin + inherited; + TASQLite3Query(Dataset).Params.Clear; +end; + +function TDAESQLiteQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TASQLite3Query.Create(nil); + TASQLite3Query(result).Connection := TDAESQLiteConnection(aConnection).fConnection.Connection; +end; + +function TDAESQLiteQuery.DoExecute: integer; +begin + Result := -1; + TASQLite3Query(Dataset).ExecSQL; +end; + +function TDAESQLiteQuery.DoGetSQL: string; +begin + result := TASQLite3Query(Dataset).SQL.Text; +end; + +procedure TDAESQLiteQuery.DoPrepare(Value: boolean); +begin + // nothing +end; + +procedure TDAESQLiteQuery.DoSetSQL(const Value: string); +begin + TASQLite3Query(Dataset).SQL.Text := Value; +end; + +procedure TDAESQLiteQuery.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TASQLite3Query(Dataset).Params); +end; + +procedure TDAESQLiteQuery.SetParamValues(AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams, TASQLite3Query(Dataset).Params); +end; + +exports GetDriverObject name func_GetDriverObject; +{ TDAASQLite3DB } + +function TDAASQLite3DB.GetLastInsertRow: integer; +begin + result := SQLite3_LastInsertRow(DBHandle) +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAZeosDriver.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAZeosDriver.pas new file mode 100644 index 0000000..ad45b92 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/Drivers/uDAZeosDriver.pas @@ -0,0 +1,1211 @@ +unit uDAZeosDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library } +{ } +{ compiler: Delphi 6 and up , FPC } +{ platform: Win32 } +{ } +{ (c)opyright RemObjects Software. all rights reserved. } +{ } +{ Using this code requires a valid license of the Data Abstract } +{ which can be obtained at http://www.remobjects.com. } +{----------------------------------------------------------------------------} + +{$I ..\DataAbstract.inc} + +interface + +uses Classes, DB, + ZDbcIntfs, ZConnection, ZSqlMetadata, + uDAInterfaces, + uDAADOInterfaces, + uDAIBInterfaces, + uDASQLiteInterfaces, + uDAOracleInterfaces, + uDAMySQLInterfaces, + uDADB2Interfaces, + uDASybaseInterfaces, + uDAPostgresInterfaces, + uROClasses, uDAEngine, uDAUtils; + +type + TDAZEOSDriverType = ( + dazUnknown, + dazADO, + dazASA, + dazIBMDB2, + dazInterBase, + dazMSSQL, + dazMySQL, + dazOracle, + dazPostgreSQL, + dazSQLite, + dazSybase); + +const + ZEOS_ADO = 'ado'; + ZEOS_ASA = 'asa'; + ZEOS_IBMDB2 = 'db2'; + ZEOS_Interbase = 'interbase'; + ZEOS_Firebird = 'firebird'; + ZEOS_MSSQL = 'mssql'; + ZEOS_MySQL = 'mysql'; + ZEOS_ORACLE = 'oracle'; + ZEOS_PostgreSQL = 'postgresql'; + ZEOS_SQLite = 'sqlite'; + ZEOS_SYBASE = 'sybase'; + +type + { TDAZeosDriver } + TDAZeosDriver = class(TDADriverReference) + end; + + { TDAESampleDriver } + TDAESampleDriver = class(TDAEDriver, IDADriver40) + // TDAESampleDriver = class(TDAIBDriver, IDADriver40) + protected + function GetConnectionClass: TDAEConnectionClass; override; + //procedure CustomizeConnectionObject(aConnection: TDAEConnection); override; + //procedure DoSetTraceOptions(TraceActive: boolean; TraceFlags: TDATraceOptions; Callback: TDALogTraceEvent); override; + + { IDADriver } + function GetDriverID: string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetDescription: string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function GetMajVersion: byte; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function GetMinVersion: byte; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetAuxDrivers(out List: IROStrings); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetAvailableDriverOptionsEx(AuxDriver: string): TDAAvailableDriverOptions; override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // procedure Initialize; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // procedure Finalize; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function GetDefaultCustomParameters: string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetDefaultConnectionType(const AuxDriver: string): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + { IDADriver40 } + function GetProviderDefaultCustomParameters(Provider: string): string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + TZEOSConnection = class(TDAConnectionWrapper) + private + fConnection: TZConnection; + fMetaData: TZSQLMetaData; + protected + function GetConnected: Boolean; override; + procedure SetConnected(Value: boolean); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property Connection: TZConnection read fConnection write fConnection; + end; + + { TDAESampleConnection } + TDAESampleConnection = class(TDAEConnection, IDAConnection, + IDAADOConnection, + IDAInterbaseConnection, //IDAIBTransactionAccess, IDAIBConnectionProperties, + IDAOracleConnection, + IDAMySQLConnection, + IDASQLiteConnection, + IDADB2Connection, + IDASybaseConnection, + IDAPostgresConnection, + // IDAConnectionModelling, + IDACanQueryDatabaseNames, + IDAFileBasedDatabase, + // IDADirectoryBasedDatabase, + IDAUseGenerators, + IDACanQueryGeneratorsNames, + IDATestableObject) + private + fNativeConnection: TZEOSConnection; + fDriverType: TDAZEOSDriverType; + fDriverName: string; + fADOProviderName: string; + fADOProviderType: TDAOleDBProviderType; + fMSSQLSchemaEnabled: Boolean; + procedure DoGetNames(AList: IROStrings; AObjectType: TDAObjecttype); + function ZEOS_GetMetaData: IZDatabaseMetadata; + procedure FixWideStringBug(AFields: TDAFieldCollection); + protected + function QueryInterface(const IID: TGUID; out Obj): HResult; override; stdcall; + + function CreateCustomConnection: TCustomConnection; override; + function CreateMacroProcessor: TDASQLMacroProcessor; override; + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); override; + + // transaction support + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + + procedure DoGetTableNames(out List: IROStrings); override; + procedure DoGetViewNames(out List: IROStrings); override; + procedure DoGetStoredProcedureNames(out List: IROStrings); override; + + procedure DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection); override; + procedure DoGetQueryFields(const aSQL: string; aParamsIfNeeded: TDAParamCollection; out Fields: TDAFieldCollection); override; + //procedure DoGetViewFields(const aViewName: string; out Fields: TDAFieldCollection); override; + + procedure DoGetStoredProcedureParams(const aStoredProcedureName: string; out Params: TDAParamCollection); override; + procedure DoGetForeignKeys(out ForeignKeys: TDADriverForeignKeyCollection); override; + + function DoGetLastAutoInc(const GeneratorName: string): integer; override; + + { IDATestableObject } + // procedure Test; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + { IDAConnection } + + function GetSPSelectSyntax(HasArguments: Boolean): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetQuoteChars: TDAQuoteCharArray; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function IdentifierIsQuoted(const iIdentifier: string): boolean; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function IdentifierNeedsQuoting(const iIdentifier: string): boolean; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function QuoteIdentifierIfNeeded(const iIdentifier: string): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function QuoteIdentifier(const iIdentifier: string): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function QuoteFieldNameIfNeeded(const aTableName, aFieldName: string): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function QuoteFieldName(const aTableName, aFieldName: string): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + // function NewCommand(const Text: string; CommandType: TDASQLStatementType; const aCommandName: string = ''): IDASQLCommand; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function NewDataset(const SQL: string; const aDatasetName: string = ''): IDADataset; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + // function isAlive: Boolean; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function GetQueryBuilder: TDAQueryBuilder; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + { IDAADOConnection } + function GetProviderName: string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetProviderType: TDAOleDBProviderType; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetCommandTimeout: Integer; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetCommandTimeout(const Value: Integer); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + { IDAInterbaseConnection } + // nothing + + { IDAIBTransactionAccess } + //function GetTransaction: TObject; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + //procedure CommitRetaining; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + //procedure RollbackRetaining; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + { IDAIBConnectionProperties } + function GetRole: string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetRole(const Value: string); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetSQLDialect: integer; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetSQLDialect(Value: integer); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetCharset: string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetCharset(const Value: string); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + procedure Commit; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // procedure CommitRetaining; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure Rollback; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // procedure RollbackRetaining; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + { IDAOracleConnection } + // nothing + + { IDAConnectionModelling } + // function FieldToDeclaration(aField: TDAField): string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function BuildCreateTableSQL(aDataSet: TDADataSet; const aOverrideName: string = ''): string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // procedure CreateTable(aDataSet: TDADataSet; const aOverrideName: string = ''); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + { IDACanQueryDatabaseNames } + function GetDatabaseNames: IROStrings; + + { IDAFileBasedDatabase } + function GetFileExtensions: IROStrings; + + { IDADirectoryBasedDatabase } + // nothing + + { IDAUseGenerators } + function GetNextAutoinc(const GeneratorName: string): integer; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + { IDACanQueryGeneratorsNames } + function GetGeneratorNames: IROStrings; + + public + constructor Create(aDriver: TDAEDriver; aName: string = ''); override; + end; + + { TDAESampleQuery } + TDAESampleQuery = class(TDAEDataset , IDAMustSetParams) + protected + // procedure PrepareSQLStatement; override; + procedure ClearParams; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure DoPrepare(Value: boolean); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function DoExecute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure DoSetSQL(const Value: string); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function DoGetSQL: string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function intVCLTypeToDAType(aFieldType: TFieldType): TDADataType;override; + + { IDASQLCommand } + // procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function Execute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function DoGetRecordCount: integer; override; + // function DoGetActive: boolean; override; + // procedure DoSetActive(Value: boolean); override; + // function DoGetBOF: boolean; override; + // function DoGetEOF: boolean; override; + // procedure DoNext; override; + // function DoLocate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; override; + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + { TDAESampleStoredProcedure } + TDAESampleStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + protected + // Internal + // function DoGetStoredProcedureName: string; override; + // procedure DoSetStoredProcedureName(const Name: string); override; + procedure DoPrepare(Value: boolean); override; + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + // IDAStoredProcedure + function GetStoredProcedureName: string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetStoredProcedureName(const Name: string); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + // procedure PrepareSQLStatement; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + function DoExecute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure DoSetSQL(const Value: string); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function DoGetSQL: string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function intVCLTypeToDAType(aFieldType: TFieldType): TDADataType;override; + + { IDASQLCommand } + // procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function Execute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function DoGetRecordCount: integer; override; + // function DoGetActive: boolean; override; + // procedure DoSetActive(Value: boolean); override; + // function DoGetBOF: boolean; override; + // function DoGetEOF: boolean; override; + // procedure DoNext; override; + // function DoLocate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; override; + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses + {$IFDEF FPC}LResources,{$ENDIF} + {$IFDEF MSWINDOWS}Windows, {$ENDIF} + Variants, Types, SysUtils, + uDADriverManager, uDARes, uDASQL92Interfaces, + zClasses, ZDataset, ZStoredProcedure; + +{$IFNDEF FPC} + {$R DataAbstract_ZeosDriver_Glyphs.res} +{$ENDIF} + +var + _driver : TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAZeosDriver]); +end; + +function GetDriverObject: IDADriver; +begin + if (_driver = nil) then _driver := TDAESampleDriver.Create(nil); + result := _driver; +end; + +function ZEOSDriverIdToZEOSDriverType(aAuxDriver: string): TDAZEOSDriverType; +begin + aAuxDriver := LowerCase(aAuxDriver); + if aAuxDriver = '' then Result := dazUnknown + else if Pos(ZEOS_ADO, aAuxDriver) = 1 then Result := dazADO + else if Pos(ZEOS_ASA, aAuxDriver) = 1 then Result := dazASA + else if Pos(ZEOS_IBMDB2, aAuxDriver) = 1 then Result := dazIBMDB2 + else if Pos(ZEOS_Interbase, aAuxDriver) = 1 then Result := dazInterBase + else if Pos(ZEOS_Firebird, aAuxDriver) = 1 then Result := dazInterBase + else if Pos(ZEOS_MSSQL, aAuxDriver) = 1 then Result := dazMSSQL + else if Pos(ZEOS_MySQL, aAuxDriver) = 1 then Result := dazMySQL + else if Pos(ZEOS_ORACLE, aAuxDriver) = 1 then Result := dazOracle + else if Pos(ZEOS_PostgreSQL, aAuxDriver) = 1 then Result := dazPostgreSQL + else if Pos(ZEOS_SQLite, aAuxDriver) = 1 then Result := dazSQLite + else if Pos(ZEOS_SYBASE, aAuxDriver) = 1 then Result := dazSybase + else Result := dazUnknown; +end; + +{ TDAESampleConnection } + +procedure TDAESampleConnection.DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +var + i : Integer; + sName, sValue : string; +begin + inherited; + with aConnStrParser do begin + fDriverName := AuxDriver; + fDriverType := ZEOSDriverIdToZEOSDriverType(AuxDriver); + fADOProviderName := AuxParams['Provider']; + FADOProviderType := OleDBDriverIdToOleDBProviderType(FADOProviderName); + + fNativeConnection.fConnection.Protocol := AuxDriver; + if (Self.UserID <> '') then + fNativeConnection.fConnection.User := Self.UserID + else + fNativeConnection.fConnection.User := UserID; + + if (Self.Password <> '') then + fNativeConnection.fConnection.Password := Self.Password + else + fNativeConnection.fConnection.Password := Password; + if Server <> '' then fNativeConnection.fConnection.HostName := Server; + if Database <> '' then begin + fNativeConnection.fConnection.Database := Database; + if fDriverType <> dazSQLite then + fNativeConnection.fConnection.Catalog := Database; + end; + + for i := 0 to AuxParamsCount - 1 do begin + sName := AuxParamNames[i]; + if sName = '' then Continue; + sValue := AuxParams[AuxParamNames[i]]; + if AnsiSameText(sName, 'role') then begin + if fDriverType = dazInterBase then sName := 'rolename'; + end else if AnsiSameText(sName, 'charset') then begin + if fDriverType = dazInterBase then sName := 'codepage'; + end else if AnsiSameText(sName, 'port') then begin + if StrToIntDef(sValue, -1) <> -1 then fNativeConnection.fConnection.Port := StrToInt(sValue); + end else begin + if sName[1] = '@' then sName := Pchar(sName) + 1; + end; + fNativeConnection.fConnection.Properties.Values[sName] := sValue; + end; + + if fDriverType = dazADO then begin + if fADOProviderName = '' then + raise EDADriverException.Create('No proviver specified for ADO auxdriver'); + + fNativeConnection.fConnection.Properties.Values['User ID'] := fNativeConnection.fConnection.User; + fNativeConnection.fConnection.Properties.Values['Password'] := fNativeConnection.fConnection.Password; + if FADOProviderType = oledb_Jet then begin + fNativeConnection.fConnection.Properties.Values['Data Source'] := Database; + end else begin + if Database <> '' then begin + if fADOProviderType = oledb_Postgresql then + fNativeConnection.fConnection.Properties.Values['Location'] := Database + else + fNativeConnection.fConnection.Properties.Values['Initial Catalog'] := Database; + end; + if Server <> '' then fNativeConnection.fConnection.Properties.Values['Data Source'] := Server; + if fADOProviderType <> oledb_Postgresql then fNativeConnection.fConnection.Properties.Values['OLE DB SERVICES'] := '-2'; + end; + fNativeConnection.fConnection.Database := ''; + for i := 0 to fNativeConnection.fConnection.Properties.Count - 1 do begin + sName:=fNativeConnection.fConnection.Properties.Names[i]; + sValue:=fNativeConnection.fConnection.Properties.Values[sName]; + fNativeConnection.fConnection.Database:=fNativeConnection.fConnection.Database + sName+'='+sValue+';' + end; + end; + end; +end; + +function TDAESampleConnection.DoBeginTransaction: integer; +begin + fNativeConnection.fConnection.StartTransaction; + Result := 0; +end; + +procedure TDAESampleConnection.DoCommitTransaction; +begin + fNativeConnection.fConnection.Commit; +end; + +function TDAESampleConnection.CreateCustomConnection: TCustomConnection; +begin + fNativeConnection := TZEOSConnection.Create(nil); + result := fNativeConnection; +end; + +function TDAESampleConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAESampleQuery; +end; + +function TDAESampleConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAESampleStoredProcedure; +end; + +procedure TDAESampleConnection.DoRollbackTransaction; +begin + fNativeConnection.fConnection.Rollback; +end; + +function TDAESampleConnection.DoGetInTransaction: boolean; +begin + Result := fNativeConnection.fConnection.InTransaction +end; + +function TDAESampleConnection.QueryInterface(const IID: TGUID; out Obj): HResult; +begin + Result := E_NOINTERFACE; + if IsEqualGUID(IID, IDAADOConnection) then begin + if fDriverType <> dazADO then Exit; + end else if IsEqualGUID(IID, IDAInterbaseConnection) then begin + if fDriverType <> dazInterbase then Exit; + end else if IsEqualGUID(IID, IDAIBTransactionAccess) then begin + if fDriverType <> dazInterbase then Exit; + end else if IsEqualGUID(IID, IDAIBConnectionProperties) then begin + if fDriverType <> dazInterbase then Exit; + end else if IsEqualGUID(IID, IDAOracleConnection) then begin + if fDriverType <> dazOracle then Exit; + end else if IsEqualGUID(IID, IDASQLiteConnection) then begin + if fDriverType <> dazSQLite then Exit; + end else if IsEqualGUID(IID, IDADB2Connection) then begin + if fDriverType <> dazIBMDB2 then Exit; + end else if IsEqualGUID(IID, IDASybaseConnection) then begin + if not (fDriverType in [dazSybase, dazASA]) then Exit; + end else if IsEqualGUID(IID, IDAPostgresConnection) then begin + if fDriverType <> dazPostgreSQL then Exit; + end else if IsEqualGUID(IID, IDAMySQLConnection) then begin + if fDriverType <> dazMySQL then Exit; + end else if IsEqualGUID(IID, IDACanQueryDatabaseNames) then begin + if (fDriverType in [dazInterBase, dazSQLite]) then Exit; + end else if IsEqualGUID(IID, IDAFileBasedDatabase) then begin + if not (fDriverType in [dazInterBase, dazSQLite]) then Exit; + end else if IsEqualGUID(IID, IDAUseGenerators) then begin + if not (fDriverType in [dazInterBase, dazOracle, dazPostgreSQL]) then Exit; + end else if IsEqualGUID(IID, IDACanQueryGeneratorsNames) then begin + if not (fDriverType in [dazInterBase]) then Exit; + end + + // else if IsEqualGUID(IID, IDAConnectionModelling) then + // else if IsEqualGUID(IID, IDADirectoryBasedDatabase) then + ; + Result := inherited QueryInterface(IID, Obj); +end; + +constructor TDAESampleConnection.Create(aDriver: TDAEDriver; aName: string); +begin + inherited Create(aDriver, aName); + fMSSQLSchemaEnabled := True; +end; + +function TDAESampleConnection.CreateMacroProcessor: TDASQLMacroProcessor; +begin + case fDriverType of + dazInterBase: Result := IB_CreateMacroProcessor; + dazMSSQL: Result := MSSQL_CreateMacroProcessor; + dazOracle: Result := Oracle_CreateMacroProcessor; + else + Result := inherited CreateMacroProcessor; + end; +end; + +function TDAESampleConnection.GetFileExtensions: IROStrings; +begin + case fDriverType of + dazInterBase: Result := IB_GetFileExtensions; + dazSQLite: Result := SQLite_GetFileExtensions; + else + Result := NewROStrings; + end; +end; + +function TDAESampleConnection.GetGeneratorNames: IROStrings; +begin + case fDriverType of + dazInterBase: Result:= IB_GetGeneratorNames(GetDatasetClass.Create(Self)); + else + Result := NewROStrings; + end; +end; + +procedure TDAESampleConnection.DoGetTableNames(out List: IROStrings); +begin + inherited; + case fDriverType of + dazMSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotTable, fMSSQLSchemaEnabled); + dazInterBase: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotTable); + dazMYSQL: MYSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotTable, fNativeConnection.fConnection.Catalog); + dazSQLite: SQLite_GetObjectNames(GetDatasetClass.Create(Self), List, dotTable); + dazPostgreSQL: Postgres_DoGetNames(GetDatasetClass.Create(Self), List, dotTable); + dazOracle: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotTable); + else + if (fDriverType = dazADO) and (fADOProviderType in [oledb_MSSQL, oledb_MSSQL2005]) then + MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotTable, fMSSQLSchemaEnabled) + else begin + DoGetNames(List, dotTable); + end; + end +end; + +procedure TDAESampleConnection.DoGetViewNames(out List: IROStrings); +begin + inherited; + case fDriverType of + dazMSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotView, fMSSQLSchemaEnabled); + dazInterBase: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotView); + dazMYSQL: MYSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotView, fNativeConnection.fConnection.Catalog); + dazSQLite: SQLite_GetObjectNames(GetDatasetClass.Create(Self), List, dotView); + dazPostgreSQL: Postgres_DoGetNames(GetDatasetClass.Create(Self), List, dotView); + dazOracle: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotView); + else + if (fDriverType = dazADO) and (fADOProviderType in [oledb_MSSQL, oledb_MSSQL2005]) then + MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotView, fMSSQLSchemaEnabled) + else begin + DoGetNames(List, dotView); + end; + end +end; + +procedure TDAESampleConnection.DoGetStoredProcedureNames( + out List: IROStrings); +begin + inherited; + case fDriverType of + dazMSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure, fMSSQLSchemaEnabled); + dazInterBase: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotProcedure); + dazMYSQL: MYSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure, fNativeConnection.fConnection.Catalog); + dazSQLite: SQLite_GetObjectNames(GetDatasetClass.Create(Self), List, dotProcedure); + dazPostgreSQL: Postgres_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure); + dazOracle: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure); + else + if (fDriverType = dazADO) and (fADOProviderType in [oledb_MSSQL, oledb_MSSQL2005]) then + MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure, fMSSQLSchemaEnabled) + else begin + DoGetNames(List, dotProcedure); + end; + end +end; + +procedure TDAESampleConnection.DoGetTableFields(const aTableName: string; + out Fields: TDAFieldCollection); +var + lschema, ltbl : string; + fld : TDAField; +begin + case fDriverType of + dazMSSQL: MSSQL_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + dazInterBase: IB_GetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + dazMySQL: MYSQL_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName),GetDatasetClass.Create(Self),Fields, fNativeConnection.fConnection.Catalog); + dazOracle: Oracle_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + dazPostgreSQL: Postgres_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + else + if (fDriverType = dazADO) and (fADOProviderType in [oledb_MSSQL, oledb_MSSQL2005]) then + MSSQL_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields) + else begin + inherited; + if Pos('.', aTableName) > 0 then begin + lschema := Trim(Copy(aTableName, 1, Pos('.', aTableName) - 1)); + ltbl := Trim(Copy(aTableName, Pos('.', aTableName) + 1, Length(aTableName))); + end else begin + lschema := ''; + ltbl := aTableName; + end; + // required+default value + with ZEOS_GetMetadata.GetColumns(fNativeConnection.fConnection.Catalog, lschema, ltbl, '') do + while Next do begin + fld := Fields.FindField(GetStringByName('COLUMN_NAME')); + if fld = nil then Continue; + fld.Required := GetStringByName('IS_NULLABLE') = 'NO'; + + fld.DefaultValue := GetStringByName('COLUMN_DEF'); + if not TestDefaultValue(fld.DefaultValue, fld.DataType) then + fld.DefaultValue := ''; + end; + // pk + with ZEOS_GetMetadata.GetPrimaryKeys(fNativeConnection.fConnection.Catalog, lschema, ltbl) do + while Next do begin + fld := Fields.FindField(GetStringByName('COLUMN_NAME')); + if fld = nil then Continue; + fld.Required := True; + fld.InPrimaryKey := True; + end; + end; + end; + FixWideStringBug(Fields); +end; + +procedure TDAESampleConnection.DoGetForeignKeys( + out ForeignKeys: TDADriverForeignKeyCollection); +var + lSupportedSchema : boolean; +begin + inherited; + case fDriverType of + dazMSSQL: MSSQL_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys, fMSSQLSchemaEnabled); + dazInterBase: IB_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys); + dazMySQL: MYSQL_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys, fNativeConnection.fConnection.Catalog); + dazPostgreSQL: Postgres_DoGetForeignKeys(GetDatasetClass.Create(Self),ForeignKeys); + dazOracle: Oracle_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys); + else + if (fDriverType = dazADO) and (fADOProviderType in [oledb_MSSQL, oledb_MSSQL2005]) then + MSSQL_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys, fMSSQLSchemaEnabled) + else begin + lSupportedSchema := ZEOS_GetMetadata.SupportsSchemasInDataManipulation; + with ZEOS_GetMetadata.GetCrossReference(fNativeConnection.fConnection.Catalog, '', '', fNativeConnection.fConnection.Catalog, '', '') do + while Next do + with ForeignKeys.Add do begin + if lSupportedSchema then begin + PKTable := GetStringByName('PKTABLE_SCHEM') + '.' + GetStringByName('PKTABLE_NAME'); + FKTable := GetStringByName('FKTABLE_SCHEM') + '.' + GetStringByName('FKTABLE_NAME'); + end + else begin + PKTable := GetStringByName('PKTABLE_NAME'); + FKTable := GetStringByName('FKTABLE_NAME'); + end; + PKField := GetStringByName('PKCOLUMN_NAME'); + FKField := GetStringByName('FKCOLUMN_NAME'); + end; + end; + end; +end; + +function TDAESampleConnection.GetDatabaseNames: IROStrings; +begin + case fDriverType of + dazMSSQL: Result := MSSQL_GetDatabaseNames(Self); + dazMySQL: Result := MYSQL_GetDatabaseNames(GetDatasetClass.Create(Self)); + dazPostgreSQL: Result := Postgres_GetDatabaseNames(Self); + else + if (fDriverType = dazADO) and (fADOProviderType in [oledb_MSSQL, oledb_MSSQL2005]) then + Result := MSSQL_GetDatabaseNames(Self) + else begin + Result := NewROStrings; + with ZEOS_GetMetadata.GetCatalogs do + while Next do + Result.Add(GetStringByName('TABLE_CAT')); + end; + end; +end; + +function TDAESampleConnection.GetQuoteChars: TDAQuoteCharArray; +var + s : string; +begin + Result := inherited GetQuoteChars; + case fDriverType of + dazMSSQL: Result := MSSQL_GetQuoteChars; + dazOracle: Result:= Oracle_GetQuoteChars; + else + if (fDriverType = dazADO) and (fADOProviderType in [oledb_MSSQL, oledb_MSSQL2005]) then + Result := MSSQL_GetQuoteChars + else begin + s := ZEOS_GetMetadata.GetIdentifierQuoteString; + if Length(s) = 1 then begin + Result[0] := s[1]; + Result[1] := s[1]; + end + else if Length(s) = 2 then begin + Result[0] := s[1]; + Result[1] := s[2]; + end + end; + end; +end; + +function TDAESampleConnection.IdentifierNeedsQuoting( + const iIdentifier: string): boolean; +var + lList : TstringList; + i : integer; +begin + Result:= inherited IdentifierNeedsQuoting(iIdentifier); + if not result then + case fDriverType of + dazMSSQL: Result := MSSQL_IdentifierNeedsQuoting(iIdentifier); + dazInterBase: Result := IB_IdentifierNeedsQuoting(iIdentifier, GetSQLDialect); + dazMySQL: Result := MYSQL_IdentifierNeedsQuoting(iIdentifier); + dazORACLE: Result := Oracle_IdentifierNeedsQuoting(iIdentifier); + dazPostgreSQL: Result:= Postgres_IdentifierNeedsQuoting(iIdentifier); + dazIBMDB2: Result := DB2_IdentifierNeedsQuoting(iIdentifier); + dazASA,dazSybase: Result := Sybase_IdentifierNeedsQuoting(iIdentifier); + else + if (fDriverType = dazADO) and (fADOProviderType in [oledb_MSSQL, oledb_MSSQL2005]) then + Result := MSSQL_IdentifierNeedsQuoting(iIdentifier) + else begin + lList := TStringList.Create; + try + lList.CommaText := + ZEOS_GetMetadata.GetSQLKeywords + ',' + + ZEOS_GetMetadata.GetNumericFunctions + ',' + + ZEOS_GetMetadata.GetStringFunctions + ',' + + ZEOS_GetMetadata.GetSystemFunctions + ',' + + ZEOS_GetMetadata.GetTimeDateFunctions; + for i := 0 to lList.Count - 1 do + if CompareText(llist[i], iIdentifier) = 0 then begin + Result := True; + Exit; + end; + finally + lList.Free; + end + end; + end; +end; + +function TDAESampleConnection.GetRole: string; +begin + Result := fNativeConnection.fConnection.Properties.Values['rolename']; +end; + +function TDAESampleConnection.GetSQLDialect: integer; +begin + Result := StrToIntDef(fNativeConnection.fConnection.Properties.Values['dialect'], -1); + if Result = -1 then begin + if fDriverName = 'interbase-5' then + Result := 1 + else + Result := 3; + end; +end; + +procedure TDAESampleConnection.SetRole(const Value: string); +begin + fNativeConnection.fConnection.Properties.Values['rolename'] := Value; +end; + +procedure TDAESampleConnection.SetSQLDialect(Value: integer); +begin + fNativeConnection.fConnection.Properties.Values['dialect'] := IntToStr(Value); +end; + +function TDAESampleConnection.GetCharset: string; +begin + Result := fNativeConnection.fConnection.Properties.Values['codepage']; +end; + +procedure TDAESampleConnection.SetCharset(const Value: string); +begin + fNativeConnection.fConnection.Properties.Values['codepage'] := Value; +end; + +procedure TDAESampleConnection.Commit; +begin + Self.DoCommitTransaction; +end; + +procedure TDAESampleConnection.Rollback; +begin + Self.DoRollbackTransaction; +end; + +function TDAESampleConnection.DoGetLastAutoInc( + const GeneratorName: string): integer; +begin + Result := -1; + case fDriverType of + dazMSSQL: Result := MSSQL_DoGetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + dazInterBase: Result := IB_GetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + dazMySQL: Result := MySQL_GetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + dazOracle: Result := Oracle_DoGetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + dazPostgreSQL: Result := Postgres_DoGetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + else + if (fDriverType = dazADO) and (fADOProviderType in [oledb_MSSQL, oledb_MSSQL2005]) then + Result := MSSQL_DoGetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)) + else ; + end; +end; + +function TDAESampleConnection.GetNextAutoinc( + const GeneratorName: string): integer; +begin + Result := -1; + case fDriverType of + dazInterBase: Result := IB_GetNextAutoinc(GeneratorName, GetDatasetClass.Create(Self)); + dazOracle: Result := Oracle_GetNextAutoinc(GeneratorName, GetDatasetClass.Create(Self)); + dazPostgreSQL: Result := Postgres_GetNextAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + end; +end; + +procedure TDAESampleConnection.DoGetNames(AList: IROStrings; + AObjectType: TDAObjecttype); +var + lTableTypes : TStringDynArray; + lsupportSchema : Boolean; + lprocname : string; + i : integer; +begin + fNativeConnection.fConnection.Connect; + lsupportSchema := ZEOS_GetMetadata.SupportsSchemasInDataManipulation; + if AObjectType = dotProcedure then begin + with ZEOS_GetMetadata.GetProcedures(fNativeConnection.fConnection.Catalog, '', '') do + while Next do begin + lprocname := GetStringByName('PROCEDURE_NAME'); + i := pos(';', lprocname); + if i > 0 then lprocname := Copy(lprocname, 1, i - 1); + if lsupportSchema then + aList.Add(GetStringByName('PROCEDURE_SCHEM') + '.' + lprocname) + else + aList.Add(lprocname) + end; + end + else begin + SetLength(lTableTypes, 1); + if AObjectType = dotTable then + lTableTypes[0] := 'TABLE' + else + lTableTypes[0] := 'VIEW'; + with ZEOS_GetMetadata.GetTables(fNativeConnection.fConnection.Catalog, '', '', lTableTypes) do + while Next do + if lsupportSchema then + aList.Add(GetStringByName('TABLE_SCHEM') + '.' + GetStringByName('TABLE_NAME')) + else + aList.Add(GetStringByName('TABLE_NAME')) + end; +end; + +function TDAESampleConnection.GetSPSelectSyntax( + HasArguments: Boolean): string; +begin + case fDriverType of + dazMSSQL: Result := MSSQL_GetSPSelectSyntax(HasArguments); + dazInterBase: Result := IB_GetSPSelectSyntax(HasArguments); + dazOracle: Result := Oracle_GetSPSelectSyntax(HasArguments); + dazPostgreSQL: Result := Postgres_GetSPSelectSyntax(HasArguments); + else + if (fDriverType = dazADO) and (fADOProviderType in [oledb_MSSQL, oledb_MSSQL2005]) then + Result := MSSQL_GetSPSelectSyntax(HasArguments) + else begin + Result := inherited GetSPSelectSyntax(HasArguments); + end; + end; +end; + +function TDAESampleConnection.GetCommandTimeout: Integer; +begin + Result := StrToIntDef(fNativeConnection.fConnection.Properties.Values['timeout'], 0); +end; + +function TDAESampleConnection.GetProviderName: string; +begin + Result := fADOProviderName; +end; + +function TDAESampleConnection.GetProviderType: TDAOleDBProviderType; +begin + Result := fADOProviderType; +end; + +procedure TDAESampleConnection.SetCommandTimeout(const Value: Integer); +begin + fNativeConnection.fConnection.Properties.Values['timeout'] := InttoStr(Value); +end; + +procedure TDAESampleConnection.DoGetStoredProcedureParams( + const aStoredProcedureName: string; out Params: TDAParamCollection); +begin + case fDriverType of + dazMySQL: MYSQL_DoGetStoredProcedureParams(aStoredProcedureName, GetDatasetClass.Create(Self), Params, fNativeConnection.fConnection.Catalog); + dazOracle: Oracle_DoGetStoredProcedureParams(aStoredProcedureName, GetDatasetClass.Create(Self), Params); + dazPostgreSQL: Postgres_DoGetStoredProcedureParams(aStoredProcedureName, GetDatasetClass.Create(Self), Params); + else + inherited; + end; +end; + + +function TDAESampleConnection.ZEOS_GetMetaData: IZDatabaseMetadata; +begin + fNativeConnection.Connected:=True; + Result:= fNativeConnection.fConnection.DbcConnection.GetMetadata; +end; + +procedure TDAESampleConnection.FixWideStringBug(AFields: TDAFieldCollection); +{$IFDEF DA_WideMemoSupport} +var + i: integer; +{$ENDIF} +begin + {$IFDEF DA_WideMemoSupport} + For i:=0 to AFields.Count -1 do + with AFields[i] do + if (DataType = datWideString) and (Size = MaxInt div 2) then begin + DataType:= datWideMemo; + Size := 0; + end; + {$ENDIF} +end; + +procedure TDAESampleConnection.DoGetQueryFields(const aSQL: string; + aParamsIfNeeded: TDAParamCollection; out Fields: TDAFieldCollection); +begin + inherited; + FixWideStringBug(Fields); +end; + +{ TDAESampleDriver } + +procedure TDAESampleDriver.GetAuxDrivers(out List: IROStrings); +var + i, j : integer; + lDrivers : IZCollection; + Protocols : TStringDynArray; +begin + inherited; + lDrivers := ZDbcIntfs.DriverManager.GetDrivers; + for i := 0 to lDrivers.Count - 1 do begin + Protocols := (lDrivers[I] as IZDriver).GetSupportedProtocols; + for J := Low(Protocols) to High(Protocols) do + List.Add(Protocols[J]); + end; + List.Sorted := True; +end; + +procedure TDAESampleDriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +var + i : TDAOleDBProviderType; + s : string; +begin + inherited; + case ZEOSDriverIdToZEOSDriverType(AuxDriver) of + dazADO: begin + s := ''; + for i := Low(TDAOleDBProviderType) to High(TDAOleDBProviderType) do + if (i <> oledb_Unknown) {// Redundant but safe if I change the enum later...} then begin + if s <> '' then s := s + ';'; + s := s + OleDBProviders[i]; + end; + List.Add('Provider=(' + s + ')'); + end; + dazInterBase: AddIBAuxParams(List); + end; + if ZEOSDriverIdToZEOSDriverType(AuxDriver) <> dazAdo then List.Add('Port='); + List.Add('timeout='); +end; + +function TDAESampleDriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + Result := [doAuxDriver, doServerName, doDatabaseName, doLogin, doCustom]; +end; + +function TDAESampleDriver.GetAvailableDriverOptionsEx( + AuxDriver: string): TDAAvailableDriverOptions; +begin + case ZEOSDriverIdToZEOSDriverType(AuxDriver) of + dazSQLite : Result := [doAuxDriver, doDatabaseName, doCustom]; + else + Result := [doAuxDriver, doServerName, doDatabaseName, doLogin, doCustom]; + end; +end; + +function TDAESampleDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAESampleConnection; +end; + +function TDAESampleDriver.GetDefaultConnectionType( + const AuxDriver: string): string; +begin + case ZEOSDriverIdToZEOSDriverType(AuxDriver) of + dazADO: Result := ''; + dazMySQL: Result := MySQL_DriverType; + dazIBMDB2: Result:= DB2_DriverType; + dazInterBase: Result := IB_DriverType; + dazMSSQL: Result := MSSQL_DriverType; + dazOracle: Result := Oracle_DriverType; + dazPostgreSQL: Result := PostgreSQL_DriverType; + dazSQLite : Result:= SQLite_DriverType; + dazASA: Result:=ASA_DriverType; + dazSybase: Result:=Sybase_DriverType; + else + Result:= inherited GetDefaultConnectionType(AuxDriver); + end; +end; + +function TDAESampleDriver.GetDescription: string; +begin + result := 'DataAbstact Zeos Driver'; +end; + +function TDAESampleDriver.GetDriverID: string; +begin + result := 'ZEOS'; +end; + +function TDAESampleDriver.GetProviderDefaultCustomParameters( + Provider: string): string; +begin + Result := ''; + case ZEOSDriverIdToZEOSDriverType(Provider) of + dazADO: Result := 'Provider=;'; + dazMySQL: Result := MYSQL_GetDefaultCustomParameters; + end; +end; + +{ TDAESampleQuery } + +function TDAESampleQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TZReadOnlyQuery.Create(nil); + TZReadOnlyQuery(result).Connection := TDAESampleConnection(aConnection).fNativeConnection.fConnection; +end; + +function TDAESampleQuery.DoExecute: integer; +begin + TZReadOnlyQuery(Dataset).ExecSQL; + Result:=TZReadOnlyQuery(Dataset).RowsAffected; +end; + +function TDAESampleQuery.DoGetSQL: string; +begin + result := TZReadOnlyQuery(Dataset).SQL.Text; +end; + +procedure TDAESampleQuery.DoPrepare(Value: boolean); +begin + // nothing +end; + +procedure TDAESampleQuery.DoSetSQL(const Value: string); +begin + TZReadOnlyQuery(Dataset).SQL.Text := Value; +end; + +procedure TDAESampleQuery.SetParamValues(AParams: TDAParamCollection); +var + i: integer; +begin + SetParamValuesStd(AParams, TZReadOnlyQuery(Dataset).Params); + // zeos doesn't support ftfmtBCD, ftBCD + for i:=0 to TZReadOnlyQuery(Dataset).Params.Count-1 do + with TZReadOnlyQuery(Dataset).Params[i] do begin + if DataType = ftBCD then AsCurrency := Value + else if DataType = ftFMTBCD then AsFloat := Value; + end; +end; + +procedure TDAESampleQuery.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TZReadOnlyQuery(Dataset).Params); +end; + +procedure TDAESampleQuery.ClearParams; +begin + inherited; + TZReadOnlyQuery(Dataset).Params.Clear; +end; + +{ TDAESampleStoredProcedure } + +function TDAESampleStoredProcedure.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TZStoredProc.Create(nil); + TZStoredProc(result).Connection := TDAESampleConnection(aConnection).fNativeConnection.fConnection; +end; + +function TDAESampleStoredProcedure.DoExecute: integer; +begin + TZStoredProc(Dataset).ExecProc; + Result:=TZStoredProc(Dataset).RowsAffected; +end; + +function TDAESampleStoredProcedure.DoGetSQL: string; +begin + Result := ''; +end; + +procedure TDAESampleStoredProcedure.DoPrepare(Value: boolean); +begin + // nothing +end; + +procedure TDAESampleStoredProcedure.DoSetSQL(const Value: string); +begin + // +end; + +procedure TDAESampleStoredProcedure.GetParamValues( + AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TZStoredProc(Dataset).Params); +end; + +function TDAESampleStoredProcedure.GetStoredProcedureName: string; +begin + Result := TZStoredProc(Dataset).StoredProcName; +end; + +procedure TDAESampleStoredProcedure.RefreshParams; +begin + RefreshParamsStd(TZStoredProc(Dataset).Params); +end; + +procedure TDAESampleStoredProcedure.SetParamValues( + AParams: TDAParamCollection); +var + i: integer; +begin + SetParamValuesStd(AParams, TZStoredProc(Dataset).Params); + // zeos doesn't support ftfmtBCD, ftBCD + for i:=0 to TZStoredProc(Dataset).Params.Count-1 do + with TZStoredProc(Dataset).Params[i] do begin + if DataType = ftBCD then AsCurrency := Value + else if DataType = ftFMTBCD then AsFloat := Value; + end +end; + +procedure TDAESampleStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TZStoredProc(Dataset).Connection.Connect; + TZStoredProc(Dataset).StoredProcName := Name; +end; + +{ TZEOSConnection } + +constructor TZEOSConnection.Create(AOwner: TComponent); +begin + inherited; + fConnection := TZConnection.Create(nil); + fConnection.LoginPrompt := False; + fMetaData := TZSQLMetaData.Create(nil); + fMetaData.Connection := fConnection; +end; + +destructor TZEOSConnection.Destroy; +begin + inherited; + FreeAndNil(fMetaData); + FreeAndNil(fConnection); +end; + +function TZEOSConnection.GetConnected: Boolean; +begin + if fConnection <> nil then + Result := fConnection.Connected + else + Result:=False; +end; + +procedure TZEOSConnection.SetConnected(Value: boolean); +begin + fConnection.Connected := Value; +end; + +exports + GetDriverObject name func_GetDriverObject; + +initialization +{$IFDEF FPC} + {$I DataAbstract_ZeosDriver_Glyphs.lrs} +{$ENDIF} + _driver := nil; + RegisterDriverProc(GetDriverObject); +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); +end. + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_AdditionalResources.rc b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_AdditionalResources.rc new file mode 100644 index 0000000..d480282 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_AdditionalResources.rc @@ -0,0 +1 @@ +DALOGO BITMAP DISCARDABLE "dalogo.bmp" diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_AdditionalResources.res b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_AdditionalResources.res new file mode 100644 index 0000000..6735fcb Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_AdditionalResources.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.bdsproj b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.bdsproj new file mode 100644 index 0000000..67fa8e2 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.bdsproj @@ -0,0 +1,179 @@ + + + + + + + + + + + + DataAbstract_IDE_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + False + False + False + False + False + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - IDE Package + False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\;..\..\Dcu\D10 + + + + False + + + + + + False + + + + + + False + + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + + $00000000 + + + + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.cfg new file mode 100644 index 0000000..f6e54d1 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.cfg @@ -0,0 +1,52 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\;..\..\Dcu\D10" +-O"..\;..\..\Dcu\D10" +-I"..\;..\..\Dcu\D10" +-R"..\;..\..\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-SYMBOL_EXPERIMENTAL +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNIT_EXPERIMENTAL +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.dpk new file mode 100644 index 0000000..fdc6b17 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.dpk @@ -0,0 +1,51 @@ +package DataAbstract_IDE_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - IDE Package'} +{$IMPLICITBUILD OFF} + +requires + rtl, + DesignIDE, + vcldb, + dbrtl, + RemObjects_Core_D10, + RemObjects_IDE_D10, + RemObjects_Everwood_D10, + DataAbstract_Core_D10; + +contains + DataAbstract_IDE_Reg in 'DataAbstract_IDE_Reg.pas', + uDADataAbstractEditors in 'uDADataAbstractEditors.pas', + uDADBSessionManagerEditor in 'uDADBSessionManagerEditor.pas', + uDASchemaUnitsGenerator in 'uDASchemaUnitsGenerator.pas', + uDAIDEMenu in 'uDAIDEMenu.pas', + uDAIDEData in 'uDAIDEData.pas' {DAIdeData: TDataModule}, + uDAIDERes in 'uDAIDERes.pas', + uDASelectDataTablesForm in 'uDASelectDataTablesForm.pas' {DASelectDataTablesForm}, + uDADataTableMasterLinkWizardForm in 'uDADataTableMasterLinkWizardForm.pas' {DADataTableMasterLinkWizard}, + uDAGuideWizardForm in 'uDAGuideWizardForm.pas' {DAGuideWizardForm}, + uDADataTableWizards in 'uDADataTableWizards.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.res b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.dpk new file mode 100644 index 0000000..aa099c4 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.dpk @@ -0,0 +1,51 @@ +package DataAbstract_IDE_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - IDE Package'} +{$IMPLICITBUILD OFF} + +requires + rtl, + DesignIDE, + vcldb, + dbrtl, + RemObjects_Core_D11, + RemObjects_IDE_D11, + RemObjects_Everwood_D11, + DataAbstract_Core_D11; + +contains + DataAbstract_IDE_Reg in 'DataAbstract_IDE_Reg.pas', + uDADataAbstractEditors in 'uDADataAbstractEditors.pas', + uDADBSessionManagerEditor in 'uDADBSessionManagerEditor.pas', + uDASchemaUnitsGenerator in 'uDASchemaUnitsGenerator.pas', + uDAIDEMenu in 'uDAIDEMenu.pas', + uDAIDEData in 'uDAIDEData.pas' {DAIdeData: TDataModule}, + uDAIDERes in 'uDAIDERes.pas', + uDASelectDataTablesForm in 'uDASelectDataTablesForm.pas' {DASelectDataTablesForm}, + uDADataTableMasterLinkWizardForm in 'uDADataTableMasterLinkWizardForm.pas' {DADataTableMasterLinkWizard}, + uDAGuideWizardForm in 'uDAGuideWizardForm.pas' {DAGuideWizardForm}, + uDADataTableWizards in 'uDADataTableWizards.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.dproj b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.dproj new file mode 100644 index 0000000..9ce7332 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.dproj @@ -0,0 +1,88 @@ + + + {83d4313b-eff3-4ea0-9289-ba6e608e821e} + DataAbstract_IDE_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_IDE_D11.bpl + + + 7.0 + False + False + True + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\;..\..\Dcu\D11 + ..\;..\..\Dcu\D11 + ..\;..\..\Dcu\D11 + ..\;..\..\Dcu\D11 + RELEASE + False + False + False + False + False + False + False + False + + + 7.0 + True + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\;..\..\Dcu\D11 + ..\;..\..\Dcu\D11 + ..\;..\..\Dcu\D11 + ..\;..\..\Dcu\D11 + False + False + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - IDE PackageFalseFalseFalseTrueFalse306442FalseFalseFalseFalseFalse10331252RemObjects Software3.0.6.442RemObjects SDK1.0.0.0DataAbstract_IDE_D11.dpk + + + + + MainSource + + + + +
DADataTableMasterLinkWizard
+
+ + + +
DAGuideWizardForm
+
+ +
DAIdeData
+ TDataModule +
+ + + + +
DASelectDataTablesForm
+
+
+
\ No newline at end of file diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.res b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.cfg new file mode 100644 index 0000000..a95f764 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\Dcu\D6" +-O"..\Dcu\D6" +-I"..\Dcu\D6" +-R"..\Dcu\D6" +-Z diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.dof new file mode 100644 index 0000000..f1ca4e5 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - IDE Package + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.138 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.dpk new file mode 100644 index 0000000..c2b6298 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.dpk @@ -0,0 +1,51 @@ +package DataAbstract_IDE_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - IDE Package'} +{$IMPLICITBUILD OFF} + +requires + rtl, + DesignIDE, + vcldb, + dbrtl, + RemObjects_Core_D6, + RemObjects_IDE_D6, + RemObjects_Everwood_D6, + DataAbstract_Core_D6; + +contains + DataAbstract_IDE_Reg in 'DataAbstract_IDE_Reg.pas', + uDADataAbstractEditors in 'uDADataAbstractEditors.pas', + uDADBSessionManagerEditor in 'uDADBSessionManagerEditor.pas', + uDASchemaUnitsGenerator in 'uDASchemaUnitsGenerator.pas', + uDAIDEMenu in 'uDAIDEMenu.pas', + uDAIDEData in 'uDAIDEData.pas' {DAIdeData: TDataModule}, + uDAIDERes in 'uDAIDERes.pas', + uDASelectDataTablesForm in 'uDASelectDataTablesForm.pas' {DASelectDataTablesForm}, + uDADataTableMasterLinkWizardForm in 'uDADataTableMasterLinkWizardForm.pas' {DADataTableMasterLinkWizard}, + uDAGuideWizardForm in 'uDAGuideWizardForm.pas' {DAGuideWizardForm}, + uDADataTableWizards in 'uDADataTableWizards.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.res b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.cfg b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.cfg new file mode 100644 index 0000000..5645689 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.dof b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.dof new file mode 100644 index 0000000..2b8a3a6 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - IDE Package + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=3.0.0.280 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.dpk b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.dpk new file mode 100644 index 0000000..377b366 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.dpk @@ -0,0 +1,51 @@ +package DataAbstract_IDE_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - IDE Package'} +{$IMPLICITBUILD OFF} + +requires + rtl, + DesignIDE, + vcldb, + dbrtl, + RemObjects_Core_D7, + RemObjects_IDE_D7, + RemObjects_Everwood_D7, + DataAbstract_Core_D7; + +contains + DataAbstract_IDE_Reg in 'DataAbstract_IDE_Reg.pas', + uDADataAbstractEditors in 'uDADataAbstractEditors.pas', + uDADBSessionManagerEditor in 'uDADBSessionManagerEditor.pas', + uDASchemaUnitsGenerator in 'uDASchemaUnitsGenerator.pas', + uDAIDEMenu in 'uDAIDEMenu.pas', + uDAIDEData in 'uDAIDEData.pas' {DAIdeData: TDataModule}, + uDAIDERes in 'uDAIDERes.pas', + uDASelectDataTablesForm in 'uDASelectDataTablesForm.pas' {DASelectDataTablesForm}, + uDADataTableMasterLinkWizardForm in 'uDADataTableMasterLinkWizardForm.pas' {DADataTableMasterLinkWizard}, + uDAGuideWizardForm in 'uDAGuideWizardForm.pas' {DAGuideWizardForm}, + uDADataTableWizards in 'uDADataTableWizards.pas'; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.res b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.res new file mode 100644 index 0000000..204493b Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Reg.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Reg.pas new file mode 100644 index 0000000..101b54a --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Reg.pas @@ -0,0 +1,163 @@ +unit DataAbstract_IDE_Reg; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - IDE Library +{ +{ compiler: Delphi 6 and up, Kylix 3 and up +{ platform: Win32, Linux +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ENDIF MSWINDOWS} +{$IFDEF LINUX} +{$I ../DataAbstract.inc} +{$ENDIF LINUX} + +interface + +procedure Register; + +implementation + +uses + Classes, uDAClasses, uDADataTable, uDARemoteDataAdapter, uDARemoteDataAdapterRequests, + uDADataAbstractEditors, uDADriverManager, uDAInterfaces, + uDABusinessProcessor, uRODLGenTools, ColnEdit, + DB, SysUtils, uDADBSessionManagerEditor, uDADBSessionManager, + DARemoteService_Impl, DALoginService_Impl, + DataAbstractService_Impl, BaseLoginService_Impl, MultiDbLoginService_Impl, SimpleLoginService_Impl, + uDAClientDataModule, uDADesigntimeCall, uDADataTableReferenceCollection, + {$IFDEF MSWINDOWS} + uROProductVersionInfo, fROAbout, + {$ENDIF MSWINDOWS} + {$IFDEF DELPHI5} + DsgnIntf, DMDesigner, + {$ELSE} + DesignIntf, DesignEditors; + {$ENDIF} + +procedure Register; +begin + RegisterComponentEditor(TDADriverManager, TDADriverManagerEditor); + RegisterComponentEditor(TDASchema, TDASchemaEditor); + RegisterComponentEditor(TDAConnectionManager, TDAConnectionManagerEditor); + RegisterComponentEditor(TDADataDictionary, TDADataDictionaryEditor); + RegisterComponentEditor(TDADataTable, TDADataTableEditor); + RegisterComponentEditor(TDARemoteDataAdapter, TDARemoteDataAdapterEditor); + RegisterComponentEditor(TDADesigntimeCall, TDADesigntimeCallEditor); + + {$IFDEF MSWINDOWS} + //RegisterComponentEditor(TDAClientDataModule, TDAClientDataModuleEditor); + {$ENDIF MSWINDOWS} + + RegisterPropertyEditor(TypeInfo(string), TDARemoteRequest, 'MethodName', TDADataRequestCallMethodNameEditor); + + {$IFDEF MSWINDOWS} + RegisterPropertyEditor(TypeInfo(string), TDADataTable, 'MasterFields', TDADataTableMasterDetailProps); + RegisterPropertyEditor(TypeInfo(string), TDADataTable, 'DetailFields', TDADataTableMasterDetailProps); + RegisterPropertyEditor(TypeInfo(TStrings), TDADataTable, 'MasterRequestMappings', TDADataTableMasterDetailProps); + RegisterPropertyEditor(TypeInfo(TStrings), TDADataTable, 'MasterParamsMappings', TDADataTableMasterDetailProps); + {$ENDIF MSWINDOWS} + + RegisterPropertyEditor(TypeInfo(string), TDADriverManager, 'DriverDirectory', TDADriverManagerDirectory); + RegisterPropertyEditor(TypeInfo(TComponent), TDADataTableReference, 'DataTable', TDADataTableReferenceDataTable); + + RegisterPropertyEditor(TypeInfo(TDataset), TDADataSource, 'Dataset', NIL); + + RegisterPropertyEditor(TypeInfo(string), TDADataTable, 'LogicalName', TDADataTableLogicalNameEditor); + RegisterPropertyEditor(TypeInfo(string), TDADataTable, 'LocalConnection', TDADataTableLocalConnection); + + RegisterPropertyEditor(TypeInfo(string), TDAUpdateRule, 'DatasetName', TDACollectionItemDatasetNameEditor); + RegisterPropertyEditor(TypeInfo(string), TDADatasetRelationship, 'DetailDatasetName', TDACollectionItemDatasetNameEditor); + RegisterPropertyEditor(TypeInfo(string), TDADatasetRelationship, 'MasterDatasetName', TDACollectionItemDatasetNameEditor); + + RegisterPropertyEditor(TypeInfo(string), TDABusinessProcessor, 'InsertCommandName', TDABusinessProcessorCommandProperty); + RegisterPropertyEditor(TypeInfo(string), TDABusinessProcessor, 'DeleteCommandName', TDABusinessProcessorCommandProperty); + RegisterPropertyEditor(TypeInfo(string), TDABusinessProcessor, 'UpdateCommandName', TDABusinessProcessorCommandProperty); + RegisterPropertyEditor(TypeInfo(string), TDABusinessProcessor, 'ReferencedDataset', TDABusinessProcessorRefDatasetProperty); + RegisterPropertyEditor(TypeInfo(string), TDABusinessProcessor, 'RefreshDatasetName', TDABusinessProcessorRefDatasetProperty); + + RegisterPropertyEditor(TypeInfo(string), TDADBSessionManager, 'InsertSessionCommand', TDASchemaCommandListEditor); + RegisterPropertyEditor(TypeInfo(string), TDADBSessionManager, 'UpdateSessionCommand', TDASchemaCommandListEditor); + RegisterPropertyEditor(TypeInfo(string), TDADBSessionManager, 'DeleteSessionCommand', TDASchemaCommandListEditor); + RegisterPropertyEditor(TypeInfo(string), TDADBSessionManager, 'ClearSessionsCommand', TDASchemaCommandListEditor); + RegisterPropertyEditor(TypeInfo(string), TDADBSessionManager, 'GetSessionCountDataSet', TDASchemaDataSetListEditor); + RegisterPropertyEditor(TypeInfo(string), TDADBSessionManager, 'GetAllSessionIDsDataset', TDASchemaDataSetListEditor); + RegisterPropertyEditor(TypeInfo(string), TDADBSessionManager, 'GetSessionDataSet', TDASchemaDataSetListEditor); + RegisterPropertyEditor(TypeInfo(string), TDADBSessionManager, 'Connection', TDASchemaConnectionsListEditor); + + RegisterPropertyEditor(TypeInfo(TCollection), TDADataset, 'Fields', TCollectionProperty); + RegisterPropertyEditor(TypeInfo(TCollection), TDADataset, 'Params', TCollectionProperty); + RegisterPropertyEditor(TypeInfo(TCollection), TDADataset, 'Statements', TCollectionProperty); + + RegisterPropertyEditor(TypeInfo(string), TDALoginService, 'LoginDataset', TDARemoteServiceDataSetListEditor); + RegisterPropertyEditor(TypeInfo(string), TDALoginService, 'LogoutCommand', TDARemoteServiceCommandListEditor); + + RegisterPropertyEditor(TypeInfo(string), TDAField, 'KeyFields', TDALookupSourceProperty); + RegisterPropertyEditor(TypeInfo(string), TDAField, 'LookupKeyFields', TDALookupDestProperty); + RegisterPropertyEditor(TypeInfo(string), TDAField, 'LookupResultField', TDALookupResultFieldProperty); + + {$IFDEF VER140UP} + RegisterCustomModule(TDARemoteService, TCustomModule); + RegisterCustomModule(TDALoginService, TCustomModule); + RegisterCustomModule(TDataAbstractService, TCustomModule); + RegisterCustomModule(TBaseLoginService, TCustomModule); + RegisterCustomModule(TSimpleLoginService, TCustomModule); + RegisterCustomModule(TMultiDbLoginService, TCustomModule); + {$ELSE} + RegisterCustomModule(TDARemoteService, TDataModuleDesignerCustomModule); + RegisterCustomModule(TDALoginService, TDataModuleDesignerCustomModule); + RegisterCustomModule(TDataAbstractService, TDataModuleDesignerCustomModule); + RegisterCustomModule(TBaseLoginService, TDataModuleDesignerCustomModule); + RegisterCustomModule(TSimpleLoginService, TDataModuleDesignerCustomModule); + RegisterCustomModule(TMultiDbLoginService, TDataModuleDesignerCustomModule); + {$ENDIF} + + RegisterRODataModuleClass(TDataAbstractService, + '&Data Abstract 4.0 Service', + 'Data Abstract datamodule. '+ + 'This is the preferred server type when creating a Data Abstract version 4.0 or above server.', + 'uRORemoteDataModule, uDAInterfaces, DataAbstractService_Impl, DataAbstract4_Intf' + ); + + RegisterRODataModuleClass(TDARemoteService, + 'Data Abstract &3.0 Remote Service', + 'Data Abstract datamodule. This is the preferred server type when creating backward-compatible version 3.0 Data Abstract server.', + 'uRORemoteDataModule, uDAInterfaces, DARemoteService_Impl, DataAbstract3_Intf' + ); + + RegisterCustomModule(TDAClientDataModule,TCustomModule); + + { TDARemoteDataAdapter } + RegisterPropertiesInCategory('Dynamic Method Binding', TDARemoteDataAdapter, ['GetSchemaCall', 'GetDataCall', 'GetScriptsCall', 'UpdateDataCall']); + + RegisterPropertiesInCategory('Legacy', TDAGetDataRequest, ['OutgoingParamsParameter', 'OutgoingIncludeSchemaParameter', 'OutgoingMaxRecordsParameter']); + + { TDADataTable } + //RegisterPropertiesInCategory('Legacy v3.0', TDADataTable, ['DataRequestCall', 'DataUpdateCall', 'SchemaCall', 'ScriptCall', 'Adapter']); + RegisterPropertiesInCategory('Master/Detail', TDADataTable, ['MasterFields', 'MasterMappingMode', 'MasterOptions', 'MasterParamsMappings', 'MasterRequestMappings', 'MasterSource', 'DetailFields', 'DetailOptions']); + RegisterPropertiesInCategory('Database', TDADataTable, ['Fields', 'Params', 'LogicalName', 'IndexDefs', 'IndexName', 'Active', 'StoreActive', 'LogChanges', 'MaxRecords']); + RegisterPropertiesInCategory('Business Rules', TDADataTable, ['BusinessRulesID', 'ScriptCode']); + RegisterPropertiesInCategory('Local Data', TDADataTable, ['LocalConnection', 'LocalSchema', 'LocalDataStreamer']); + + { DA Service } + + { Login Services } + RegisterPropertiesInCategory('Login', TBaseLoginService, ['OnLogout']); + RegisterPropertiesInCategory('Login', TSimpleLoginService, ['OnLogin']); + RegisterPropertiesInCategory('Login', TMultiDbLoginService, ['OnLogin']); +end; + +{$IFDEF MSWINDOWS} +initialization + RegisterProduct('{261E7EA5-C380-42A4-90AC-1FA10ADB39D8}',VersionBuildNo(hInstance)); +finalization + UnregisterProduct('{261E7EA5-C380-42A4-90AC-1FA10ADB39D8}'); +{$ENDIF MSWINDOWS} +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/Resources.BDS.RES b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/Resources.BDS.RES new file mode 100644 index 0000000..bfd676d Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/Resources.BDS.RES differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleDataTableWizardForm.dfm b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleDataTableWizardForm.dfm new file mode 100644 index 0000000..32d530e --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleDataTableWizardForm.dfm @@ -0,0 +1,180 @@ +object DAClientDataModuleDataTableWizardForm: TDAClientDataModuleDataTableWizardForm + Left = 417 + Top = 173 + BorderStyle = bsDialog + BorderWidth = 5 + Caption = '%s - DataTable Wizard' + ClientHeight = 412 + ClientWidth = 339 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + DesignSize = ( + 339 + 412) + PixelsPerInch = 96 + TextHeight = 13 + object lbl_ServerUrl1: TLabel + Left = 0 + Top = 0 + Width = 90 + Height = 13 + Caption = 'Select DataSets' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object lbl_ServerUrl2: TLabel + Left = 16 + Top = 16 + Width = 248 + Height = 26 + Caption = + 'Select the Datasets for that you want to generate TDADataTable ' + + 'components.' + WordWrap = True + end + object BitBtn2: TBitBtn + Left = 264 + Top = 387 + Width = 75 + Height = 25 + Anchors = [akLeft, akBottom] + Cancel = True + Caption = 'Cancel' + ModalResult = 2 + TabOrder = 0 + Glyph.Data = { + 36060000424D3606000000000000360000002800000020000000100000000100 + 18000000000000060000C40E0000C40E00000000000000000000FF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF00009A00009AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00009A0000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + 00009A174AFD103BF400009AFF00FFFF00FFFF00FFFF00FF00009A002CF80030 + FC00009AFF00FFFF00FFFF00FFFF00FF6B6B6BA8A8A8A0A0A06B6B6BFF00FFFF + 00FFFF00FFFF00FF6B6B6B9A9A9A9C9C9C6B6B6BFF00FFFF00FFFF00FFFF00FF + 00009A1A47F81A4CFF123BF100009AFF00FFFF00FF00009A012DF60132FF002A + F300009AFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7AAAAAA9F9F9F6B6B6BFF + 00FFFF00FF6B6B6B9999999E9E9E9797976B6B6BFF00FFFF00FFFF00FFFF00FF + FF00FF00009A1C47F61B4DFF143EF400009A00009A002DF80134FF032BF20000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7ABABABA2A2A26B + 6B6B6B6B6B9A9A9A9E9E9E9898986B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FF00009A1D48F61D50FF103DFB0431FE0132FF002CF600009AFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7ACACACA3 + A3A39F9F9F9E9E9E9999996B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF00009A1A48F91342FF0C3CFF0733F600009AFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7A7 + A7A7A3A3A39C9C9C6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF00009A214EFC1D4BFF1847FF1743F600009AFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BACACACAC + ACACA9A9A9A4A4A46B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FF00009A2E5BF92C5FFF224DF8204BF82355FF1B46F600009AFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BB1B1B1B3B3B3AB + ABABAAAAAAAFAFAFA6A6A66B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF00009A3664FA386BFF2D59F400009A00009A224CF42558FF1D49F60000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BB6B6B6B9B9B9AEAEAE6B + 6B6B6B6B6BA9A9A9B0B0B0A7A7A76B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + 00009A4071FA4274FF325DF100009AFF00FFFF00FF00009A224DF1275AFF204C + F800009AFF00FFFF00FFFF00FFFF00FF6B6B6BBBBBBBBEBEBEAFAFAF6B6B6BFF + 00FFFF00FF6B6B6BA7A7A7B1B1B1AAAAAA6B6B6BFF00FFFF00FFFF00FFFF00FF + 00009A497AFC3B66F300009AFF00FFFF00FFFF00FFFF00FF00009A2550F42655 + FA00009AFF00FFFF00FFFF00FFFF00FF6B6B6BC0C0C0B5B5B56B6B6BFF00FFFF + 00FFFF00FFFF00FF6B6B6BAAAAAAAEAEAE6B6B6BFF00FFFF00FFFF00FFFF00FF + FF00FF00009A00009AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00009A0000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} + NumGlyphs = 2 + end + object BitBtn1: TBitBtn + Left = 184 + Top = 387 + Width = 75 + Height = 25 + Anchors = [akRight, akBottom] + Caption = 'Finish' + Default = True + ModalResult = 1 + TabOrder = 1 + Glyph.Data = { + 36060000424D3606000000000000360000002800000020000000100000000100 + 18000000000000060000220B0000220B00000000000000000000FF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00FF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FF787878FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00 + 811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FF787878787878FF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + 811E00811E00811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FF787878787878787878FF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF811E0095440F811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF787878898989787878FF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FF811E00A7632F811E00811E00FF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF7878789F9F9F78787878 + 7878FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF811E00BF8B62CCA17E811E00811E00FF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF787878B8B8B8C6 + C6C6787878787878FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FF811E00D8B69CE6D1BFE7D3C4811E00FF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF787878D1 + D1D1E0E0E0E2E2E2787878FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FF811E00F0E2D9FCF7F2FAF0E6811E00811E + 00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF78 + 7878EBEBEBF5F5F5F1F1F1787878787878FF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FF811E00D8AF96F4E2CFF0D7BDD8A784811E + 00811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF78 + 7878D0D0D0E9E9E9E3E3E3CACACA787878787878FF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FF811E00F3DECAEFD4B8EBC9A7DAA67D811E00FF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF787878E7 + E7E7E1E1E1DBDBDBC9C9C9787878FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FF811E00E7BB92E3B081E0A672D5925A811E + 00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF78 + 7878D3D3D3CDCDCDC6C6C6BCBCBC787878FF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00DA995ED78F50D38441CF7B + 35811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FF787878BFBFBFB8B8B8B2B2B2ACACAC787878FF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00811E00811E00811E + 00811E00811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FF787878787878787878787878787878787878FF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} + NumGlyphs = 2 + end + object lb_DataSets: TCheckListBox + Left = 16 + Top = 48 + Width = 323 + Height = 329 + Anchors = [akLeft, akTop, akRight, akBottom] + ItemHeight = 13 + TabOrder = 2 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleDataTableWizardForm.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleDataTableWizardForm.pas new file mode 100644 index 0000000..e48152d --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleDataTableWizardForm.pas @@ -0,0 +1,114 @@ +unit uDAClientDataModuleDataTableWizardForm; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, CheckLst, Buttons, uDAClientDataModule, DesignIntf; + +type + TDAClientDataModuleDataTableWizardForm = class(TForm) + BitBtn2: TBitBtn; + BitBtn1: TBitBtn; + lbl_ServerUrl1: TLabel; + lbl_ServerUrl2: TLabel; + lb_DataSets: TCheckListBox; + private + fModule:TDAClientDataModule; + procedure FillDataSets; + public + class function Execute(aOwner: TComponent; aModule:TDAClientDataModule; aDesigner:IDesigner):boolean; + end; + +var + DAClientDataModuleDataTableWizardForm: TDAClientDataModuleDataTableWizardForm; + +implementation + +uses + uROClasses, uDAIDERes, uRODL, uRORemoteService, + uDADataAbstractEditors, uDAMemDataTable, uDAClasses, uDAPleaseWaitForm; + +{$R *.dfm} + +{ TDAClientDataModuleDataTableWizardForm } + +class function TDAClientDataModuleDataTableWizardForm.Execute(aOwner: TComponent; aModule: TDAClientDataModule; aDesigner:IDesigner): boolean; +var + i:integer; +begin + if not Assigned(aModule.RemoteService) then RaiseError(err_AssignRemoteService); + if not Assigned(aModule.RemoteService.Channel) then RaiseError(err_AssignRemoteServiceChannel); + if not Assigned(aModule.RemoteService.Message) then RaiseError(err_AssignRemoteServiceMessage); + + with self.Create(aOwner) do try + + fModule := aModule; + Caption := Format(Caption,[fModule.Name]); + FillDataSets(); + + result := ShowModal() = idOk; + if result then begin + + for i := 0 to lb_DataSets.Items.Count-1 do begin + if lb_DataSets.Checked[i] then begin + CreateDataTable(aDesigner, aModule, TDAMemDataTable, lb_DataSets.Items[i], false); + end; + end; + + end; + + finally + Free(); + end; +end; + +procedure TDAClientDataModuleDataTableWizardForm.FillDataSets; +var + i: integer; + lSchema: TDASchema; + lDataSets: TStringList; +begin + + lDataSets := TStringList.Create(); + try + lDataSets.Duplicates := dupIgnore; + lDataSets.Sorted := true; + + + lSchema := nil; + with CreatePleaseWaitForm(self,'Retrieving Schema...') do begin + fModule.GetSchema(lSchema,true); + Hide; + end; + try + for i := 0 to lSchema.Datasets.Count-1 do begin + lDataSets.Add(lSchema.Datasets[i].Name); + end; { for } + finally + lSchema.Free(); + end; + + lb_DataSets.Items.Assign(lDataSets); + for i := 0 to lb_Datasets.Items.Count-1 do begin + lb_DataSets.Checked[i] := true; + end; { for } + + finally + FreeAndNil(lDataSets); + end; + {lLibrary := fModule.RemoteService.GetRODLLibrary(); + if not Assigned (lLibrary) then RaiseError('Library could not retrieved from server'); + try + lDataSets := fModule.RemoteService.GetServiceMethods(); + for i := 0 to lDataSets.Count-1 do begin + p := Pos('_',lDataSets[i]); + if p > 0 then + lb_DataSets.Checked[lb_DataSets.Items.Add(Copy(lDataSets[i],p+1,Length(lDataSets[i])-p))] := true; + end; + finally + lLibrary.Free(); + end; } +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleEditorForm.dfm b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleEditorForm.dfm new file mode 100644 index 0000000..4c5220b --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleEditorForm.dfm @@ -0,0 +1,284 @@ +object DAClientDataModuleEditorForm: TDAClientDataModuleEditorForm + Left = 381 + Top = 253 + BorderStyle = bsDialog + BorderWidth = 5 + Caption = '%s - ClientDataModule Editor' + ClientHeight = 183 + ClientWidth = 322 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + DesignSize = ( + 322 + 183) + PixelsPerInch = 96 + TextHeight = 13 + object lbl_ServerUrl1: TLabel + Left = 0 + Top = 0 + Width = 66 + Height = 13 + Caption = 'Server URL:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object lbl_ServerUrl2: TLabel + Left = 16 + Top = 16 + Width = 211 + Height = 13 + Caption = 'Select the URL of yout development server.' + end + object lbl_ServerUrl3: TLabel + Left = 16 + Top = 32 + Width = 308 + Height = 26 + Caption = + 'If you have kept the defaults when writing the server and are ru' + + 'nning the server on this machine, the default value will be ok:' + WordWrap = True + end + object Label4: TLabel + Left = 0 + Top = 96 + Width = 77 + Height = 13 + Caption = 'Service Name' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object Label5: TLabel + Left = 16 + Top = 112 + Width = 228 + Height = 13 + Caption = 'Select the Service that you want to connect to:' + end + object btn_CreateTables: TBitBtn + Left = 62 + Top = 158 + Width = 126 + Height = 25 + Anchors = [akRight, akBottom] + Caption = 'Create DataTables' + ModalResult = 1 + TabOrder = 0 + OnClick = btn_CreateTablesClick + Glyph.Data = { + 36060000424D3606000000000000360000002800000020000000100000000100 + 18000000000000060000130B0000130B00000000000000000000FF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF08750D08750D08750D0875 + 0DFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FF8C8C8C8C8C8C8C8C8C8C8C8CFF00FFFF00FFFF00FFFF00FFFF00FF + 0E80AA0E80AA0E80AA0E80AA0E80AA0E80AAFF00FF08750D13AA2210A61D0875 + 0DFF00FFFF00FFFF00FFFF00FFFF00FF83838383838383838383838383838383 + 8383FF00FF8C8C8CA3A3A3A1A1A18C8C8CFF00FFFF00FFFF00FFFF00FF078DBB + 49D5EE23D7FE36D9FE6FE6FF8DE7FA44BADD0E80AA08750D1AB12D16AD260875 + 0DFF00FFFF00FFFF00FFFF00FF878787AFAFAFA8A8A8AFAFAFC3C3C3CCCCCCA8 + A8A88383838C8C8CA8A8A8A5A5A58C8C8CFF00FFFF00FFFF00FF078DBB8CFBFE + 59EAFE23D7FE36D8FD6CE0F808750D08750D08750D08750D22B93B1DB5320875 + 0D08750D08750D08750D878787CDCDCDBBBBBBA8A8A8AEAEAEC0C0C08C8C8C8C + 8C8C8C8C8C8C8C8CADADADAAAAAA8C8C8C8C8C8C8C8C8C8C8C8C078DBB8CFBFE + 59EAFE23D7FE36D8FD6CE0F808750D3CD46236CF5A30C9522CC34926BE4121B8 + 381CB43117AF2A08750D878787CDCDCDBBBBBBA8A8A8AEAEAEC0C0C08C8C8CC0 + C0C0BCBCBCB8B8B8B4B4B4B1B1B1ACACACAAAAAAA6A6A68C8C8C078DBB8CFBFE + 59EAFE23D7FE36D9FE6CE1F908750D44DD703FD8683AD26035CD582FC74F2AC1 + 4725BD3E20B83608750D878787CDCDCDBBBBBBA8A8A8AFAFAFC0C0C08C8C8CC6 + C6C6C2C2C2BFBFBFBBBBBBB7B7B7B3B3B3B0B0B0ACACAC8C8C8C078DBBB3FCFE + B6F6FFC6F5FFE3FAFFE9F9FD08750D08750D08750D08750D3ED76638D15E0875 + 0D08750D08750D08750D878787DADADADCDCDCE1E1E1ECECECEDEDED8C8C8C8C + 8C8C8C8C8C8C8C8CC2C2C2BDBDBD8C8C8C8C8C8C8C8C8C8C8C8C078DBBBAEEF6 + 30BCDD11A7D2129FCB20A1CA35A7CD2692BF92CEE408750D46DE7341DA6D0875 + 0DFF00FFFF00FFFF00FF878787DADADAA1A1A19292929090909595959D9D9D93 + 9393C6C6C68C8C8CC7C7C7C4C4C48C8C8CFF00FFFF00FFFF00FF078DBB4AC5DD + 59EAFE23D7FE36D9FE6FE6FF8DE7FA49C1E30682B608750D4DE67F49E2790875 + 0DFF00FFFF00FFFF00FF878787AAAAAABBBBBBA8A8A8AFAFAFC3C3C3CCCCCCAC + ACAC8585858C8C8CCCCCCCC9C9C98C8C8CFF00FFFF00FFFF00FF078DBB8CFBFE + 59EAFE23D7FE36D9FE6FE6FF8DE7FA49C1E3089DCF08750D08750D08750D0875 + 0DFF00FFFF00FFFF00FF878787CDCDCDBBBBBBA8A8A8AFAFAFC3C3C3CCCCCCAC + ACAC8E8E8E8C8C8C8C8C8C8C8C8C8C8C8CFF00FFFF00FFFF00FF078DBB8CFBFE + 59EAFE23D7FE36D9FE6FE6FF8DE7FA49C1E3089CCE0E7FA9FF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FF878787CDCDCDBBBBBBA8A8A8AFAFAFC3C3C3CCCCCCAC + ACAC8E8E8E838383FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF078DBB8CFBFE + 59EAFE23D7FE36D9FE6FE6FF8DE7FA49C1E3089DCF0E80AAFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FF878787CDCDCDBBBBBBA8A8A8AFAFAFC3C3C3CCCCCCAC + ACAC8E8E8E838383FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF078DBB91FCFE + 82F8FF6FF8FF7AFEFF97FEFFA0FCFE63DAF50DA2D40E80AAFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FF878787CECECEC9C9C9C3C3C3C7C7C7D1D1D1D4D4D4BB + BBBB919191838383FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF078DBBFCFFFF + F4FFFFD3FFFFB4FFFFADFFFFADFFFFA9FFFF72F9FE0E80AAFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FF878787F4F4F4F1F1F1E6E6E6DBDBDBD9D9D9D9D9D9D7 + D7D7C4C4C4838383FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0C92C0 + F1FBFDE4FFFFC7FFFFAEFFFFA8FFFF9BFBFC1385AFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FF8A8A8AF0F0F0ECECECE2E2E2D9D9D9D7D7D7D1 + D1D1878787FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + 078DBB078DBB078DBB078DBB078DBB078DBBFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FF87878787878787878787878787878787 + 8787FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} + NumGlyphs = 2 + end + object BitBtn2: TBitBtn + Left = 259 + Top = 158 + Width = 63 + Height = 25 + Anchors = [akLeft, akBottom] + Cancel = True + Caption = 'Cancel' + ModalResult = 2 + TabOrder = 1 + OnClick = BitBtn2Click + Glyph.Data = { + 36060000424D3606000000000000360000002800000020000000100000000100 + 18000000000000060000C40E0000C40E00000000000000000000FF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF00009A00009AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00009A0000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + 00009A174AFD103BF400009AFF00FFFF00FFFF00FFFF00FF00009A002CF80030 + FC00009AFF00FFFF00FFFF00FFFF00FF6B6B6BA8A8A8A0A0A06B6B6BFF00FFFF + 00FFFF00FFFF00FF6B6B6B9A9A9A9C9C9C6B6B6BFF00FFFF00FFFF00FFFF00FF + 00009A1A47F81A4CFF123BF100009AFF00FFFF00FF00009A012DF60132FF002A + F300009AFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7AAAAAA9F9F9F6B6B6BFF + 00FFFF00FF6B6B6B9999999E9E9E9797976B6B6BFF00FFFF00FFFF00FFFF00FF + FF00FF00009A1C47F61B4DFF143EF400009A00009A002DF80134FF032BF20000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7ABABABA2A2A26B + 6B6B6B6B6B9A9A9A9E9E9E9898986B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FF00009A1D48F61D50FF103DFB0431FE0132FF002CF600009AFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7ACACACA3 + A3A39F9F9F9E9E9E9999996B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF00009A1A48F91342FF0C3CFF0733F600009AFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7A7 + A7A7A3A3A39C9C9C6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF00009A214EFC1D4BFF1847FF1743F600009AFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BACACACAC + ACACA9A9A9A4A4A46B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FF00009A2E5BF92C5FFF224DF8204BF82355FF1B46F600009AFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BB1B1B1B3B3B3AB + ABABAAAAAAAFAFAFA6A6A66B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF00009A3664FA386BFF2D59F400009A00009A224CF42558FF1D49F60000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BB6B6B6B9B9B9AEAEAE6B + 6B6B6B6B6BA9A9A9B0B0B0A7A7A76B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + 00009A4071FA4274FF325DF100009AFF00FFFF00FF00009A224DF1275AFF204C + F800009AFF00FFFF00FFFF00FFFF00FF6B6B6BBBBBBBBEBEBEAFAFAF6B6B6BFF + 00FFFF00FF6B6B6BA7A7A7B1B1B1AAAAAA6B6B6BFF00FFFF00FFFF00FFFF00FF + 00009A497AFC3B66F300009AFF00FFFF00FFFF00FFFF00FF00009A2550F42655 + FA00009AFF00FFFF00FFFF00FFFF00FF6B6B6BC0C0C0B5B5B56B6B6BFF00FFFF + 00FFFF00FFFF00FF6B6B6BAAAAAAAEAEAE6B6B6BFF00FFFF00FFFF00FFFF00FF + FF00FF00009A00009AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00009A0000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} + NumGlyphs = 2 + end + object ed_ServerUrl: TEdit + Left = 16 + Top = 64 + Width = 306 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 2 + OnChange = ed_ServerUrlChange + end + object cb_Services: TComboBox + Left = 16 + Top = 128 + Width = 306 + Height = 21 + Anchors = [akLeft, akTop, akRight] + ItemHeight = 13 + TabOrder = 3 + OnChange = cb_ServicesChange + OnCloseUp = cb_ServicesChange + OnEnter = cb_ServicesEnter + OnExit = cb_ServicesChange + end + object BitBtn1: TBitBtn + Left = 193 + Top = 158 + Width = 61 + Height = 25 + Anchors = [akRight, akBottom] + Caption = 'Finish' + Default = True + ModalResult = 1 + TabOrder = 4 + Glyph.Data = { + 36060000424D3606000000000000360000002800000020000000100000000100 + 18000000000000060000220B0000220B00000000000000000000FF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00FF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FF787878FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00 + 811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FF787878787878FF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + 811E00811E00811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FF787878787878787878FF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF811E0095440F811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF787878898989787878FF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FF811E00A7632F811E00811E00FF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF7878789F9F9F78787878 + 7878FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF811E00BF8B62CCA17E811E00811E00FF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF787878B8B8B8C6 + C6C6787878787878FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FF811E00D8B69CE6D1BFE7D3C4811E00FF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF787878D1 + D1D1E0E0E0E2E2E2787878FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FF811E00F0E2D9FCF7F2FAF0E6811E00811E + 00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF78 + 7878EBEBEBF5F5F5F1F1F1787878787878FF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FF811E00D8AF96F4E2CFF0D7BDD8A784811E + 00811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF78 + 7878D0D0D0E9E9E9E3E3E3CACACA787878787878FF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FF811E00F3DECAEFD4B8EBC9A7DAA67D811E00FF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF787878E7 + E7E7E1E1E1DBDBDBC9C9C9787878FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FF811E00E7BB92E3B081E0A672D5925A811E + 00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF78 + 7878D3D3D3CDCDCDC6C6C6BCBCBC787878FF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00DA995ED78F50D38441CF7B + 35811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FF787878BFBFBFB8B8B8B2B2B2ACACAC787878FF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00811E00811E00811E + 00811E00811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FF787878787878787878787878787878787878FF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} + NumGlyphs = 2 + end +end diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleEditorForm.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleEditorForm.pas new file mode 100644 index 0000000..c5a26ff --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleEditorForm.pas @@ -0,0 +1,148 @@ +unit uDAClientDataModuleEditorForm; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uDAClientDataModule, StdCtrls, Buttons, DesignIntf; + +type + TDAClientDataModuleEditorForm = class(TForm) + btn_CreateTables: TBitBtn; + BitBtn2: TBitBtn; + lbl_ServerUrl1: TLabel; + ed_ServerUrl: TEdit; + lbl_ServerUrl2: TLabel; + lbl_ServerUrl3: TLabel; + Label4: TLabel; + Label5: TLabel; + cb_Services: TComboBox; + BitBtn1: TBitBtn; + procedure ed_ServerUrlChange(Sender: TObject); + procedure cb_ServicesEnter(Sender: TObject); + procedure BitBtn2Click(Sender: TObject); + procedure btn_CreateTablesClick(Sender: TObject); + procedure cb_ServicesChange(Sender: TObject); + private + fServerUrlChanged: boolean; + fRestoreServerUrl: string; + fModule:TDAClientDataModule; + fCreateDataTables: boolean; + procedure FillServiceCombo; + + public + class function Execute(aOwner: TCOmponent; aModule:TDAClientDataModule; aDesigner:IDesigner):boolean; + end; + +var + DAClientDataModuleEditorForm: TDAClientDataModuleEditorForm; + +implementation + +uses + uROClasses, TypInfo, uDAIDERes, uDAPleaseWaitForm, + uDAClientDataModuleDataTableWizardForm; + +{$R *.dfm} + +{ TDAClientDataModuleEditorForm } + +class function TDAClientDataModuleEditorForm.Execute(aOwner: TCOmponent; aModule: TDAClientDataModule; aDesigner:IDesigner): boolean; +begin + if not Assigned(aModule.RemoteService) then RaiseError(err_AssignRemoteService); + if not Assigned(aModule.RemoteService.Channel) then RaiseError(err_AssignRemoteServiceChannel); + if not Assigned(aModule.RemoteService.Message) then RaiseError(err_AssignRemoteServiceMessage); + + with self.Create(aOwner) do try + + fModule := aModule; + Caption := Format(Caption,[fModule.Name]); + + + try + fRestoreServerUrl := GetStrProp(fModule.RemoteService.Channel,'TargetURL'); + ed_ServerUrl.Text := fRestoreServerUrl; + fServerUrlChanged := false; + except + ed_ServerUrl.Enabled := false; + lbl_ServerUrl1.Enabled := false; + lbl_ServerUrl2.Enabled := false; + lbl_ServerUrl3.Enabled := false; + end; + + FillServiceCombo(); + cb_Services.ItemIndex := cb_Services.Items.IndexOf(fModule.RemoteService.ServiceName); + cb_ServicesChange(nil); + + result := ShowModal() = idOk; + if result then begin + if ed_ServerUrl.Enabled then SetStrProp(fModule.RemoteService.Channel,'TargetURL',ed_ServerUrl.Text); + fModule.RemoteService.ServiceName := cb_Services.Text; + + if fCreateDataTables then begin + TDAClientDataModuleDataTableWizardForm.Execute(aOwner, fModule, aDesigner); + end; + + end; + + finally + Free(); + end; +end; + +procedure TDAClientDataModuleEditorForm.ed_ServerUrlChange( + Sender: TObject); +begin + fServerUrlChanged := true; +end; + +procedure TDAClientDataModuleEditorForm.FillServiceCombo; +var + lServiceNames: IROStrings; + i:integer; +begin + Screen.Cursor := crHourGlass; + try + cb_Services.Items.Clear(); + lServiceNames := fModule.RemoteService.GetServiceNames(); + if Assigned(lServiceNames) then begin + for i := 0 to (lServiceNames.Count-1) do + cb_Services.Items.Add(lServiceNames[i]); + end + else begin + cb_Services.Text := ''; + end; + cb_ServicesChange(nil); + finally + Screen.Cursor := crDefault; + end; +end; + +procedure TDAClientDataModuleEditorForm.cb_ServicesEnter(Sender: TObject); +begin + if fServerUrlChanged then begin + if ed_ServerUrl.Enabled then begin + SetStrProp(fModule.RemoteService.Channel,'TargetURL',ed_ServerUrl.Text); + FillServiceCombo(); + end; + fServerUrlChanged := true; + end +end; + +procedure TDAClientDataModuleEditorForm.BitBtn2Click(Sender: TObject); +begin + if ed_ServerUrl.Enabled then + SetStrProp(fModule.RemoteService.Channel,'TargetURL',fRestoreServerUrl); +end; + +procedure TDAClientDataModuleEditorForm.btn_CreateTablesClick(Sender: TObject); +begin + fCreateDataTables := true; +end; + +procedure TDAClientDataModuleEditorForm.cb_ServicesChange(Sender: TObject); +begin + btn_CreateTables.Enabled := cb_Services.Text <> ''; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleWizard.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleWizard.pas new file mode 100644 index 0000000..8ced8e8 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleWizard.pas @@ -0,0 +1,394 @@ +unit uDAClientDataModuleWizard; + +{$I DataAbstract.inc} + +interface + +uses DesignEditors, ToolsAPI, Windows, ActnList, Menus, Classes; + +const CRLF = #13#10; // Carriage-return line-feed. + +resourcestring + sBasicDfmSource = + 'object %0:s: T%0:s' + crlf + + ' Left = 200' + crlf + + ' Top = 200' + crlf + + ' Height = 300' + crlf + + ' Width = 300' + crlf + + ' RemoteService = RORemoteService' + crlf + + ' Adapter = DABinAdapter' + crlf + + ' SchemaCall.MethodName = ''GetSchemaAsXML''' + crlf + + ' SchemaCall.Params = <' + crlf + + ' item' + crlf + + ' Name = ''Result''' + crlf + + ' ParamType = fResult' + crlf + + ' DataType = rtString' + crlf + + ' end>' + crlf + + ' object ROChannel: TROWinInetHTTPChannel' + crlf + + ' UserAgent = ''RemObjects SDK''' + crlf + + ' TargetURL = ''http://localhost:8099/bin''' + crlf + + ' Left = 40' + crlf + + ' Top = 8' + crlf + + ' end' + crlf + + ' object ROMessage: TROBinMessage' + crlf + + ' Left = 40' + crlf + + ' Top = 52' + crlf + + ' end' + crlf + + ' object RORemoteService: TRORemoteService' + crlf + + ' Message = ROMessage' + crlf + + ' Channel = ROChannel' + crlf + + ' Left = 40' + crlf + + ' Top = 96' + crlf + + ' end' + crlf + + ' object DABinAdapter: TDABINAdapter' + crlf + + ' Left = 40' + crlf + + ' Top = 144' + crlf + + ' end' + crlf + + 'end'; + + sBasicFormSource = + 'unit %0:s;' + crlf + + crlf + + 'interface' + crlf + + crlf + + 'uses {vcl:} SysUtils, Classes, DB, DBClient, ' + crlf + + ' {RemObjects:} %3:s;' + crlf + + crlf + + 'type' + crlf + + ' T%1:s = class(%2:s)' + crlf + + ' ROChannel: TROWinInetHTTPChannel;' + crlf + + ' ROMessage: TROBinMessage;' + crlf + + ' RORemoteService: TRORemoteService;' + crlf + + ' DABinAdapter: TDABINAdapter;' + crlf + + ' private' + crlf + + ' { Private declarations }' + crlf + + ' public' + crlf + + ' { Public declarations }' + crlf + + ' end;' + crlf + + crlf + + 'var' + crlf + + ' %1:s: T%1:s;' + crlf + + crlf + + 'implementation' + crlf + + crlf + + '{$R *.DFM}' + crlf + + crlf + + 'initialization' + crlf + + 'end.' ; + +type TSourceFile = class(TInterfacedObject, IOTAFile) + private + fAge: TDateTime; + fSource:string; + public + function GetSource: string; + function GetAge: TDateTime; + constructor Create(const iSource:string); + end; + + TBaseFormCreator = class(TInterfacedObject, IOTAModuleCreator) + public + function GetCreatorType: string; + function GetExisting: Boolean; + function GetFileSystem: string; + function GetOwner: IOTAModule; + function GetUnnamed: Boolean; + + function GetAncestorName: string; + function GetImplFileName: string; + function GetIntfFileName: string; + function GetFormName: string; + function GetMainForm: Boolean; + function GetShowForm: Boolean; + function GetShowSource: Boolean; + function NewFormFile(const FormIdent, AncestorIdent: string): IOTAFile; + function NewImplSource(const ModuleIdent, FormIdent, AncestorIdent: string): IOTAFile; + function NewIntfSource(const ModuleIdent, FormIdent, AncestorIdent: string): IOTAFile; + + procedure FormCreated(const FormEditor: IOTAFormEditor); + end; { TBaseFormCreator } + + TNewModuleExpert = class(TInterfacedObject, + IOTAWizard, + IOTARepositoryWizard, + IOTAFormWizard, + {$IFDEF BDS} + IOTARepositoryWizard80, + {$ENDIF} + IOTARepositoryWizard60) + public + + constructor Create(); + destructor Destroy(); override; + + procedure AfterSave; + procedure BeforeSave; + procedure Destroyed; + procedure Modified; + + procedure Execute; + function GetAuthor: String; + function GetComment: String; + function GetGlyph: Cardinal; + function GetIDString: String; + function GetName: String; + function GetPage: String; + function GetState: TWizardState; + function GetDesigner: String; + + {$IFDEF BDS} + function GetGalleryCategory: IOTAGalleryCategory; + function GetPersonality: string; + {$ENDIF} + + end; + +procedure Register; + +implementation + +uses SysUtils, Graphics, + uRORes, uDADataAbstractEditors, Dialogs, uDAClientDataModuleEditorForm, Forms, + uDAClientDataModule; + +{ TBaseFormCreator } + +procedure TBaseFormCreator.FormCreated(const FormEditor: IOTAFormEditor); +begin + +end; + +function TBaseFormCreator.GetAncestorName: string; +begin + result := 'TDAClientDataModule'; +end; + +function TBaseFormCreator.GetCreatorType: string; +begin + result := sForm; +end; + +function TBaseFormCreator.GetExisting: Boolean; +begin + result := false; +end; + +function TBaseFormCreator.GetFileSystem: string; +begin + result := ''; +end; + +function TBaseFormCreator.GetFormName: string; +begin + result := ''; +end; + +function TBaseFormCreator.GetImplFileName: string; +begin + result := ''; +end; + +function TBaseFormCreator.GetIntfFileName: string; +begin + result := ''; +end; + +function TBaseFormCreator.GetMainForm: Boolean; +begin + result := false; +end; + +function TBaseFormCreator.GetOwner: IOTAModule; +var + ModuleServices: IOTAModuleServices; + Module: IOTAModule; + NewModule: IOTAModule; +begin + Result := nil; + if BorlandIDEServices.QueryInterface(IOTAModuleServices, ModuleServices) = +S_OK then + begin + Module := ModuleServices.CurrentModule; + if Module <> nil then + if Module.GetOwnerCount > 0 then + begin + NewModule := Module.GetOwner(0); + if NewModule <> nil then + if NewModule.QueryInterface(IOTAProject, Result) <> S_OK then + Result := nil; + end; + end; +end; + +function TBaseFormCreator.GetShowForm: Boolean; +begin + result := true; +end; + +function TBaseFormCreator.GetShowSource: Boolean; +begin + result := true; +end; + +function TBaseFormCreator.GetUnnamed: Boolean; +begin + result := true; +end; + +function RemoveInitialT(const iString:string):string; +begin + result := iString; + if (result <> '') and (result[1] = 'T') then Delete(result,1,1); + //ShowMessage(iString+' '+result); +end; + +function TBaseFormCreator.NewFormFile(const FormIdent, + AncestorIdent: string): IOTAFile; +begin + result := TSourceFile.Create(Format(sBasicDfmSource,[RemoveInitialT(FormIdent)])); +end; + +function TBaseFormCreator.NewImplSource(const ModuleIdent, FormIdent, + AncestorIdent: string): IOTAFile; +begin + result := TSourceFile.Create(Format(sBasicFormSource,[ModuleIdent,RemoveInitialT(FormIdent),AncestorIdent,'uDAClientDataModule'])); +end; + +function TBaseFormCreator.NewIntfSource(const ModuleIdent, FormIdent, + AncestorIdent: string): IOTAFile; +begin + +end; + +{ TSourceFile } + +constructor TSourceFile.Create(const iSource: string); +begin + inherited Create(); + fSource := iSource; + fAge := Now; +end; + +function TSourceFile.GetAge: TDateTime; +begin + result := fAge; +end; + +function TSourceFile.GetSource: string; +begin + result := fSource; +end; + +{ TNewModuleExpert } + +constructor TNewModuleExpert.Create; +begin + inherited; +end; + +destructor TNewModuleExpert.Destroy; +begin + inherited; +end; + +procedure TNewModuleExpert.Execute; +var + lModuleServices: IOTAModuleServices; + lModuleCreator: IOTAModuleCreator; + lModule: IOTAModule; +begin + if BorlandIDEServices.QueryInterface(IOTAModuleServices, lModuleServices) = S_OK then + begin + lModuleCreator := TBaseFormCreator.Create(); + lModule := lModuleServices.CreateModule(lModuleCreator); + TDAClientDataModuleEditorForm.Execute(Application, + (lModule.GetCurrentEditor as INTAFormEditor).FormDesigner.Root as TDAClientDataModule, + (lModule.GetCurrentEditor as INTAFormEditor).FormDesigner); + end; +end; + +function TNewModuleExpert.GetAuthor: String; +begin + result := 'RemObjects Software'; +end; + +function TNewModuleExpert.GetComment: String; +begin + result := 'Data Abstract ClientDataModule'; +end; + +function TNewModuleExpert.GetGlyph: Cardinal; +begin + result := LoadIcon(hInstance,'DAClientDataModule'); +end; + +function TNewModuleExpert.GetIDString: String; +begin + result := 'RemObjectsDAClientDataModule'; +end; + +function TNewModuleExpert.GetName: String; +begin + result := 'Data Abstract ClientDataModule'; +end; + +function TNewModuleExpert.GetPage: String; +begin + result := 'RemObjects Data Abstract'; +end; + +{$IFDEF BDS} +function TNewModuleExpert.GetGalleryCategory: IOTAGalleryCategory; +var + lGalleryManager: IOTAGalleryCategoryManager; +begin + lGalleryManager := BorlandIDEServices as IOTAGalleryCategoryManager; + result := lGalleryManager.FindCategory('RemObjectsDataAbstractDelphi'); +end; + +function TNewModuleExpert.GetPersonality: string; +begin + result := sDelphiPersonality; +end; +{$ENDIF} + +function TNewModuleExpert.GetState: TWizardState; +begin + result := [wsEnabled]; +end; + +procedure TNewModuleExpert.AfterSave; +begin + +end; + +procedure TNewModuleExpert.BeforeSave; +begin + +end; + +procedure TNewModuleExpert.Destroyed; +begin + +end; + +procedure TNewModuleExpert.Modified; +begin + +end; + +procedure Register; +begin + //RegisterPackageWizard(TNewModuleExpert.Create as IOTAFormWizard); +end; + +{$R 'uDAClientModuleWizard.res' 'uDAClientModuleWizard.rc'} + +function TNewModuleExpert.GetDesigner: String; +begin + Result := dAny; +end; + +initialization +finalization +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDAClientModuleWizard.res b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDAClientModuleWizard.res new file mode 100644 index 0000000..dd81d99 Binary files /dev/null and b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDAClientModuleWizard.res differ diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDADBSessionManagerEditor.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDADBSessionManagerEditor.pas new file mode 100644 index 0000000..5f20234 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDADBSessionManagerEditor.pas @@ -0,0 +1,166 @@ +unit uDADBSessionManagerEditor; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - IDE Library +{ +{ compiler: Delphi 6 and up, Kylix 3 and up +{ platform: Win32, Linux +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ENDIF MSWINDOWS} +{$IFDEF LINUX} +{$I ../DataAbstract.inc} +{$ENDIF LINUX} + +interface + +uses + Classes, DesignIntf, DesignEditors, + uDAClasses; + +type + TDASchemaItemListEditor = class(TStringProperty) + protected + function GetSchema: TDASchema; virtual; + + public + function GetAttributes: TPropertyAttributes; override; + procedure SetValue(const Value: string); override; + property Schema: TDASchema read GetSchema; + end; + + TDASchemaCommandListEditor = class(TDASchemaItemListEditor) + public + procedure GetValues(Proc: TGetStrProc); override; + end; + + TDASchemaDataSetListEditor = class(TDASchemaItemListEditor) + public + procedure GetValues(Proc: TGetStrProc); override; + end; + + TDARemoteServiceDataSetListEditor = class(TDASchemaDataSetListEditor) + protected + function GetSchema: TDASchema; override; + + end; + + TDARemoteServiceCommandListEditor = class(TDASchemaCommandListEditor) + protected + function GetSchema: TDASchema; override; + + end; + + TDASchemaCommandAndDataSetListEditor = class(TDASchemaItemListEditor) + public + procedure GetValues(Proc: TGetStrProc); override; + end; + + TDASchemaConnectionsListEditor = class(TDASchemaItemListEditor) + public + procedure GetValues(Proc: TGetStrProc); override; + end; + +implementation + +uses + uDADBSessionManager, Dialogs, DARemoteService_Impl; + +{ TDASchemaItemListEditor } + +function TDASchemaItemListEditor.GetAttributes: TPropertyAttributes; +begin + result := [paValueList, paSortList] +end; + +function TDASchemaItemListEditor.GetSchema: TDASchema; +begin + result := (GetComponent(0) as TDADBSessionManager).Schema; +end; + +procedure TDASchemaItemListEditor.SetValue(const Value: string); +begin + inherited; + +end; + +{ TDASchemaCommandListEditor } + +procedure TDASchemaCommandListEditor.GetValues(Proc: TGetStrProc); +var + i: integer; +begin + if Assigned(Schema) then begin + for i := 0 to Schema.Commands.Count - 1 do begin + Proc(Schema.Commands[i].Name); + end; + end; +end; + +{ TDASchemaDataSetListEditor } + +procedure TDASchemaDataSetListEditor.GetValues(Proc: TGetStrProc); +var + i: integer; +begin + if Assigned(Schema) then begin + for i := 0 to Schema.Datasets.Count - 1 do begin + Proc(Schema.Datasets[i].Name); + end; + end; +end; + +{ TDASchemaCommandAndDataSetListEditor } + +procedure TDASchemaCommandAndDataSetListEditor.GetValues(Proc: TGetStrProc); +var + i: integer; +begin + if Assigned(Schema) then begin + for i := 0 to Schema.Datasets.Count - 1 do begin + Proc(Schema.Datasets[i].Name); + end; + if (Schema.Datasets.Count > 0) and (Schema.Commands.Count > 0) then + Proc('---'); + + for i := 0 to Schema.Commands.Count - 1 do begin + Proc(Schema.Commands[i].Name); + end; + end; +end; + +{ TDASchemaConnectionsListEditor } + +procedure TDASchemaConnectionsListEditor.GetValues(Proc: TGetStrProc); +var + i: integer; +begin + if Assigned(Schema) and Assigned(Schema.ConnectionManager) then begin + for i := 0 to Schema.ConnectionManager.Connections.Count - 1 do begin + Proc(Schema.ConnectionManager.Connections[i].Name); + end; + end; +end; + +{ TDARemoteServiceDataSetListEditor } + +function TDARemoteServiceDataSetListEditor.GetSchema: TDASchema; +begin + result := (GetComponent(0) as TDARemoteService).ServiceSchema; +end; + +{ TDARemoteServiceCommandListEditor } + +function TDARemoteServiceCommandListEditor.GetSchema: TDASchema; +begin + result := (GetComponent(0) as TDARemoteService).ServiceSchema; +end; + +end. diff --git a/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDADataAbstractEditors.pas b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDADataAbstractEditors.pas new file mode 100644 index 0000000..a313f25 --- /dev/null +++ b/official/5.0.30.691/Data Abstract for Delphi/Source/IDE/uDADataAbstractEditors.pas @@ -0,0 +1,1291 @@ +unit uDADataAbstractEditors; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - IDE Library +{ +{ compiler: Delphi 6 and up, Kylix 3 and up +{ platform: Win32, Linux +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ENDIF MSWINDOWS} +{$IFDEF LINUX} +{$I ../DataAbstract.inc} +{$ENDIF LINUX} + +interface + +uses + Windows, Classes, uDAClasses, DesignIntf, DesignEditors, uRODL, ColnEdit,uDARes, + uDAClientDataModule, uDADataTable, uDARemoteDataAdapter, uROClient, SysUtils, + uRORemoteService; + +type { TDADriverManagerEditor } + TDADriverManagerEditor = class(TComponentEditor) + private + public + procedure ExecuteVerb(Index: Integer); override; + function GetVerb(Index: Integer): string; override; + function GetVerbCount: Integer; override; + end; + + { TDAConnectionManagerEditor } + TDAConnectionManagerEditor = class(TComponentEditor) + private + public + procedure ExecuteVerb(Index: Integer); override; + function GetVerb(Index: Integer): string; override; + function GetVerbCount: Integer; override; + end; + + { TDADataDictionaryEditor } + TDADataDictionaryEditor = class(TComponentEditor) + private + public + procedure ExecuteVerb(Index: Integer); override; + function GetVerb(Index: Integer): string; override; + function GetVerbCount: Integer; override; + end; + + { TDASchemaEditor } + TDASchemaEditor = class(TComponentEditor) + protected + public + procedure ExecuteVerb(Index: Integer); override; + function GetVerb(Index: Integer): string; override; + function GetVerbCount: Integer; override; + end; + + { TDADesigntimeCallEditor } + TDADesigntimeCallEditor = class(TComponentEditor) + protected + public + procedure ExecuteVerb(Index: Integer); override; + function GetVerb(Index: Integer): string; override; + function GetVerbCount: Integer; override; + end; + + { TDADataRequestCallMethodNameEditor } + TDADataRequestCallMethodNameEditor = class(TStringProperty) + private + function RetrieveLibrary: TRODLLibrary; + + protected + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + procedure SetValue(const Value: string); override; + end; + + { TDALoginAwareComponentEditor } + TDALoginAwareComponentEditor = class(TComponentEditor) + protected + fRemoteService: TRORemoteService; + function GetAdapterSchema(aAdapter: TDARemoteDataAdapter): TDASchema; + procedure OnLoginNeeded(Sender: TROTransportChannel; anException: Exception; var aRetry: Boolean); + end; + + { TDADataTableEditor } + TDADataTableEditor = class(TDALoginAwareComponentEditor) + protected + public + procedure ExecuteVerb(Index: Integer); override; + function GetVerb(Index: Integer): string; override; + function GetVerbCount: Integer; override; + end; + + { TDARemoteDataAdapterEditor } + TDARemoteDataAdapterEditor = class(TDALoginAwareComponentEditor) + private + fDataTables: TStringList; + function HookUpDataTables: boolean; + procedure GetDataTables(const aName: string); + public + procedure ExecuteVerb(Index: Integer); override; + function GetVerb(Index: Integer): string; override; + function GetVerbCount: Integer; override; + end; + + { TDADataTableMasterDetailProps } + {$IFDEF MSWINDOWS} + TDADataTableMasterDetailProps = class(TStringProperty) + protected + public + function GetAttributes: TPropertyAttributes; override; + procedure Edit; override; + end; + {$ENDIF MSWINDOWS} + + { TDABusinessProcessorCommandProperty } + TDABusinessProcessorCommandProperty = class(TStringProperty) + protected + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + end; + + { TDABusinessProcessorRefDatasetProperty } + TDABusinessProcessorRefDatasetProperty = class(TStringProperty) + protected + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + end; + + { TDACollectionProperty } + TDACollectionProperty = class(TCollectionProperty) + private + protected + public + procedure Edit; override; + function GetAttributes: TPropertyAttributes; override; + end; + + { TDADataTableLogicalNameEditor } + TDADataTableLogicalNameEditor = class(TStringProperty) + private + function GetSchema: TDASchema; + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + end; + + { TDACollectionItemDatasetNameEditor } + TDACollectionItemDatasetNameEditor = class(TStringProperty) + private + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + end; + + { TDADataTableLocalConnection } + TDADataTableLocalConnection = class(TStringProperty) + private + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + end; + + { TDADriverManagerDirectory } + TDADriverManagerDirectory = class(TStringProperty) + private + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + procedure SetValue(const Value: string); override; + end; + + { TDADataTableReferenceDataTable } + TDADataTableReferenceDataTable = class(TComponentProperty) + public + procedure GetValues(Proc: TGetStrProc); override; + end; + + { TDALookupSourceProperty } + TDALookupSourceProperty = class(TStringProperty) + private + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + end; + + { TDALookupDestProperty } + TDALookupDestProperty = class(TStringProperty) + private + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + end; + + { TDALookupResultFieldProperty } + TDALookupResultFieldProperty = class(TDALookupDestProperty) + private + public + function GetAttributes: TPropertyAttributes; override; + procedure SetValue(const Value: string); override; + end; + +implementation + +uses + Dialogs, ToolsAPI, ShellAPI, Graphics, Controls, FileCtrl, + TypInfo, Forms, ClipBrd, DB, + uROTypes, + uDAUtils, uDADriverManager, uDADriverInfo, uDASupportClasses, + uROClasses, + {$IFDEF MSWINDOWS} + uROIDETools, uROIDEMenu, uROPleaseWaitForm, uDASchemaUnitsGenerator, + uDAIDEMenu, uDADataTableMasterLinkWizardForm, uDAPleaseWaitForm, + {$ENDIF MSWINDOWS} + uRODLToXML, uDAInterfaces, uDABusinessProcessor, uDAIDERes, + IniFiles, Registry, uDAIDEData, uDADesigntimeCall, uDASelectDataTablesForm, + uRODynamicRequest, uDADataTableWizards, uROLoginNeededForm; + +{ TDASchemaEditor } + +const + {$IFDEF MSWINDOWS} + COMMAND_INDEX_EDIT = 0; + COMMAND_INDEX_PUBLISH = 1; + COMMAND_INDEX_SEPARATOR_1 = 2; + COMMAND_INDEX_SAVE = 3; + COMMAND_INDEX_LOAD = 4; + COMMAND_INDEX_SEPARATOR_2 = 5; + COMMAND_INDEX_GENCODE = 6; + COMMAND_INDEX_GENCONSTS = 7; + {$ENDIF MSWINDOWS} + {$IFDEF LINUX} + COMMAND_INDEX_EDIT = -1; + COMMAND_INDEX_PUBLISH = -2; + COMMAND_INDEX_SAVE = 0; + COMMAND_INDEX_LOAD = 1; + {$ENDIF LINUX} + +procedure TDASchemaEditor.ExecuteVerb(Index: Integer); +var + schema :TDASchema; + connmgr : TDAConnectionManager; + lSchemaAge:integer; + sfname, + cmfname, dadname,diagramname :string; + i, x : integer; + s : string; + lDesigner:IDesignerNotify; + params: TStringList; +begin + schema := GetComponent as TDASchema; + connmgr := schema.ConnectionManager; + + {$IFDEF MSWINDOWS} + if (Index=COMMAND_INDEX_GENCONSTS) then begin + params := TStringList.Create; + with schema do try + params.Sorted := TRUE; + + s := ''; + if Datasets.Count>0 then begin + s := Format(' { Dataset names contained in schema "%s" }',[schema.Name])+#13#10; + for i := 0 to (Datasets.Count-1) do begin + s := s+Format(' ds_%s = ''%s'';', [MakeValidIdentifier(Datasets[i].Name), Datasets[i].Name])+#13#10; + end; + end; + + if Commands.Count>0 then begin + s := s+#13#10+Format(' { Command names contained in schema "%s"}',[schema.Name])+#13#10; + for i := 0 to (Commands.Count-1) do begin + s := s+Format(' cmd_%s = ''%s'';', [MakeValidIdentifier(Commands[i].Name), Commands[i].Name])+#13#10; + end; + end; + + s := s+' { Dataset and command parameters }'+#13#10; + for i := 0 to (Datasets.Count-1) do begin + for x := 0 to (Datasets[i].Params.Count-1) do begin + // Checks for duplicates + if params.IndexOf(UpperCase(Datasets[i].Params[x].Name))<0 + then params.Add(UpperCase(Datasets[i].Params[x].Name)) + else Continue; + + s := s+Format(' par_%s = ''%s'';', [Datasets[i].Params[x].Name, Datasets[i].Params[x].Name])+#13#10; + end; + end; + + for i := 0 to (Commands.Count-1) do begin + for x := 0 to (Commands[i].Params.Count-1) do begin + // Checks for duplicates + if params.IndexOf(UpperCase(Commands[i].Params[x].Name))<0 + then params.Add(UpperCase(Commands[i].Params[x].Name)) + else Continue; + + s := s+Format(' par_%s = ''%s'';', [Commands[i].Params[x].Name, Commands[i].Params[x].Name])+#13#10; + end; + end; + finally + params.Free; + end; + + Clipboard.AsText := s; + Exit; + end; + {$ENDIF MSWINDOWS} + + if (Index<>COMMAND_INDEX_LOAD) {$IFDEF MSWINDOWS} and (Index<>COMMAND_INDEX_GENCODE) {$ENDIF} then begin + Check(connmgr=NIL, 'The schema doesn''t have a connection manager associated. Cannot launch Schema Modeler'); + + if (Index=COMMAND_INDEX_SAVE) then begin + sfname := schema.Name; + if not PromptForFileName(sfname, 'Data Abstract Schema (*'+daFileExtSchemaFile+')|*'+daFileExtSchemaFile+'|All Files (*.*)|*.*', daFileExtSchemaFile, 'Save Schema '+schema.Name, '', TRUE) + then Exit; + end + else begin + sfname := GetTempFileName(daFileExtSchemaFile); + end; + + schema.SaveToFile(sfname, pfXML); + lSchemaAge := FileAge(sfname); + + cmfname := ChangeFileExt(sfname, daFileExtConnectionMgrFile); + connmgr.SaveToFile(cmfname, pfXML); + + dadname := ''; + if Assigned(schema.DataDictionary) then begin + dadname := ChangeFileExt(sfname, daFileExtDataDictionaryFile); + schema.DataDictionary.SaveToFile(dadname, pfXML); + end; + + diagramname := ''; + if Assigned(schema.Diagrams) then begin + diagramname := ChangeFileExt(sfname, DAFileExtDiagramsFile); + schema.Diagrams.SaveToFile(diagramname); + end; + + if (Index=COMMAND_INDEX_LOAD) then Exit; // Only wants to save! + + case Index of + {$IFDEF MSWINDOWS} + COMMAND_INDEX_EDIT:try + with CreatePleaseWaitForm('Running the Schema Modeler...') do try + Show(); + ExecuteAndWait(GetSchemaModelerPath, '/ns /platform:Delphi /projectname:"'+GetComponent().Name+'" /autosave /schemafile:"'+sfname+'"'); + Hide(); + finally + Free(); + end; + + if lSchemaAge < FileAge(sfname) then begin + + schema.LoadFromFile(sfname, pfXML); + Designer.Modified(); + + connmgr.LoadFromFile(cmfname, pfXML); + lDesigner := FindRootDesigner(connmgr); + if Assigned(lDesigner) then lDesigner.Modified(); + + if dadname <> '' then begin + schema.DataDictionary.LoadFromFile(dadname, pfXML); + lDesigner := FindRootDesigner(schema.DataDictionary); + if Assigned(lDesigner) then lDesigner.Modified(); + end; + + if diagramname <> '' then begin + schema.Diagrams.LoadFromFile(diagramname); + lDesigner := FindRootDesigner(schema.DataDictionary); + if Assigned(lDesigner) then lDesigner.Modified(); + end; + + end; + finally + DeleteFile(sfname); + DeleteFile(cmfname); + if dadname <> '' then DeleteFile(dadname); + end; + COMMAND_INDEX_PUBLISH:try + with CreatePleaseWaitForm('Running the Service Builder...') do try + Show(); + {$IFDEF SB2} + LaunchServiceBuilderForCurrentProject('/dataabstract-import-schema /schemafile:"'+sfname+'" /schemacomponentname:"'+schema.Name+'" /ServiceName:"'+schema.Owner.Name+'"',true,true); + {$ELSE} + LaunchServiceBuilderForCurrentProject('/execute:"DataAbstract.PublishSchemaWizard" /execute-options:"Schema='+sfname+';ServiceName='+schema.Owner.Name+';SchemaComponentName='+schema.Name+'"',true,true); + {$ENDIF} + Hide(); + finally + Free(); + end; + finally + DeleteFile(sfname); + DeleteFile(cmfname); + if dadname <> '' then DeleteFile(dadname); + if diagramname <> '' then DeleteFile(diagramname); + end; + {$ENDIF MSWINDOWS} + COMMAND_INDEX_SAVE:exit; + end; + end + + {$IFDEF MSWINDOWS} + else if (Index=COMMAND_INDEX_GENCODE) then begin + //MessageDlg('Not available yet', mtWarning, [mbOK], 0); + GenerateSchemaUnits(schema); + end + {$ENDIF MSWINDOWS} + + else begin + if PromptForFileName(sfname, 'Data Abstract Schema (*'+daFileExtSchemaFile+')|*'+daFileExtSchemaFile+'|All Files (*.*)|*.*', daFileExtSchemaFile, 'Load Schema') then begin + schema.LoadFromFile(sfname, pfXML); + Designer.Modified; + end; + end; +end; + +function TDASchemaEditor.GetVerb(Index: Integer): string; +begin + case Index of + {$IFDEF MSWINDOWS} + COMMAND_INDEX_SEPARATOR_1, + COMMAND_INDEX_SEPARATOR_2 : result := '-'; + {$ENDIF MSWINDOWS} + COMMAND_INDEX_EDIT : result := 'Edit '+GetComponent.Name; + COMMAND_INDEX_PUBLISH : result := 'Publish '+GetComponent.Name+'...'; + COMMAND_INDEX_SAVE : result := 'Save '+GetComponent.Name+' to Disk...'; + COMMAND_INDEX_LOAD : result := 'Load '+GetComponent.Name+' from Disk...'; + {$IFDEF MSWINDOWS} + COMMAND_INDEX_GENCODE : result := 'Generate '+GetComponent.Name+' strongly-typed access units...'; + COMMAND_INDEX_GENCONSTS : result := 'Copy Dataset and Command Names to Clipboard'; + {$ENDIF MSWINDOWS} + end; +end; + +function TDASchemaEditor.GetVerbCount: Integer; +begin + {$IFDEF MSWINDOWS} + result := 8; + {$ENDIF MSWINDOWS} + {$IFDEF LINUX} + result := 4; + {$ENDIF LINUX} +end; + +{ TDADriverManagerEditor } + +procedure TDADriverManagerEditor.ExecuteVerb(Index: Integer); +var + s : string; + i: Integer; + sl : IROStrings; + dm : TDADriverManager; +begin + dm := TDADriverManager(GetComponent); + s := ''; + + case Index of + 0 : ShowDriverInfo(dm); + + 1: begin + if (dm.DriverCount=0) then begin + MessageDlg('No drivers to unload.', mtWarning, [mbOK], 0); + end + else begin + dm.UnloadAllDrivers; + MessageDlg('Drivers unloaded.', mtInformation, [mbOK], 0); + end; + end; + + 2 : begin + if (dm.DriverDirectory='') then begin + MessageDlg('DriverDirectory is empty. Cannot load drivers.', mtWarning, [mbOK], 0); + end + else begin + dm.ListDrivers(dm.DriverDirectory, sl); + if (sl.Count=0) then begin + MessageDlg('No drivers were found', mtInformation, [mbOK], 0); + end + else begin + {$IFDEF MSWINOWS} + with CreatePleaseWaitForm('Loading Drivers...') do try + {$ENDIF MSWINOWS} + for i := 0 to sl.Count-1 do try + {$IFDEF MSWINOWS} + Show(Format('Loading %s...',[ExtractFileName(sl[i])])); + {$ENDIF MSWINOWS} + dm.LoadDriver(sl[i]); + except + on E:EDADriverAlreadyLoaded do; + on E:EDASchemaModelerOnly do; + on E:Exception do begin + {$IFDEF MSWINOWS} + Hide(); + {$ENDIF MSWINOWS} + ShowMessageFmt('There was an error loading the %s driver:'#13#13'%s: %s',[ExtractFileName(sl[i]),E.ClassName,E.Message]); + end; + end; { for } + {$IFDEF MSWINOWS} + end; + {$ENDIF MSWINOWS} + MessageDlg(IntToStr(dm.DriverCount)+' Drivers loaded.', mtInformation, [mbOK], 0); + end; + end; + end; + end; +end; + +function TDADriverManagerEditor.GetVerb(Index: Integer): string; +var dir : string; +begin + case Index of + 0 : result := 'Display Driver Information...'; + 1 : result := 'Unload All Drivers'; + 2 : begin + dir := TranslateFileName(TDADriverManager(GetComponent).DriverDirectory); + if (dir='') + then dir := ''; + result := 'Load Drivers in '+dir; + end; + end; +end; + +function TDADriverManagerEditor.GetVerbCount: Integer; +begin + result := 3; +end; + +{ TDAConnectionManagerEditor } + +procedure TDAConnectionManagerEditor.ExecuteVerb(Index: Integer); +var connmgr : TDAConnectionManager; + sfname : string; +begin + connmgr := GetComponent as TDAConnectionManager; + sfname := connmgr.Name+daFileExtConnectionMgrFile; + + case Index of + 0:begin + ShowCollectionEditor(Designer, connmgr, connmgr.Connections, 'Connections'); + end; + + 1 : {separator}; + + 2 : begin + if not PromptForFileName(sfname, 'Data Abstract Connections (*'+daFileExtConnectionMgrFile+')|*'+daFileExtConnectionMgrFile+'|All Files (*.*)|*.*', daFileExtConnectionMgrFile, 'Save Connections '+connmgr.Name, '', TRUE) + then Exit; + + connmgr.SaveToFile(sfname, pfXML); + end; + + 3: begin + if not PromptForFileName(sfname, 'Data Abstract Connections (*'+daFileExtConnectionMgrFile+')|*'+daFileExtConnectionMgrFile+'|All Files (*.*)|*.*', DAFileExtConnectionMgrFile, 'Load Connections '+connmgr.Name, '') + then Exit; + + connmgr.LoadFromFile(sfname, pfXML); + Designer.Modified; + end; + end; +end; + +function TDAConnectionManagerEditor.GetVerb(Index: Integer): string; +begin + case Index of + 0 : result := 'Connection List Editor'; + 1 : result := '-'; + 2 : result := 'Save '+GetComponent.Name+' To Disk...'; + 3 : result := 'Load '+GetComponent.Name+' From Disk...'; + end; +end; + +function TDAConnectionManagerEditor.GetVerbCount: Integer; +begin + result := 4; +end; + +{ TDADataRequestAccessParamEditor } + +procedure CheckCondition(InvalidSituation : boolean; const anErrorMessage : string); +begin + if InvalidSituation then begin + MessageDlg(anErrorMessage, mtError, [mbOK], 0); + Abort; + end; +end; + + +{ TDADataRequestCallMethodNameEditor } + +function TDADataRequestCallMethodNameEditor.GetAttributes: TPropertyAttributes; +begin + result := [paValueList] +end; + +function TDADataRequestCallMethodNameEditor.RetrieveLibrary : TRODLLibrary; +var datamethod : TDARemoteRequest; + //datatable : TDADataTable; + //adapter : TDADataAdapter; + rs : TRORemoteService; + svcname : string; +begin + //result := NIL; + + // Sets the variable we need + datamethod := GetComponent(0) as TDARemoteRequest; + rs := datamethod.RemoteService; + + CheckCondition(rs=NIL, 'RemoteService must be assigned.'); + + svcname := Trim(rs.ServiceName); + CheckCondition(svcname='', rs.Name+'.ServiceName must be assigned.'); + + {adapter := datamethod.Owner.Adapter; + CheckCondition(adapter=NIL, 'The Adpater property is not set');} + + result := rs.GetRODLLibrary; +end; + +procedure TDADataRequestCallMethodNameEditor.GetValues(Proc: TGetStrProc); +var lib : TRODLLibrary; + i,j : integer; + svc : TRODLService; + svcintf : TRODLServiceInterface; + svcname : string; + sl : IROStrings; + anchestors : TList; + method: TDARemoteRequest; +begin + lib := RetrieveLibrary; + if not assigned(lib) then + raise Exception.Create('RODL library could npt be retrieved from server.'); + + anchestors := TList.Create; + try + + method := GetComponent(0) as TDARemoteRequest; + svcname := method.RemoteService.ServiceName; + + svc := lib.FindService(svcname); + if not assigned(svc) then raise Exception.Create('Service "'+svcname+'" could not be found in RODL.'); + + repeat + anchestors.Add(svc.Default); + if (Trim(svc.Ancestor)<>'') then begin + svc := lib.FindService(svc.Ancestor); + if not assigned(svc) then break; + end + else break; + until false; + + // Methods + sl := NewROStrings; + sl.Sorted := TRUE; + + for i := 0 to anchestors.Count-1 do begin + svcintf := TRODLServiceInterface(anchestors[i]); + + for j := 0 to (svcintf.Count-1) do begin + {if (svcintf.Items[i].Result=NIL) or + not (StrToDataType(svcintf.Items[i].Result.DataType)=method.Owner.Adapter.TargetDataType) + then Continue;} + + sl.Add(svcintf.Items[j].Name); + end; + end; + + for i := 0 to (sl.Count-1) + do Proc(sl[i]); + + finally + anchestors.Free; + end; +end; + +procedure TDADataRequestCallMethodNameEditor.SetValue(const Value: string); +var + lRemoteRequest: TDARemoteRequest; + lOldMethodName: String; +begin + lRemoteRequest := TDARemoteRequest(GetComponent(0)); + lOldMethodName := lRemoteRequest.MethodName; + lRemoteRequest.MethodName := Value; + if (Trim(lOldMethodName) <> Trim(Value)) + then Designer.Modified(); + + if (Trim(Value)='') then Exit; + + if MessageDlg('Do you want to retrieve the parameters of the method '+Value+'?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin + {$IFDEF MSWINOWS} + with CreatePleaseWaitForm('Retrieving Parameters...') do begin + {$ENDIF MSWINOWS} + lRemoteRequest.RefreshParams(true); + {$IFDEF MSWINOWS} + Hide(); + Designer.Modified(); + end; + {$ENDIF MSWINOWS} + end; + +end; + +{ TDALoginAwareComponentEditor } + +procedure TDALoginAwareComponentEditor.OnLoginNeeded(Sender: TROTransportChannel; anException: Exception; var aRetry: Boolean); +begin + aRetry := TROLoginNeededForm.Execute(fRemoteService); +end; + +function TDALoginAwareComponentEditor.GetAdapterSchema(aAdapter: TDARemoteDataAdapter): TDASchema; +var + lSaved: TROExceptionEvent; +begin + if aAdapter.RemoteService.Channel = nil then + raise EROException.Create('Channel not assigned'); + lSaved := aAdapter.RemoteService.Channel.OnLoginNeeded; + aAdapter.RemoteService.Channel.OnLoginNeeded := OnLoginNeeded; + try + fRemoteService := aAdapter.RemoteService; + result := aAdapter.ReadSchema(True); + finally + aAdapter.RemoteService.Channel.OnLoginNeeded := lSaved; + end; +end; + +{ TDARemoteDataAdapterEditor } + +procedure TDARemoteDataAdapterEditor.GetDataTables(const aName: string); +begin + fDataTables.Add(aName); +end; + +function TDARemoteDataAdapterEditor.HookUpDataTables: boolean; +var + lForm: TDASelectDataTablesForm; + i: integer; +begin + fDataTables := TStringList.Create; + try + fDataTables.Sorted := true; + Designer.GetComponentNames(GetTypeData(TypeInfo(TDADataTable)), GetDataTables); + if fDataTables.Count > 0 then begin + lForm := TDASelectDataTablesForm.Create(nil); + try + for i := 0 to fDataTables.Count - 1 do begin + lForm.lb_DataTables.Items.AddObject(fDataTables[i], nil); + lForm.lb_DataTables.Checked[lForm.lb_DataTables.Items.Count-1] := not assigned((Designer.GetComponent(fDataTables[i]) as TDADataTable).RemoteDataAdapter); + end; + lForm.UpdateCheckBoxState(); + lForm.OkButtonCaption := '&Hook Up'; + result := (lForm.ShowModal() = idOk); + if result then begin + for i := 0 to lForm.lb_DataTables.Items.Count - 1 do + if lForm.lb_DataTables.Checked[i] then + (Designer.GetComponent(lForm.lb_DataTables.Items[i]) as TDADataTable).RemoteDataAdapter := TDARemoteDataAdapter(GetComponent); + end; + finally + FreeAndNil(lForm); + end; + end + else begin + result := false; + ShowMessage('No data tables were found on module.') + end; + finally + FreeAndNil(fDataTables); + end; +end; + +procedure TDARemoteDataAdapterEditor.ExecuteVerb(Index: Integer); +var + lAdapter: TDARemoteDataAdapter; +begin + lAdapter := TDARemoteDataAdapter(GetComponent); + case Index of + 0: lAdapter.SetupDefaultRequest(); + 1: lAdapter.SetupDefaultRequestV3(); + 2: exit{ Separator }; + 3: if not HookUpDataTables() then exit; + 4: if not TDataTableWizards.CreateDataTables(Designer, lAdapter, GetAdapterSchema(lAdapter), Point(0,0)) then exit; + end; + Designer.Modified(); +end; + +function TDARemoteDataAdapterEditor.GetVerb(Index: Integer): string; +begin + case Index of + 0 : result := '&Reset Calls to Default'; + 1 : result := 'Reset Calls to Default (Legacy v&3.0)'; + 2 : result := '-'; + 3 : result := '&Hook up Data Tables...'; + 4 : result := '&Create Data Tables...'; + end; +end; + +function TDARemoteDataAdapterEditor.GetVerbCount: Integer; +begin + result := 5; +end; + +{ TDADataTableEditor } + +procedure TDADataTableEditor.ExecuteVerb(Index: Integer); +var + dt: TDADataTable; + ds: TDADataset; + lTempSchema: TDASchema; + lTempSchemaDataSet: TDADataset; + s: string; + lSaved: TROExceptionEvent; +begin + dt := TDADataTable(GetComponent); + + case Index of + 0:begin + ShowCollectionEditor(Designer, dt, dt.Fields, 'Fields'); + end; + 1:{ Seperator }; + 2:begin + if not (MessageDlg('Do you want to retrieve the schema of '+dt.Name+'?'#13+ + 'This will overwrite the current field and parameter settings.', + mtWarning, [mbYes, mbNo], 0)=mrYes) then Exit; + + if dt.LogicalName = '' then + raise Exception.Create('LogicalName must be set.'); + + if assigned(dt.RemoteDataAdapter) then begin + (dt.RemoteDataAdapter as TDARemoteDataAdapter).CheckProperties(); + fRemoteService := (dt.RemoteDataAdapter as TDARemoteDataAdapter).RemoteService; + lSaved := fRemoteService.Channel.OnLoginNeeded; + fRemoteService.Channel.OnLoginNeeded := OnLoginNeeded; + (dt.RemoteDataAdapter as TDARemoteDataAdapter).FlushSchema; + try + dt.LoadSchema(true, true); + finally + fRemoteService.Channel.OnLoginNeeded := lSaved; + end; + end + else if assigned(dt.LocalSchema) and assigned(dt.LocalDataStreamer) then begin + ds := dt.LocalSchema.Datasets.DatasetByName(dt.LogicalName); + dt.Fields.AssignFieldCollection(ds.Fields); + dt.Params.AssignParamCollection(ds.Params); + end + else begin + MessageDlg('Either RemoteDataAdapter or LocalSchema/LocalDataStreamer must be assigned.', mtError, [mbOK], 0); + Exit; + end; + + s := 'Schema loaded successfully. '+IntToStr(dt.Fields.Count)+' fields'; + if (dt.Params.Count>0) then s := s+' and '+IntToStr(dt.Params.Count)+' params'; + s := s+' have been created. Original lookup- and client calculated fields have been preserved.'; + + MessageDlg(s, mtInformation, [mbOK], 0); + + Designer.Modified; + end; + {$IFDEF MSWINDOWS} + 3: if TDADataTableMasterLinkWizard.ExecuteWizard(dt, Designer) then + Designer.Modified(); + 4:{ Seperator }; + 5:begin + lTempSchema := TDASchema.Create(NIL); + try + lTempSchema.Name := MakeValidIdentifier(dt.LogicalName); + if lTempSchema.Name = '' then lTempSchema.Name := dt.Name; + + lTempSchemaDataSet := lTempSchema.Datasets.Add(); + lTempSchemaDataSet.Name := lTempSchema.Name; + lTempSchemaDataSet.Fields.AssignFieldCollection(dt.Fields); + + GenerateSchemaUnits(lTempSchema); + finally + lTempSchema.Free; + end; + end; + 6:{ Seperator }; + 7:begin + with TDAIdeData.Create(nil) do try + if dlg_OpenBriefcase.Execute then begin + dt.LoadFromFile(dlg_OpenBriefcase.Filename); + Designer.Modified(); + end; + finally + Free(); + end; + end; + 8:begin + if not dt.Active then + raise Exception.Create('DataTable is not active.'); + + with TDAIdeData.Create(nil) do try + if dlg_SaveBriefcase.Execute then begin + dt.SaveToFile(dlg_SaveBriefcase.Filename); + end; + finally + Free(); + end; + end; + 10:begin + if dt.LogicalName = '' then + raise Exception.Create('LogicalName must be set.'); + + if assigned(dt.RemoteDataAdapter) then begin + (dt.RemoteDataAdapter as TDARemoteDataAdapter).CheckProperties(); + fRemoteService := (dt.RemoteDataAdapter as TDARemoteDataAdapter).RemoteService; + lSaved := fRemoteService.Channel.OnLoginNeeded; + fRemoteService.Channel.OnLoginNeeded := OnLoginNeeded; + try + dt.Open(); + finally + fRemoteService.Channel.OnLoginNeeded := lSaved; + end; + end; + Designer.Modified; + end; + + {$ENDIF MSWINDOWS} + end; { case } +end; + +function TDADataTableEditor.GetVerb(Index: Integer): string; +begin + case Index of + 0 : result := 'Field Collection Editor'; + 1 : result := '-'; + //2 : result := 'Dynamic Method Binding Setup Wizard (Legacy v3.0)'; + //3 : result := '-'; + 2 : result := 'Retrieve DataTable Schema'; + 3 : result := 'Master/Detail Wizard'; + 4 : result := '-'; + 5 : result := 'Generate Business Class...'; + 6 : result := '-'; + 7 : result := 'Load Data from briefcase file...'; + 8 : result := 'Save Data to briefcase file...'; + 9 : result := '-'; + 10 : result := 'Get Design-Time Data'; + end; +end; + +function TDADataTableEditor.GetVerbCount: Integer; +begin + {$IFDEF MSWINDOWS} + result := 9; + if not TDADataTable(GetComponent).Active and (assigned(TDADataTable(GetComponent).RemoteDataAdapter)) then inc(result,2); + {$ENDIF MSWINDOWS} + {$IFDEF LINUX} + result := 3; + {$ENDIF LINUX} +end; + +{ TDABusinessProcessorCommandProperty } + +function TDABusinessProcessorCommandProperty.GetAttributes: TPropertyAttributes; +begin + result := [paValueList, paSortList] +end; + +procedure TDABusinessProcessorCommandProperty.GetValues(Proc: TGetStrProc); +var biz : TDABusinessProcessor; + i : integer; + list : IROStrings; +begin + biz := GetComponent(0) as TDABusinessProcessor; + if (biz.Schema=NIL) then Exit; + + list := NewROStrings; + for i := 0 to (biz.Schema.Commands.Count-1) do + list.Add(biz.Schema.Commands[i].Name); + + list.Sorted := TRUE; + + for i := 0 to (list.Count-1) do + Proc(list[i]); +end; + +type + TPersistentCracker = class(TPersistent); + +{ TDACollectionProperty } + +procedure TDACollectionProperty.Edit; +var coll : TCollection; +begin + coll := GetObjectProp(GetComponent(0), GetName) as TCollection; + + if (coll=NIL) then ShowMessage('no way!') + else showmessage(GetName+' has #'+INtToSTr(coll.count)+' '+TComponent(integer(coll.Owner)).ClassName); + + ShowCollectionEditor(Designer, TComponent(GetComponent(0)), coll, GetName); +end; + +function TDACollectionProperty.GetAttributes: TPropertyAttributes; +begin + result := [paDialog, paReadOnly]; +end; + +{ TDABusinessProcessorRefDatasetProperty } + +function TDABusinessProcessorRefDatasetProperty.GetAttributes: TPropertyAttributes; +begin + result := [paValueList, paSortList] +end; + +procedure TDABusinessProcessorRefDatasetProperty.GetValues( Proc: TGetStrProc); +var biz : TDABusinessProcessor; + i : integer; + list : IROStrings; +begin + biz := GetComponent(0) as TDABusinessProcessor; + if (biz.Schema=NIL) then Exit; + + list := NewROStrings; + for i := 0 to (biz.Schema.Datasets.Count-1) do + list.Add(biz.Schema.Datasets[i].Name); + + list.Sorted := TRUE; + + for i := 0 to (list.Count-1) do + Proc(list[i]); +end; + +{ TDADataTableLogicalNameEditor } + +function TDADataTableLogicalNameEditor.GetAttributes: TPropertyAttributes; +begin + result := [paValueList, paSortList] +end; + +function TDADataTableLogicalNameEditor.GetSchema: TDASchema; +begin + Result:=nil; + try + with TDADataTable(GetComponent(0)) do + if not RemoteFetchEnabled then + Result := LocalSchema + else if (RemoteDataAdapter <> nil) and (RemoteDataAdapter is TDARemoteDataAdapter) then + Result:= (RemoteDataAdapter as TDARemoteDataAdapter).Schema; + except + // hide exception, when RDA can't receive SCHEMA + end; +end; + +procedure TDADataTableLogicalNameEditor.GetValues(Proc: TGetStrProc); +var i : integer; + _Schema: TDASchema; +begin + _Schema:= GetSchema; + if _Schema <> nil then begin + for i := 0 to (_Schema.Datasets.Count-1) do + if _Schema.Datasets[i].IsPublic then Proc(_Schema.Datasets[i].Name); + for i := 0 to (_Schema.UnionDataTables.Count-1) do + if _Schema.UnionDataTables[i].IsPublic then Proc(_Schema.UnionDataTables[i].Name); + for i := 0 to (_Schema.JoinDataTables.Count-1) do + if _Schema.JoinDataTables[i].IsPublic then Proc(_Schema.JoinDataTables[i].Name); + end; +end; + +{ TDADataTableLocalConnection } + +function TDADataTableLocalConnection.GetAttributes: TPropertyAttributes; +begin + if (TDADataTable(GetComponent(0)).LocalSchema<>NIL) and (TDADataTable(GetComponent(0)).LocalSchema.ConnectionManager<>NIL) + then result := [paValueList] + else result := [] +end; + +procedure TDADataTableLocalConnection.GetValues(Proc: TGetStrProc); +var i : integer; +begin + with TDADataTable(GetComponent(0)) do begin + if (LocalSchema=NIL) or (LocalSchema.ConnectionManager=NIL) then Exit; + + for i := 0 to (LocalSchema.ConnectionManager.Connections.Count-1) do + Proc(LocalSchema.ConnectionManager.Connections[i].Name); + end; +end; + +{ TDADriverManagerDirectory } + +function TDADriverManagerDirectory.GetAttributes: TPropertyAttributes; +begin + result := [paValueList] +end; + +const SelectDirOption = '