Показать сообщение отдельно
Старый 16.01.2009, 16:33   #27  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от hated8 Посмотреть сообщение
вся проблема была в том что я делал:
qbds.addDataSource(tablenum(RAssetLocation));
qbds.addRange(fieldNum(RAssetLocation, recid)).value('((RAssetTransferTable.NewLocation==Location) || (RAssetTransferTable.OldLocation==Location))');
поменял qbds на this.query().dataSourceTable(tablenum(RAssetLocation)) и стало счастье!)
Вся проблема была в том, что range сначала помещался не в тот датасорс. Вызов fieldNum(RAssetLocation, recid) вносил визуальную путаницу и казалось, что range строится для датасорса от таблицы RAssetLocation. Но в параметрах функции fieldNum для поля RecId можно было бы указать совершенно произвольную таблицу, хоть LedgerTable - все равно датасорс, к которому добавлялся это range определялся бы текущим состоянием переменной qbds, а в ней в тот момент был датасорс от таблицы RAssetTransferTable. Поэтому использование просто "Location" без квалификатора датасорса от RAssetLocation вызывало ошибку, так как в таблице RAssetTransferTable поле Location отсутствует.

Оператор this.query().dataSourceTable(tablenum(RAssetLocation)).addRange(...) добавлял диапазон уже к датасорсу от RAssetLocation, в которой поле Location присутствует и поэтому счастье стало возможным и без имени датасорса.

Если же сейчас то попробовать "==Location" с именем датасорса, то, почти уверен, что "==RAssetLocation.Location" вызовет ошибку, а "==RAssetLocation_1.Location" отработает нормально. Попробуете? (для завершенности эксперимента).

Вы меня спросите, а почему же работает без _1 имя RAssetTransferTable? Я отвечу: "Она приезжала в Москву в командировку!" (шутка!) Я отвечу: потому что, вероятно, имя датасорса от таблицы RAssetTransferTable было исправлено на "без _1" в том таинственном this.query(), к которому всё пристраивается. Либо это датасорс формы, в котором _1 не добавляется при перетаскивании в него таблицы (первого экземпляра! а ко второму (!) уже добавляется "единичка", но без подчеркинания).

Впрочем, если это 4-ка и там всё не так, как я думаю про _1, и прав ZVV - про "одну таблицу", то два предыдущих абзаца нужно будет воспринять с точностью до наоборот. P.S. Ну вот и выяснили
За это сообщение автора поблагодарили: ZVV (1).