![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
dbExpress. Создание редактируемого набора данных в runtime [D7, MSSQL]
Alex Bakulin © (2006-07-24 13:36:00)Мне нужно в runtime создать связку
SQLConnection - SQLTable - Provider - ClientDataSet - DataSource
Когда делаю ее в designtime - все в порядке и работает. Когда создаю эту же связку в runtime, то при активизации ClientDataSet появляется ошибка Missing Data Provider or data packet.
Связка с провайдером идет по имени. Имя для созданного в runtime провайдера генерю при помощи GUID (убираю все лишнее и начинаю с буквы). Может быть затык в этом? Тогда как победить?
Alex Bakulin (2006-07-24 14:04:00) [1]
> To use a local provider that has a different Owner, use
> the SetProvider method instead.
Спасибо, заработало!
Johnmen (2006-07-24 14:02:00) [2]
> Даже не компилится. Это string
В апострофы...
Reindeer Moss Eater (2006-07-24 14:02:00) [3]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 SetProvidermethod instead.
Alex Bakulin (2006-07-24 13:59:00) [4]
> ClientDS.ProviderName := DSProvider;
Даже не компилится. Это string
Johnmen (2006-07-24 13:58:00) [5]ClientDS.ProviderName := DSProvider;
Alex Bakulin (2006-07-24 13:58:00) [6]Ctrl+F7 (DSProvider.Name)
'F14A4B8781D9D000F6AE85CF' или аналогично
Reindeer Moss Eater (2006-07-24 13:56:00) [7]DSProvider.Name := s;
ShowMessage(DSProvider.Name);
Alex Bakulin (2006-07-24 13:54:00) [8]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; // а вот тут ошибка...
Johnmen (2006-07-24 13:49:00) [9]Как ты делаешь в рантайм мы не видим.