29.07.2008, 01:05 | #1 |
Участник
|
Управление курсором в темповом датасоурсе
Как переместить курсор темпового датасоурса на запись с определенным значением индексного поля? Формализирую: например, забивается дс темповыми данными где liftNo индексное поле. Показывать надо все записи, но указатель должен находиться на записи с определенным значением LiftNo.
__________________
Axapta has seduced me deadly! |
|
29.07.2008, 06:31 | #2 |
Программист
|
Если я правильно понял вопрос, то это будет выглядеть примерно так:
X++: tmpTable tmpTable; // объявляете курсор своей временной таблицы tmpTable.liftNo = 1234; // присваиваете полю liftNo значение, которое необх. найти DataSourceName_ds.findRecord( tmpTable ); // датасорс позиционируется на записи с liftNo = 1234 // где DataSourceName - имя источника данных на вашей форме |
|
29.07.2008, 11:16 | #3 |
Боец
|
X++: tmpTable tmpTable; // объявляете курсор своей временной таблицы tmpTable.liftNo = 1234; // присваиваете полю liftNo значение, которое необх. найти DataSourceName_ds.findRecord( tmpTable ); // датасорс позиционируется на записи с liftNo = 1234 // где DataSourceName - имя источника данных на вашей форме X++: tmpTable tmpTable; // объявляете курсор своей временной таблицы select firstonly tmpTable // !!! перевыбираем курсор where tmpTable.liftNo = 1234; // присваиваете полю liftNo значение, которое необх. найти DataSourceName_ds.findRecord( tmpTable ); // датасорс позиционируется на записи с liftNo = 1234 // где DataSourceName - имя источника данных на вашей форме |
|
31.07.2008, 12:32 | #4 |
Участник
|
Хм, спасибо, пробовал то же самое, но почему-то не получилось, попробую ещё раз.
__________________
Axapta has seduced me deadly! |
|
31.07.2008, 12:43 | #5 |
Участник
|
Цитата:
Цитата:
Вам нужно делать поиск не по новообъявленной переменной временной таблице, а именно по той, которая содержит ссылку на файл с данными Или же расшарить его и на новую переменную с помощью метода setTmpData() |
|
31.07.2008, 15:48 | #6 |
Участник
|
Точно! Просто в прошлый раз поздно вечером не пришла таки трезвая мысль) Спасибо!
__________________
Axapta has seduced me deadly! |
|
04.08.2008, 16:31 | #7 |
Участник
|
Хм, странно, однако, рекорд-то находится, но визуально в гриде не выделяется(
Рефреш дс"а не помог(
__________________
Axapta has seduced me deadly! |
|
04.08.2008, 17:05 | #8 |
MCTS
|
Я так понимаю, что временная таблица заполняется и курсор устанавливается во время открытия формы? то есть она сразу должна открыться с определенной выделенной записью?
Если так, то вопрос: А в каком методе выполняете позиционирование курсора? |
|
04.08.2008, 17:16 | #9 |
Участник
|
Именно так. в ране.
__________________
Axapta has seduced me deadly! |
|
04.08.2008, 17:27 | #10 |
MCTS
|
Тогда непонятно. У меня работает примерно так:
В ините формы: X++: public void init() { Table2 __Table2 ; super(); //Инициализируем временную таблицу __Table2.Field1 = '1'; __Table2.Field2 = 1; __Table2.insert(); __Table2.Field1 = '2'; __Table2.Field2 = 2; __Table2.insert(); __Table2.Field1 = '3'; __Table2.Field2 = 3; __Table2.insert(); //Укажем датасурсу курсор с данными Table2.setTmpData(__Table2); //выберем конкретную запись select __Table2 where __Table2.Field2 == 2; //сохраним в переменной _Table2.data(__Table2); } ран: X++: public void run() { super(); Table2_ds.findRecord(_Table2); } X++: public class FormRun extends ObjectRun { Table2 _Table2; } может быть есть еще какие-то условия? Последний раз редактировалось altap; 04.08.2008 в 17:29. |
|
04.08.2008, 17:30 | #11 |
Участник
|
То-то и оно, что не понятно. Сначала думал, что вся соль в том, что этот темповый дейтасоурс джоинит ещё один не темповый, воссоздал примерную ситуацию с другой формой и другими таблицами - всё работает. Буду копать дальше( Спасибо за попытку помочь.
__________________
Axapta has seduced me deadly! |
|