Look up поле

7 отговора 0 прегледа
#1

Look up поле

Здравейте! Имам проблем с едно look up поле в грид. На onTitleClick на грида имам процедура която да сортира по полета, но по look up не става :( . Някой ако да знае начин :(

Отговор
в отговор на s1ckbOy #2

Re: Look up поле

Ами начинът си е същия, но явно имаш проблем в процедурата за сортиране. Дай кода да го видим.

Linux isn't free, it's worthless.


Отговор
в отговор на andrew_nikoloff #3

Re: Look up поле

if (PDataSet is TClientDataSet) and (PField.FieldKind = fkData) then
with TClientDataSet(PDataSet) do
try
DisableControls;
// Close;
IndexFieldNames := PField.FieldName;
// Open;
finally
EnableControls;
end;
Използвам компоненти за работа с dbexpress. Когато сложа проверка за полето дали е look up пищи с грешка за индекса

Отговор
в отговор на s1ckbOy #4

AddIndex

Lookup полетата не съществуват в базата (и в заявката ти). Естествено, по тях не съществуват и индекси, които да се ползват от ClientDataSet-а за сортирането. Опитай в началото да създадеш ръчно такъв индекс:

ClientDataSet.AddIndex('NameOfIndex', 'LookupFieldName', []);

и след това вече ще трябва да можеш да сортираш:

ClientDataSet.IndexName := 'NameOfIndex';


Linux isn't free, it's worthless.


Отговор
в отговор на andrew_nikoloff #5

Re: AddIndex

"В началото" ..имаш предвид kогато отварям ClientDataSet-a?

Отговор
в отговор на s1ckbOy #6

Re: AddIndex

Например
Тези индекси, които добавяш ръчно не се запазват при затварянето на ClientDataSet-а.

Linux isn't free, it's worthless.


Отговор
в отговор на andrew_nikoloff #7

Re: AddIndex

изписва ми че неможе да намери полето "cdsKarti:.. field 'IME_KARTA' not found след като мине през AddIndex. Сложих го на AfterOpen на cds-a

Отговор
в отговор на s1ckbOy #8

Не може

Ами значи най-вероятно не може. Поне за calculated fields знам че не може. Те трябва да се направят InternalCalc за да стане. Ти защо ползваш lookup поле в ClientDataSet-а? Не можеш ли да го оставиш стринг и да е lookup само в провайдъра ти или най-добре да си го извлечеш още в заявката?

Linux isn't free, it's worthless.


Отговор