![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как динамически добавить поле типа Lookup в TClientDataSet? [D5]
serg128 © (2004-06-08 12:57:00)Т.е. я делаю следующее:
TStringField *fld = new TStringField(Owner);
fld->FieldKind = fkLookup;
fld->Size = 200;
fld->FieldName = "ANALIT";
fld->KeyFields = "ID";
fld->LookupDataSet = ld;
fld->LookupKeyFields = "SIID";
fld->LookupResultField = "ANAL";
fld->Name = "ldsAnalit";
fld->DisplayWidth = 200;
fld->DataSet = lds;
lds = new TLocalDataSet(NULL, frmMain->Connection, sSQL, 20);
lds->Fields->Add(fld);
lds->FieldDefs->Update();
lds->Open();
Потом, при проходе по DBGrid вылетает сообщение типа "Field ANALIT has no DataSet"? Помогите плиз, что я неправильно сделал?
Шаман (2004-06-08 14:26:00) [1]Самое странное также :)
serg128 (2004-06-08 13:57:00) [2]> fld->KeyFields = "ID";
Когда я открываю lds, он пишет, что поле ID не найдено, мне нужно наверно его как-то добавить, но как?
Clickmaker (2004-06-08 13:35:00) [3]
> fld->DataSet = lds;
>
> lds = new TLocalDataSet(NULL, frmMain->Connection, sSQL,
> 20);
Поменяй местами эти строки
И вот это
lds->Fields->Add(fld);
lds->FieldDefs->Update();
здесь не нужно, достаточно
fld->DataSet = lds;