14.04.2006, 16:57 | #1 |
Участник
|
Я создала Отчет. В нем в датасоурс 2 таблички: таблица проводок ОС и справочник ОС. Связь между табличками осуществляется по полю номер ОС и модель учета.
Почему в коде выводится ошибка. Error Сообщение (16:44:47) Невозможно выбрать запись в 'Модель учета ОС' ('RAssetStandards') Инв. номер ОС: , . База данных SQL обнаружила ошибку........... Код: qbdsAT = qbds.addDataSource(tablenum(RAssetTrans)); qbdsAT.fetchMode(JoinMode::INNERJOIN); qbdsAT.relations(true); qbdsAT.addLink(Fieldnum(RAssetTrans, accountNum),fieldnum(RAssetStandards, assetId)); qbdsAT.addLink(Fieldnum(RAssetTrans, assetStandardId),fieldnum(RAssetStandards, assetStandardId)); |
|
14.04.2006, 18:37 | #2 |
Участник
|
Безумный вариант: потому что вы не добавили в датасорс табличку RAssetStandards
|
|
14.04.2006, 18:48 | #3 |
Участник
|
Код: //ЗАПРОС ПО ТАБЛИЦЕ МОДЕЛЕЙ УЧЕТА qbds = this.query().dataSourceTable(tablenum(RAssetStandards)); qry = new Query(); qbds=qry.addDataSource(tablenum(RAssetStandards),'lbdt2'); //инв номер ОС qbr=qbds.addRange(fieldnum(RAssetStandards,AssetId)); strRangeValue = element.query().dataSourceTable(tablenum(RAssetStandards)).findRange(fieldnum(RAssetStandards,AssetId)).value(); qbr.value(strRangeValue); //срок жизни qbrLife=qbds.addRange(fieldnum(RAssetStandards,Lifetime)); strRangeValue = element.query().dataSourceTable(tablenum(RAssetStandards)).findRange(fieldnum(RAssetStandards,Lifetime)).value(); qbrLife.value(strRangeValue); //профиль разноски qbrProfile=qbds.addRange(fieldnum(RAssetStandards,PostingProfile)); strRangeValue = element.query().dataSourceTable(tablenum(RAssetStandards)).findRange(fieldnum(RAssetStandards,PostingProfile)).value(); qbrProfile.value(strRangeValue); //группа амортизации qbrGroup=qbds.addRange(fieldnum(RAssetStandards,AssetGroup)); strRangeValue = element.query().dataSourceTable(tablenum(RAssetStandards)).findRange(fieldnum(RAssetStandards,AssetGroup)).value(); qbrGroup.value(strRangeValue); //модель учета qbrStandard=qbds.addRange(fieldnum(RAssetStandards,assetStandardId)); strRangeValue = element.query().dataSourceTable(tablenum(RAssetStandards)).findRange(fieldnum(RAssetStandards,assetStandardId)).value(); qbrStandard.value(strRangeValue); excelDocument.InsertValue(ComExcelDocument_RU::numToNameCell(3,4), strRangeValue); //ЗАПРОС ПО ТАБЛИЦЕ ПРОВОДОК ОС qbdsAT = qbds.addDataSource(tablenum(RAssetTrans)); qbdsAT.fetchMode(JoinMode::INNERJOIN); qbdsAT.relations(true); qbdsAT.addLink(fieldnum(RAssetTrans, accountNum), fieldnum(RAssetStandards, assetId)); qbdsAT.addSortField(fieldnum(RAssetTrans, Voucher)); |
|
14.04.2006, 19:49 | #4 |
Участник
|
Ой, боже!
А этот запрос вы прямо руками кодируете? Почему бы вам не создать объект Query в AOT, а в коде написать простую строчку? <div class='XPPtop'>X++</div><div class='XPP'>myQueryInReport = [color=:blue]new[/color] Query([color=:blue]querystr[/color](mySuperQueryInAOT))</div> Я правильно понимаю, что основная задача вашего кода - создать запрос с теми условиями, которые ввел пользователь в отчете руками? Почему бы вам не сделать просто? myQuery = element.queryrun().query() |
|
20.04.2006, 15:33 | #5 |
Участник
|
А мы легких путей не ищем. Спасибо за совет, продолжу самомучение.
|
|