unit DataSnapServerData2; interface uses {vcl:} SysUtils, Classes, DB, DBClient, {RemObjects:} uRODataSnapModule, Provider, ADODB, DataSnapServerInterfaces; type TTDataSnapServerDataForm2 = class(TRODataSnapModule,IAppServer2) qry_categories: TADOQuery; con_SqlServer: TADOConnection; prv_categories: TDataSetProvider; qry_categoriesCategoryID: TAutoIncField; qry_categoriesCategoryName: TWideStringField; qry_categoriesDescription: TMemoField; qry_categoriesPicture: TBlobField; private { Private declarations } public { Public declarations } end; var TDataSnapServerDataForm2: TTDataSnapServerDataForm2; implementation uses {RemObjects:} uROServer, uRODataSnap_Invk; {$R *.DFM} procedure Create_DataSnapModule(out oInstance:IUnknown); begin oInstance := TTDataSnapServerDataForm2.Create(nil); end; initialization { To adjust scalability of the DataSnapModule and avoid recreation of instances for each roundtrip, you might want to choose a different ClassFactory type. Make sure to check the following url for more information: http://www.remobjects.com?ro16 } //TROPooledClassFactory.Create('IAppServer', Create_DataSnapModule, TAppServer_Invoker, 25); TROClassFactory.Create('IAppServer2', Create_DataSnapModule, TAppServer_Invoker); end.