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

Вниз

Заполнить поля   Найти похожие ветки 

 
Рукма   (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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.035 c
3-1115803308
Lex_!
2005-05-11 13:21
2005.06.29
отображение Hint у DBGrid


14-1117709495
Nicolaev Oleg
2005-06-02 14:51
2005.06.29
Сайт запущен :)


4-1115162748
uhhax
2005-05-04 03:25
2005.06.29
Удалить определенную запись в TreeView спомощью TVM_DELETEITEM


3-1116401091
_e_u_
2005-05-18 11:24
2005.06.29
обнуление автоинкремента в МССУКЭЛЬ


1-1118321930
arant
2005-06-09 16:58
2005.06.29
ClientDataSet с вложенным набором данных