02.08.2005, 19:39 | #1 |
Участник
|
Условие where в синтаксисе Query
Подскажите, пожалуйста, как с помощью синтаксиса Query отразить условие ...where RAssetTrans.AccountNum == RassetTable.AccountNum ?
|
|
02.08.2005, 19:47 | #2 |
Участник
|
какое то странное условие..
а точно такое условие? текущая строка фильтруется сама на себя? но если я чего то не поняла this.query() .dataSourceTable(TableNum(tmpLedgerAccountsQuery)) .addRange(fieldnum(tmpLedgerAccountsQuery,balance)).value(параметр фильтра); |
|
02.08.2005, 19:51 | #3 |
Участник
|
и по-моему на форуме уже не раз обсуждались вопросы с Query (разных форматов написания)
предлагаю воспользоваться поиском на форуме)) говорят, помогает))) |
|
02.08.2005, 20:01 | #4 |
Участник
|
select Name from RAssetTable
where RAssetTable.AccountNum == RAssetTrans.AccountNum; -чего тут странного((( |
|
02.08.2005, 20:14 | #5 |
Участник
|
есть метод на RAssetTrans
под названием assetName(), который возвращает Наименование из таблицы Основные стредства получается вот так Name = RAssetTrans.assetName() |
|
02.08.2005, 20:18 | #6 |
Участник
|
мне надо понять с query, это только для примера про основные (((
|
|
02.08.2005, 20:36 | #7 |
Участник
|
последовательно в квери прикрепляешь необходимые таблицы, связывая их между собой, с указанем полей для связки...
далее определяешь QueryRun на основе составленного квери, и просмотриваешь каждую строку PHP код:
QueryBuildRange range; QueryBuildRange rangeTrans; |
|
02.08.2005, 20:41 | #8 |
Участник
|
|
|
03.08.2005, 13:19 | #9 |
Участник
|
А если у меня запрос по двум таблицам, то я должен дважды делать
OST = qr.get(tablenum(RAssetTrans)) и Name = qr.get(tablenum(RAssetTable)) - так? |
|
03.08.2005, 14:23 | #10 |
Участник
|
Совершенно верно! При условии, что ты будешь извлекать данные из обеих таблиц!
|
|
03.08.2005, 14:36 | #11 |
Участник
|
из обеих таблиц -это значит добавить в один и тот же два разных датасурса? то есть типа from RAssetTrans,RAssettable?
qbdsRAssetTrans = queryRAssetTrans.addDataSource(tablenum(RAssetTrans)); qbdsRAssetTrans = queryRAssetTrans.addDataSource(tablenum(RAssetTable)); |
|
03.08.2005, 14:44 | #12 |
Участник
|
Query q = new Query();
QueryRun qr; QueryBuildDataSource qbdsTable, qbdsTrans; RAssetTable _RAssetTable; RAssetTrans _RAssetTrans; qbdsTrans = q.addDataSource(tablenum(RAssetTable)); qbdsTable = qbdsTransaddDataSource(tablenum(RAssetTrans)); qbdsTable.joinMode(joinMode::InnerJoin) qbdsTable.addLink(fieldNum(Table, AccountNum), fieldNum(RAssetTrans, AccountNum)); qr = new QueryRun(q); while (qr.next()) { _RAssetTable = qr.get(tablenum(RAssetTable)) ; _RAssetTrans = qr.get(tablenum(RAssetTrans)) ; //_RAssetTable - перменная типа таблицы, в которую задан курсор из запроса //_RAssetTrans - перменная типа таблицы, в которую задан курсор из запроса // теперь с этими перемеными-курсорами можно работать и вытаскивать //данные Name = _RAssetTable.Name; - наименование ОС } |
|
03.08.2005, 15:06 | #13 |
Участник
|
работает...))).Спасибо тебе, Tays. ))) Можно еще спросить? По почте) ?
|
|
03.08.2005, 15:18 | #14 |
Участник
|
когда я в запросе суммирую сумму по одинаковым AccountNum , то при этом в отчете исчезает поле Наиманование. А до этого все красиво выводилось...
|
|
03.08.2005, 15:25 | #15 |
Участник
|
и еще. Если я хочу сделать не select *, а select конкретное поле, но при этом без group by. если я пользуюсь selectionfield . то он требует указать group by. А мне надо, например, просто Name
|
|
03.08.2005, 15:32 | #16 |
Участник
|
Придется его отдельно подтаскивать наименование по AccountNum, потому что при группировке оно съедается.
(display - метод, к примеру, если запрос для формы делаете) PHP код:
А для Name пожно указать,к примеру SelectionField::Max - тоже подтащит вам название |
|
03.08.2005, 15:34 | #17 |
Участник
|
|
|
03.08.2005, 16:16 | #18 |
Участник
|
как сделать в отчете две колонки, чтобы в них выводились по определенному условию цифры из одного и того же поля таблицы? Всё это в синтаксисе Query/
Возможен ли такой вариант ? While (queryRun.next()) { // объявление и формирование нового query и queryrun } |
|
03.08.2005, 16:22 | #19 |
Участник
|
написать два дисплей метода для колонок - а в них проверть условие.
if (condition) return Table.Field; return ''; а condition может быть к примеру переменной из classDeclaration отчета. а их можно заполнять в цикле по записям вашем. |
|
03.08.2005, 16:24 | #20 |
Участник
|
интересно... да, вариант. ) А как я говорю-можно так? То есть внутри queryrun.next() еще раз бегать? Неэффективно так? Но можно? Как считаете?
|
|