Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Заполнить поля [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]

Пока запрос не открыт список полей останется неизвестен.


Наверх

Титульная страница Поиск, карта сайта Написать письмо