MIDAS ClientDataSet поле ProviderName выпадающий список Пусто

Judo
Дата: 03.05.2011 15:27:18
Delphi 7. Создал Сервер - Приложение с компонентами TDataSetProvider TADODataSet

unit UnitGlav;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, Grids, DBGrids, StdCtrls, Provider;

type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    Button1: TButton;
    DataSetProvider1: TDataSetProvider;
    ADODataSet1: TADODataSet;
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses RDM, UnitDataModule;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  ADODataSet1.Active:=false;
  ADODataSet1.Active:=true;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  if not ConnectDB then begin showMessage('Connected FaiLed !'); exit; end;
end;

end.

Создаю клиента для MIDAS:

unit UnitGlav;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBClient, MConnect, Grids, DBGrids, StdCtrls;

type
  TForm1 = class(TForm)
    DCOMConnection1: TDCOMConnection;
    ClientDataSet1: TClientDataSet;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    ClientDataSet2: TClientDataSet;
    DataSource2: TDataSource;
    DBGrid2: TDBGrid;
    ButtonConnect: TButton;
    ButtonShowModifications: TButton;
    procedure ButtonConnectClick(Sender: TObject);
    procedure ButtonShowModificationsClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ButtonConnectClick(Sender: TObject);
begin
  DCOMConnection1.Connected:=true;
  ClientDataSet1.Active:=true;
  ClientDataSet2.Active:=true;
end;

procedure TForm1.ButtonShowModificationsClick(Sender: TObject);
begin
  ClientDataSet2.Data:=ClientDataSet1.Delta;
end;

end.

У компонента ClientDataSet1 в поле RemoteServer жму кнопку выпадающего списка и там есть DCOMConnection1.
Выбираю.
В поле ProividerName жму кнопку выпадающего списка и там Пусто. Пытаюсь ручками указать "ADODataSet1"
Но при запуске отрабатывает
ClientDataSet1.Active:=true;
и возникает ошибка
Provider not supported: ADODataSet1

Что делать?
Judo
Дата: 03.05.2011 15:39:55
Попытался у компонента ClientDataSet1 в поле RemoteServer указать DataSetProvider1. Получил ошибку:
class OleException ... Provider Not exported:  DataSetProvider1

И как же его надо Export'нуть ?
Judo
Дата: 03.05.2011 15:44:27
Поле Exported у DataSetProvider1 стоит взначение True в ObjectInspector.

Почему же в ClientDataSet1 в поле ProividerName выпадающего списка Пусто ?
Почему "Provider Not exported: DataSetProvider1" ?
Judo
Дата: 03.05.2011 16:15:14
Помогите построить трех-уровневое приложение
lena_ki
Дата: 03.05.2011 16:45:09
> Создал Сервер - Приложение с компонентами TDataSetProvider TADODataSet

Сервер: RemoteDataModule+TDataSetProvider+TADODataSet. После создания сервера его однократный запуск с параметром /regserver
Теперь сервер готов для клиента.
Judo
Дата: 03.05.2011 16:57:32
lena_ki
> Создал Сервер - Приложение с компонентами TDataSetProvider TADODataSet

Сервер: RemoteDataModule+TDataSetProvider+TADODataSet. После создания сервера его однократный запуск с параметром /regserver
Теперь сервер готов для клиента.


Делал - не помогло
Judo
Дата: 03.05.2011 17:01:53
Проблема решилась. Причина заключалась в следующем

TADOConnection - лежал в юните DataModule
TDataSetProvider, TADODataSet - лежали на главной форме приложения (UnitGlav;)


После того как поместил все(TDataSetProvider, TADODataSet, TADOConnection) в RDM (на форму TTestRDM = class), заработало:

unit RDM;

{$WARN SYMBOL_PLATFORM OFF}

interface

uses
  Windows, Messages, SysUtils, Classes, ComServ, ComObj, VCLCom, DataBkr,
  DBClient, PrjTestRDM_TLB, StdVcl, DB, ADODB, Provider;

type
  TTestRDM = class(TRemoteDataModule, ITestRDM)
    MyDataSetProvider: TDataSetProvider;
    ADODataSet1: TADODataSet;
    con: TADOConnection;
  private
    { Private declarations }
  protected
    class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override;
  public
    { Public declarations }
  end;
Judo
Дата: 03.05.2011 17:03:59
До этого пробовал все: regserver, переименовывать DCOMConnection1 -> MyDataSetProvider, перегружать комп.
В итоге помогло только помещение компонент на одну форму
lena_ki
Дата: 03.05.2011 17:14:16
>Проблема решилась. Причина заключалась в следующем

Причина заключалась в том, что вы сделали то, что вам написали:
RemoteDataModule+компоненты связи с БД Естественно TADOConnection должен быть в RemoteDataModule.
Judo
Дата: 03.05.2011 17:18:09
ОК. Спасибо