13.11.2012, 13:03 | #61 |
Участник
|
Цитата:
Внутр цикла вы хотели сказать? Update конечно же можно сделать, но при этом обновится значение в БД, а не только в запросе. Если таблица вспомогательная, а не рабочая то всё вроде бы хорошо. |
|
13.11.2012, 13:07 | #62 |
Участник
|
Цитата:
упс опередили Последний раз редактировалось ice; 13.11.2012 в 13:16. |
|
13.11.2012, 13:10 | #63 |
Участник
|
Да, конечно, внутри цикла.
Кажется, начинаю понимать, что именно вы считали невозможным, - залезть внутрь процедуры именно выполнения самого запроса. Сорри, детские болезни неустоявшейся лексики ). Цитата:
Только вот, попытка затолкать a.update(); внутрь цикла вызывает ошибку, а если поставить эту штуку после цикла, то говорит, что сначала нужно выбрать запись для обновления... Как быть?! |
|
13.11.2012, 13:17 | #64 |
Участник
|
Цитата:
X++: QueryBuildDatasource.update(true) X++: ttsbegin; // цикл ttscommit; |
|
13.11.2012, 13:20 | #65 |
Участник
|
Цитата:
Сообщение от ice
вам не удалось поставить вычисление внутрь запроса. вам удалось исполнить запрос, и попытаться вычислить значение в цикле по перебору результата исполненного запроса по каждой выбранной строке. а чтобы сохранить изменения, нужно было выбрать строки "для записи" в запросе и в цикле выполнить update строки
упс опередили "Невозможно отредактировать запись в EmplCommissionWageEndBalance (EmplCommissionWageEndBalance). Обновление должно выполняться внутри проводки." Внутри какой проводки? Ниче не понимаю... |
|
13.11.2012, 13:21 | #66 |
Участник
|
|
|
13.11.2012, 15:14 | #67 |
Участник
|
Хорошо...
Допустим, вот этот код делает примерно то, что мне нужно, и сохраняет данные в таблице. static void Job2(Args _args) { Query q; QueryRun qr; QueryBuildDatasource qbds1, qbds2; QueryBuildRange qbr; EmplCommissionWageEndBalance a; ; q = new Query(); qbds1 = q.addDataSource(tablenum(EmplCommissionWageEndBalance)); qbds1.update(true); qr = new QueryRun(q); ttsbegin; while(qr.next()) { a = qr.get(tableNum(EmplCommissionWageEndBalance)); a.EndBalanceMST = a.SumOfAmountMST_In - a.SumOfAmountMST_Out; a.update(); print "сотр = ", a.EmplId, " сюда = ", a.SumOfAmountMST_In, " отсюда ", a.SumOfAmountMST_Out, " баланс ", a.EndBalanceMST; pause; } ttscommit; } А как все это засунуть в АОТ??? |
|
13.11.2012, 15:17 | #68 |
Участник
|
|
|
13.11.2012, 15:24 | #69 |
Участник
|
|
|
13.11.2012, 15:25 | #70 |
Участник
|
|
|
13.11.2012, 15:28 | #71 |
Участник
|
|
|
13.11.2012, 15:35 | #72 |
Участник
|
|
|
13.11.2012, 15:36 | #73 |
Сенбернар
|
Narayana,
То, что вы сделали джобом с запросом, можно сделать без запроса.. и без джоба, кстати ) - перекрываете метод update() на вашей таблице - пишете в нем (до super()-а) : BalanceMST = AmountMST_In - AmountMST_Out; Радуетесь жизни.. теперь у вас BalanceMST всегда будет правильный.. Что вы все-таки получить хотите? Если не секрет, конечно..
__________________
Best Regards, Roman |
|
13.11.2012, 15:37 | #74 |
Участник
|
|
|
13.11.2012, 15:43 | #75 |
NavAx
|
|
|
|
За это сообщение автора поблагодарили: Ivanhoe (1). |
13.11.2012, 15:46 | #76 |
Участник
|
Цитата:
Сообщение от RVS
Narayana,
То, что вы сделали джобом с запросом, можно сделать без запроса.. и без джоба, кстати ) - перекрываете метод update() на вашей таблице - пишете в нем (до super()-а) : BalanceMST = AmountMST_In - AmountMST_Out; Радуетесь жизни.. теперь у вас BalanceMST всегда будет правильный... Почему-то никакой реакции. Сейчас попробую еще раз. Вы имеете в виду, в чисто прикладном плане? В моей системе зарплата сотрудникам за услуги, оказанные клиентам, начисляется как процент от стоимости работ для клиента. То же самое для представителей компании. Они получают бонус в виде процента от стоимости заказа от направленного к нам на обслуживание клиента. И при этом представители имеют личный кабинет на портале, где могут посмотреть свои начисления, выплаты и баланс взаиморасчетов. Это, конечно, можно было бы сделать с помощью вычисления баланса прямо в поле в портале, но мне захотелось досконально разобраться, наконец-то, с тонкостями работы с данными. Вот я и использовал этот случай как тренировочный. |
|
13.11.2012, 15:46 | #77 |
Сенбернар
|
Черт... НЕЕЕЕТ
Скажите, что вы получить хотите. Путь точно есть, не может он не есть.. И этот путь точно не имеет отношения.. к изнасилованию стандартного запроса..
__________________
Best Regards, Roman |
|
13.11.2012, 15:51 | #78 |
Сенбернар
|
Цитата:
Сообщение от Narayana
В моей системе зарплата сотрудникам за услуги, оказанные клиентам, начисляется как процент от стоимости работ для клиента.
То же самое для представителей компании. Они получают бонус в виде процента от стоимости заказа от направленного к нам на обслуживание клиента. И при этом представители имеют личный кабинет на портале, где могут посмотреть свои начисления, выплаты и баланс взаиморасчетов.
__________________
Best Regards, Roman |
|
|
За это сообщение автора поблагодарили: Narayana (1). |
13.11.2012, 15:56 | #79 |
Участник
|
Цитата:
Только я раньше именно в update() пробовал, а нужно еще и в insert() добавить... Потому как, если только в апдейт, то, чтобы сработало, нужно еще и после создания записи, данные отредактировать. Не, ничо так. "...бешеной собаке семь километров не крюк..." Большое вам человеческое спасибо! )) Последний раз редактировалось Narayana; 13.11.2012 в 16:09. |
|
Теги |
query, архитектура, как правильно |
|
|