Отображает выборку в lookup-форме, возвращает результат в виде набора записей ILookupData, кот. Имеет следующие свойства и функции: LookupResult = lrOk или lrCancel. RecCount – количество записей, выбранных пользователем (если LookupResult= lrCancel, то 0) Data(AttrNo,RecNo : integer) – возвращает значение поля с номером AttrNo из выбранной записи с номером RecNo. Записи нумеруются от 1, поля от 0.
function DoLookup(
LookupControlClass: String;
EntityName: String;
LocateFieldNames: Array;
LocateFieldValues : Array;
ResultFieldNames : Array;
MultiSelect : Boolean
): TbtkLookupData;
Примеры
Пример №1:
R := DoLookup('TbtkLookupGridForm','maintree',['id'],[2629000],['id','sParentClass'],true);
if R.LookupResult=lrOk then Message+Dlg( VarToStr(R.Data(0,1))+'->'+R.Data(1,1), mtWarning, 'mbYes', 0 );
Пример №2:
В данном примере рассматривается случай возврата значений из двух выборок.
S := DoLookupEx('', 'SELRO_CNT_ContractChoose',
['SELRO_CNT_ContractChoose.id', 'SELROCL_CNT_ObligationChoose.id'],
[GetVar('IDContract'), GetVar('IDObligation')],
['SELRO_CNT_ContractChoose.id', 'SELROCL_CNT_ObligationChoose.id'], false,
['Caption'], [GetFmtCaption('CONTRACTOBLFORCHOOSE', [GetVar('super$IDSettlerOut_HL'),GetVar('super$IDSettlerIn_HL')])]);
if s.LookupResult=lrOk then
begin
ShowMessage(s.SelectData('SELRO_CNT_ContractChoose').RecCount);
ShowMessage(s.SelectData('SELROCL_CNT_ObligationChoose').RecCount);
setvar('IDContract', s.SelectData('SELRO_CNT_ContractChoose').Data[0,1]);
setvar('IDObligation', s.SelectData('SELROCL_CNT_ObligationChoose').Data[0,1]); execsql('set');
end;
Для доступа вернувшимся значениям была использована структура: SelectData([имя выборки]).Data [AttrNo,RecNo] Её использование необходимо при явном указании имени поля ([имя выборки].[имя поля]), если поле указано неявно ([имя поля]), то вернувшиеся данные будут доступны непосредственно в свойстве “Data”, как это сделано в примере №1.