Форум: "Базы";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
ВнизЗаполнить поля Найти похожие ветки
← →
Рукма (2005-05-11 17:27) [0]Как вызвать программно заполнение полей у датасета, что-то есть подобное у Fields? Т.е. есть запрос и мне надо что-бы добавились все экземпляры полей, но без открытия запроса.
← →
stone © (2005-05-11 17:33) [1]Пока запрос не открыт список полей останется неизвестен.
← →
Рукма (2005-05-11 17:34) [2]А как тогда работает дабл клик по датасету и правой кнопкой добавить все поля?
← →
Виталий Панасенко (2005-05-11 17:51) [3]Перед этим в церковь ходит... Открывает, конечно...
← →
Рукма (2005-05-11 18:14) [4]Я так понимаю делает запрос к системным таблицам. А можно его руцями заставить скриеттить эти экземпляры, т.е. проблема в том что если закрыть запрос то поля пропадают, а мне нужны они для добавления лукапполей
← →
Виталий Панасенко (2005-05-12 09:34) [5]Не путай design-time vs run-time... В первом случае дизайнер добавляет экземпляр в код... В run-time - создается динамически.. Открой запрос, будут только поля fkData.. затем создавай lookup
← →
Рукма (2005-05-12 11:05) [6]
> Открой запрос, будут только поля fkData.. затем создавай
> lookup
он не дает добавлять лукап когда активен. как только я его отключаю, он поля пропадают.
← →
Виталий Панасенко (2005-05-12 11:43) [7]А смысл всех этих действий ? Зачем так делать ? На этапе проектирования - нельзя ?
← →
нельзя (2005-05-12 11:48) [8]%(
← →
AlexO © (2005-05-12 12:11) [9]До открытия датасета тебе придется создавать поля вручную типа:
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 13:15) [10]Так и делаю, но блин парит ужас, если полей по 20 шт :(
← →
evvcom © (2005-05-12 13:28) [11]А ты попробуй открыть DataSet, скопировать FieldDefs во временную, закрыть DataSet, скопировать из временной и добавить Lookup-поля.
А если требуется типа [9], я такие вещи определяю в массиве констант и в цикле потом присваиваю.
← →
evvcom © (2005-05-12 13:34) [12]А еще можешь так:
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-поля. Проверено.
← →
Рукма (2005-05-17 11:50) [13]
> А ты попробуй открыть DataSet, скопировать FieldDefs во
> временную, закрыть DataSet, скопировать из временной и добавить
> Lookup-поля.
Я это делаю для TClienDataSet. Все заполняю и FieldDefs и криейтю Lookup-поля. Как только делаю CreateDataSet - выскакивают ошибки, что ключевые поля у лукап полей отсутсвуют у TClienDataSet. Кто борол?
← →
msguns © (2005-05-17 12:02) [14]Можно вопрос ?
Если нужна просто инфа о структуре таблицы (например, для создания клиентского DS), то большинство БД (кстати, неплохо бы узнать о какой именно речь) дают возможность вычитать список полей без открытия НД, а если не дают, то годится запрос типа SELECT * FROM TABLE WHERE ID=-1
Если же "неизвестный" НД надо отображать (либо непосредственно либо через CDS), то почему все же нельзя открыть запрос и воспользоваться рантаймовской фичей класса TDataSet, автоматически "собирающей" коллекцию филдов
Что именно надо-то ?
← →
Рукма (2005-05-17 12:06) [15]
> кстати, неплохо бы узнать о какой именно речь
MS SQL
> SELECT * FROM TABLE WHERE ID=-1
делал
но начинаются проблемы с BCD полями
> воспользоваться рантаймовской фичей класса TDataSet, автоматически
> "собирающей" коллекцию филдов
Какая?
← →
Рукма (2005-05-17 12:09) [16]
> но начинаются проблемы с BCD полями
http://delphimaster.net/view/3-1116151121/&web=1
← →
msguns © (2005-05-17 12:11) [17]>Рукма (17.05.05 12:06) [15]
>Какая?
?
При открытии датасета TDataSet.Fields заполняется автоматически.
← →
Рукма (2005-05-17 12:15) [18]
> При открытии датасета TDataSet.Fields заполняется автоматически
а... та делал и так. проходил потом оп пустому датасету и криетил по образу и подобию поля и привязывал их к нужному мне датасету.
← →
msguns © (2005-05-17 12:20) [19]>Рукма (17.05.05 12:15) [18]
>проходил потом оп пустому датасету и криетил по образу и подобию поля и привязывал их к нужному мне датасету.
ЗАЧЕМ ???
← →
Рукма (2005-05-17 12:24) [20]
> ЗАЧЕМ ???
мне нужны филды не в пустой квери, а в клиентдатасете.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.041 c