28.04.2020, 15:18 | #1 |
Участник
|
Динамическое формирование выпадающего списка в StringEdit
Здравствуйте.
Есть StringEdit, нужно сделать чтобы выпадающий список у него заполнялся определёнными полями из таблицы, плюс не все записи из таблицы должны выводиться, а с условием на определённое поле. Как из таблицы вывести разобрался, что-то типа: public void lookup() { Query qr = new Query(); QueryBuildDataSource qbds; QueryBuildRange qbr; SysTableLookup sysTblLookup = SysTableLookup::newParameters(tablenum(custTable),this); ; sysTblLookup.addLookupfield(fieldNum(custTable,Field1)); sysTblLookup.addLookupfield(fieldNum(custTable,Field2)); qbds = qr.addDataSource(tablenum(custTable)); sysTblLookup.parmQuery(qr); sysTblLookup.performFormLookup(); //super(); } А можно как-нибудь SQL-запрос 'подсунуть' вместо таблицы? Последний раз редактировалось Metrofun; 28.04.2020 в 16:22. |
|
28.04.2020, 16:32 | #2 |
Участник
|
Если я правильно вас понял, вам нужен так называемый lookup.
Посмотрите здесь: https://docs.microsoft.com/en-us/dyn...m-to-a-control |
|
28.04.2020, 16:34 | #3 |
Участник
|
Цитата:
Сообщение от Metrofun
Здравствуйте.
Есть StringEdit, нужно сделать чтобы выпадающий список у него заполнялся определёнными полями из таблицы, плюс не все записи из таблицы должны выводиться, а с условием на определённое поле. Как из таблицы вывести разобрался, что-то типа: public void lookup() { Query qr = new Query(); QueryBuildDataSource qbds; QueryBuildRange qbr; SysTableLookup sysTblLookup = SysTableLookup::newParameters(tablenum(custTable),this); ; sysTblLookup.addLookupfield(fieldNum(custTable,Field1)); sysTblLookup.addLookupfield(fieldNum(custTable,Field2)); qbds = qr.addDataSource(tablenum(custTable)); sysTblLookup.parmQuery(qr); sysTblLookup.performFormLookup(); //super(); } А можно как-нибудь SQL-запрос 'подсунуть' вместо таблицы? |
|
28.04.2020, 17:56 | #4 |
Участник
|
Использовал View.
Спасибо. |
|
29.04.2020, 11:11 | #5 |
Участник
|
Можно обойтись без View, что-то типа см. ниже, может кому-нибудь пригодиться
public void lookup() { Query qr = new Query(); QueryBuildDataSource qbds; QueryBuildDataSource qbds2; SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(Table1), this); ; qbds = qr.addDataSource(tableNum(Table1)); qbds2 = qbds.addDataSource(tableNum(Table2)); qbds.joinMode(JOINMODE::InnerJoin); qbds2.addLink(fieldnum(Table1, IDField), fieldnum(Table2, IDField)); sysTableLookup.parmQuery(qr); sysTableLookup.addLookupfield(fieldNum(Table1, Field1)); sysTableLookup.performFormLookup(); } |
|
29.04.2020, 11:38 | #6 |
Программатор
|
В Аксапте все уже давно придумано. Поиск по АОТу по SysTableLookup выдаст кучу примеров как это используется.
|
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|