Вниз
Скачать: CL | DM;

Как создавать 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
14-100969
VEG
2003-07-15 18:19
2003.07.31
Проблема с STL. Можно ли не вводить лишнюю пременную???


3-100645
Spawn
2003-07-10 17:37
2003.07.31
IB


8-100837
AlexT1000
2003-04-08 18:01
2003.07.31
Вывод метафайла с учетом матрицы трансформирования


4-101044
Bardak
2003-05-26 19:08
2003.07.31
SendMessage и WM_HOTKEY


14-100889
Soft
2003-07-16 11:29
2003.07.31
Скажи мне какой товар ты предпочитаешь и я скажу кто ты.




   Наверх