![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Заполнить поля [D6, Win2k]
Рукма © (2005-05-11 17:27:00)Как вызвать программно заполнение полей у датасета, что-то есть подобное у Fields? Т.е. есть запрос и мне надо что-бы добавились все экземпляры полей, но без открытия запроса.
Рукма (2005-05-17 12:24:00) [1]
> ЗАЧЕМ ???
мне нужны филды не в пустой квери, а в клиентдатасете.
msguns (2005-05-17 12:20:00) [2]>Рукма (17.05.05 12:15) [18]
>проходил потом оп пустому датасету и криетил по образу и подобию поля и привязывал их к нужному мне датасету.
ЗАЧЕМ ???
Рукма (2005-05-17 12:15:00) [3]
> При открытии датасета TDataSet.Fields заполняется автоматически
а... та делал и так. проходил потом оп пустому датасету и криетил по образу и подобию поля и привязывал их к нужному мне датасету.
msguns (2005-05-17 12:11:00) [4]>Рукма (17.05.05 12:06) [15]
>Какая?
?
При открытии датасета TDataSet.Fields заполняется автоматически.
Рукма (2005-05-17 12:09:00) [5]
> но начинаются проблемы с BCD полями
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1116151121&n=1&web=1
Рукма (2005-05-17 12:06:00) [6]
> кстати, неплохо бы узнать о какой именно речь
MS SQL
> SELECT * FROM TABLE WHERE ID=-1
делал
но начинаются проблемы с BCD полями
> воспользоваться рантаймовской фичей класса TDataSet, автоматически
> "собирающей" коллекцию филдов
Какая?
msguns (2005-05-17 12:02:00) [7]Можно вопрос ?
Если нужна просто инфа о структуре таблицы (например, для создания клиентского DS), то большинство БД (кстати, неплохо бы узнать о какой именно речь) дают возможность вычитать список полей без открытия НД, а если не дают, то годится запрос типа SELECT * FROM TABLE WHERE ID=-1
Если же "неизвестный" НД надо отображать (либо непосредственно либо через CDS), то почему все же нельзя открыть запрос и воспользоваться рантаймовской фичей класса TDataSet, автоматически "собирающей" коллекцию филдов
Что именно надо-то ?
Рукма (2005-05-17 11:50:00) [8]
> А ты попробуй открыть DataSet, скопировать FieldDefs во
> временную, закрыть DataSet, скопировать из временной и добавить
> Lookup-поля.
Я это делаю для TClienDataSet. Все заполняю и FieldDefs и криейтю Lookup-поля. Как только делаю CreateDataSet - выскакивают ошибки, что ключевые поля у лукап полей отсутсвуют у TClienDataSet. Кто борол?
evvcom (2005-05-12 13:34:00) [9]А еще можешь так:
TMyDataSet = class(<какой-то DataSet>)
private
FOnCreateFields: TDataSetNotifyEvent;
protected
procedure CreateFields; override;
published
property OnCreateFields: TDataSetNotifyEvent read FOnCreateFields write FOnCreateFields;
end;
implementation
procedure TMyDataSet.CreateFields;
begin
inherited;
if Assigned(FOnCreateFields) then
FOnCreateFields(Self);
end;
Вешаешь на OnCreateFields свой обработчик и в нем добавляешь Lookup и Calc-поля. Проверено.
evvcom (2005-05-12 13:28:00) [10]А ты попробуй открыть DataSet, скопировать FieldDefs во временную, закрыть DataSet, скопировать из временной и добавить Lookup-поля.
А если требуется типа [9], я такие вещи определяю в массиве констант и в цикле потом присваиваю.
Рукма (2005-05-12 13:15:00) [11]Так и делаю, но блин парит ужас, если полей по 20 шт :(
AlexO (2005-05-12 12:11:00) [12]До открытия датасета тебе придется создавать поля вручную типа:
with Table1.FieldDefs do begin
Clear;
with AddFieldDef do begin
Name := 'Field1';
DataType := ftInteger;
Required := True;
end;
with AddFieldDef do begin
Name := 'Field2';
DataType := ftString;
Size := 30;
end;
end;
нельзя (2005-05-12 11:48:00) [13]%(
Виталий Панасенко (2005-05-12 11:43:00) [14]А смысл всех этих действий ? Зачем так делать ? На этапе проектирования - нельзя ?
Рукма (2005-05-12 11:05:00) [15]
> Открой запрос, будут только поля fkData.. затем создавай
> lookup
он не дает добавлять лукап когда активен. как только я его отключаю, он поля пропадают.
Виталий Панасенко (2005-05-12 09:34:00) [16]Не путай design-time vs run-time... В первом случае дизайнер добавляет экземпляр в код... В run-time - создается динамически.. Открой запрос, будут только поля fkData.. затем создавай lookup
Рукма (2005-05-11 18:14:00) [17]Я так понимаю делает запрос к системным таблицам. А можно его руцями заставить скриеттить эти экземпляры, т.е. проблема в том что если закрыть запрос то поля пропадают, а мне нужны они для добавления лукапполей
Виталий Панасенко (2005-05-11 17:51:00) [18]Перед этим в церковь ходит... Открывает, конечно...
Рукма (2005-05-11 17:34:00) [19]А как тогда работает дабл клик по датасету и правой кнопкой добавить все поля?
stone (2005-05-11 17:33:00) [20]Пока запрос не открыт список полей останется неизвестен.