Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.24;
Скачать: CL | DM;

Вниз

dbExpress. Создание редактируемого набора данных в runtime   Найти похожие ветки 

 
Alex Bakulin   (2006-07-24 13:36) [0]

Мне нужно в runtime создать связку
SQLConnection - SQLTable - Provider - ClientDataSet - DataSource

Когда делаю ее в designtime - все в порядке и работает. Когда создаю эту же связку в runtime, то при активизации ClientDataSet появляется ошибка Missing Data Provider or data packet.
Связка с провайдером идет по имени. Имя для созданного в runtime провайдера генерю при помощи GUID (убираю все лишнее и начинаю с буквы). Может быть затык в этом? Тогда как победить?


 
Johnmen ©   (2006-07-24 13:49) [1]

Как ты делаешь в рантайм мы не видим.


 
Alex Bakulin   (2006-07-24 13:54) [2]

FSQLTable: TSQLTable;
   FDS: TDataSource;
   ClientDS: TClientDataSet;
   DSProvider: TDataSetProvider;
   s: string

...

 FSQLTable := TSQLTable.Create(nil);
 FSQLTable.SQLConnection := (Collection as TSQLTableCollection).Connection; //соединение есть и активно
 FDS := TDataSource.Create(nil);
 ClientDS := TClientDataSet.Create(nil);
 DSProvider := TDataSetProvider.Create(nil);
 DSProvider.DataSet := FSQLTable;
 s := GetGUID; //возвращает GUID без "лишних" элементов
 while (s[1] in ["0".."9"]) do
   s := copy(s, 2, Length(s)-1);
 DSProvider.Name := s;
 FDS.DataSet := ClientDS;
 ClientDS.ProviderName := DSProvider.Name;

..

 FSQLTable.Active := Value; //тут все нормально данные есть и т.д.
 ClientDS.Active := Value; // а вот тут ошибка...


 
Reindeer Moss Eater ©   (2006-07-24 13:56) [3]

DSProvider.Name := s;
ShowMessage(DSProvider.Name);


 
Johnmen ©   (2006-07-24 13:58) [4]

ClientDS.ProviderName := DSProvider;


 
Alex Bakulin   (2006-07-24 13:58) [5]

Ctrl+F7 (DSProvider.Name)
"F14A4B8781D9D000F6AE85CF" или аналогично


 
Alex Bakulin   (2006-07-24 13:59) [6]


> ClientDS.ProviderName := DSProvider;

Даже не компилится. Это string


 
Johnmen ©   (2006-07-24 14:02) [7]


> Даже не компилится. Это string


В апострофы...


 
Reindeer Moss Eater ©   (2006-07-24 14:02) [8]

if the provider is in the same application as the client dataset, it must have the same Owner as the client dataset. To use a local provider that has a different Owner, use the SetProvider method instead.


 
Alex Bakulin   (2006-07-24 14:04) [9]


> To use a local provider that has a different Owner, use
> the SetProvider method instead.

Спасибо, заработало!



Страницы: 1 вся ветка

Текущий архив: 2006.09.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.031 c
3-1152879525
MsGuns
2006-07-14 16:18
2006.09.24
Загрузка объемных данных в рамках одной транзакции


3-1153895544
Андрей Пл
2006-07-26 10:32
2006.09.24
TClientDataSet максимальное количество полей


15-1156932901
AntiKur
2006-08-30 14:15
2006.09.24
Курение вредно для здаровья


15-1157207050
Zeqfreed
2006-09-02 18:24
2006.09.24
Проблема с жестким диском


15-1157356316
ANB
2006-09-04 11:51
2006.09.24
Понедельничная задачка (Оракл)