Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-1117797070
Mishenka
2005-06-03 15:11
2005.06.29
Как посчитать контрольную сумму файла?


1-1117614507
SergeiX
2005-06-01 12:28
2005.06.29
использование TListBox и TEdit


6-1112317394
inew
2005-04-01 05:03
2005.06.29
Работа с Pop3Server в Indy10


6-1111940008
Евгений2
2005-03-27 20:13
2005.06.29
Как можно получить доступ к DOM не используя TWebBrowser


9-1111320863
Toxic
2005-03-20 15:14
2005.06.29
Анализ поверхности





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский