Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];

Вниз

Как создавать lookup поля в run-time?   Найти похожие ветки 

 
Вован   (2003-07-05 17:50) [0]

Сабж


 
kaif   (2003-07-05 22:52) [1]

Так же, как и обычные поля, например:

var
F: TStringField;
begin
F := TStringField.Create(Form1);
F.FieldKind := fkLookup;
F.DataSet := Query1; //в общем то, к чему прикручиваешь
{далее указываешь датасеты, поля и индексы}
F.LookupDataSet :=
F.LookupKeyFields := ...
и т.д.
end;


 
Вован   (2003-07-06 18:59) [2]

А как его потом вставить в грид?


 
koks   (2003-07-07 13:07) [3]

ой не благодарное это дело я как то маялся с подобным потом забросил. Лучше создать все возможные lookup - поля в дизайн-тайме а потом управлять их видимостью. (например через свойство колонок Visible). Ну на худой конец - создать (опять же в дизайне) Calculated - поле и в нем (через тот же look-up) вычислять значения... (будут тормоза !!).


 
Вован   (2003-07-07 14:18) [4]

Неужеле все так плохо?


 
ЮЮ   (2003-07-07 14:30) [5]

>А как его потом вставить в грид?

При таких вопросах лучше делать все в Disign-е :-)


 
Вован   (2003-07-07 15:10) [6]

>>При таких вопросах лучше делать все в Disign-е :-)

Ну не работал я раньше с базами

А вот то что, нигде нет примера как подключить к dataset lookup поле в runtime, это факт.

Я делаю вот-так


F:=TStringField.Create(Table);
F.FieldKind:=fkLookup;
F.Lookup:=true;
F.LookupKeyFields:="ID";
F.LookupResultField:="NAME";
F.KeyFields:="IDCOMP";
F.FieldName:="COMP";
F.LookupDataSet:=TableComp;
F.DataSet:=Table;

Table.FieldDefs.Add(F.FieldName,ftString,0,false);

Table.Open; // Вот сдесь пишет что, поле "IDCOMP" не найденно


Table.Open проходил пошагово, вплоть до InternalOpen и BindFields
и обнаружил что, первым делом сториться именно поле которое я добаил динамически а в это время информации о других полях еще нет а в лукап поле указан KeyFields:="IDCOMP" в bindfields вызывается проверка на valid поля и в этой проверке выскакует исключение что, поле "IDCOMP" не найден





 
koks   (2003-07-07 16:52) [7]

Ничего не плохо. Просто есть два способа -

либо объекты полей СТАТИЧЕСКИЕ и создаются в дизайн-тайме(и вот тогда можно создавать лукапы и проч.)
либо объекты полей динамические. Они создаются автоматически при открытии набора, для которого в дизайне не прописаны объекты полей. (лукапы создавать нельзя)
Эти два способа имеют свои достоинства и недостатки, но они взаимоисключающи.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
9-100526
Кен
2003-01-30 07:03
2003.07.31
GlScene Как подгрузить текстуры для файла 3ds в TActor ?


8-100834
diablo
2003-03-31 20:03
2003.07.31
Рисование в корале


3-100640
Spawn
2003-07-10 08:29
2003.07.31
Сохранение НД


3-100576
Lika
2003-07-08 15:09
2003.07.31
---|Ветка была без названия|---


4-101045
Charger
2003-05-27 05:07
2003.07.31
Дочернии обхекты





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский