             +-------------------< ssReader >-------------------+
             |                                                  |
             |                 |
             |                       |
             |                                                  |
             |(     <SBSS>)|
             |                                                  |
             |--------------------------------------------------|
             |                    ssReader.dll                  |
             +--------------------------------------------------+

         
       .
      <SBSS>,  
   .

      ssReader.dll,    
       .
        
  ssServer.exe (  <SBSS>).

            
         
         .

   ,   
  --     ;
  --    SQL-      ;
  --    ;
  --     ;
  --     (TDataSet)    
      .

--------------------------------------------------------------------------------

        
                               ssReader.dll

--------------------------------------------------------------------------------

ssReader.dll   :

  --  <ssReader>
       ssReader_Init
  
  --  ,  <ssReader>
       ssReader_Done

  --        
       ssReader_OpenConnection
       ssReader_CloseConnection

  --  
       ssReader_GetDataADODataSet
       ssReader_GetDataClientDataSet

  --       
       ssReader_ClearTunes
       ssReader_GetTunes
       ssReader_SetTunes
       ssReader_ReadTunes
       ssReader_WriteTunes
       ssReader_DialogTunes

  --  
       ssReader_GetVersion
       ssReader_SetLanguage
       ssReader_InterceptCheck

  ssReaderIntf.pas    :
  -- ssReader_LoadADODataSet
  -- ssReader_LoadClentDataSet

--------------------------------------------------------------------------------

      ,  
ssReaderIntf.pas.         .

procedure ssReader_Init(AAddLogMethod: TAddLogMethod); StdCall;
//       ssServer.exe
//
procedure ssReader_Done; StdCall;
//       ssServer.exe
//
procedure ssReader_ClearTunes; StdCall;
//  
//
procedure ssReader_GetTunes(var AData: TSSAgentDataTunes); StdCall;
//   
//
procedure ssReader_SetTunes(const AData: TSSAgentDataTunes); StdCall;
//  
//
procedure ssReader_ReadTunes; StdCall;
//     ssReader.opt
//   ,  
//
procedure ssReader_WriteTunes; StdCall;
//     ssReader.opt
//   ,  
//
procedure ssReader_DialogTunes(const ACaption: string; ADoRasHangup: Boolean); StdCall;
//     .
//    ssServer.exe.
//   .
//   OK,     ssReader.opt.
//   ,  .
//      ADoRasHangup=True,   .
//
function ssReader_OpenConnection(const AGroupName: string): string; StdCall;
//    ssServer.
//         AGroupName.
//  SQL-   "SSDATAREADER"  .
//  OK,       .
//   OK,    .
//     SSDATAREADER        .
//
procedure ssReader_CloseConnection(ADoRasHangup: Boolean); StdCall;
//     .
//    SSServer.
//      ADoRasHangup=True,   .
//
function ssReader_GetVersion: Double; StdCall;
//    <ssReader>.
//
function ssReader_InterceptCheck: Boolean; StdCall;
//      mssdiz.dll.
//  ,    C:\SS\mssdiz.dll  .
//
function ssReader_GetDataADODataSet(const ACommandText: WideString;
  AFormat: Integer;
  var AData: OleVariant): Boolean; StdCall;
//   ACommandText
//     AData
//    AFormat = 0 AData    ADO Stream
//    AFormat = 1 AData   ADO XML
//     ssReader_LoadADODataSet.
//
function ssReader_GetDataClientDataSet(const ACommandText: WideString;
  AFormat: Integer;
  var AData: OleVariant): Boolean; StdCall;
//   ACommandText
//     AData
//    AFormat = 0 AData    ClientDataSet
//    AFormat = 1 AData   ClientDataSet XML
//     ssReader_LoadClentDataSet.
//
{$IFDEF USEADODATASET}
function ssReader_LoadADODataSet(ADataSet: TCustomADODataSet;
  const ACommandText: WideString;
  AFormat: Integer): Boolean;
//  brief-case ("") ADataSet
//    AFormat = 0   
//    AFormat = 1   XML
{$ENDIF}
//
{$IFDEF USECLIENTDATASET}
function ssReader_LoadClentDataSet(ADataSet: TClientDataSet;
  const ACommandText: WideString;
  AFormat: Integer): Boolean;
//  brief-case ("") ADataSet
//    AFormat = 0   
//    AFormat = 1   XML
{$ENDIF}

--------------------------------------------------------------------------------

   <ssReader>     ssReaderDemo,
     .

 ssReaderDemo   ssReader.dll  .

--------------------------------------------------------------------------------

       
 .      .

--------------------------------------------------------------------------------

{$DEFINE USEADODATASET}    // ,    :
{$DEFINE USECLIENTDATASET} //   USEADODATASET / USECLIENTDATASET

const
  AppGroupName: string = 'MyAppGroupName';

var
  DoRasHangup: Boolean = False; //    

{$IFDEF USEADODATASET}
  {$IFDEF USECLIENTDATASET}
    You must undefine USECLIENTDATASET
  {$ENDIF}
  MyQuery: ADODB.TCustomADODataSet = nil; //  ADODataSet
{$ENDIF}
{$IFDEF USECLIENTDATASET}
  {$IFDEF USEADODATASET}
    You must undefine USEADODATASET
  {$ENDIF}
  MyQuery: DBCLIENT.TClientDataSet = nil; //  ClientDataSet
{$ENDIF}

function DoMyRemoteQuery(AMyQueryOwner: TComponent; const ASqlText: WideString): Boolean;
begin
  Result := False;
  if ssReader_OpenConnection(AppGroupName) = '' then
  begin
    ShowMessage('    ssServer');
    Exit;
  end;
  try
  {$IFDEF USEADODATASET}
    ssReader_LoadADODataSet(
      MyQuery,  // ADataSet: TCustomADODataSet;
      ASqlText, // const ACommandText: WideString;
      0);       // AFormat: Integer;
  {$ENDIF}
  {$IFDEF USECLIENTDATASET}
    ssReader_LoadClentDataSet(
      MyQuery,  // ADataSet: TCustomADODataSet;
      ASqlText, // const ACommandText: WideString;
      0);       // AFormat: Integer;
  {$ENDIF}
  finally
    ssReader_CloseConnection(DoRasHangup);
  end;
end;

 DoMyRemoteQuery:
----------------------
begin
  ...
  SomeSqlText := 'select * from MyTable';
  ...
  if DoMyRemoteQuery(Application, SomeSqlText) then
  begin
       ""   MyQuery.
            .
    ...
    MyQuery.Close;
  end;
  ...
end;

...

initialization
  ssReader_Init(nil); //      ssReader
finalization
  ssReader_Done; //  
end.
--------------------------------------------------------------------------------

  <ssReader> ,     ssDbCon.lst
(   )  ,   "ssDataReader".

          
      .

   MSSQL,   "ssDataReader"    
"db_datareader".

     .  sbss_BOL.chm.

--------------------------------------------------------------------------------

