Во-первых, я бы предложил вам нормализовать структуру данных - так как все, что вы делаете с текущим, будет просто взломать.
Во всяком случае, это довольно легко получить фигуру вы хотите, даже без использования ExecuteSQL()
- просто запустить простой скрипт, как:
Go to Layout [ Table1.Receipts ]
Show All Records
Set Variable [ $balance; Value:Table1.Receipts::sTotalAmount ]
Go to Layout [ Table2.Receipts ]
Show All Records
Set Variable [ $balance; Value:$balance + Table2.Receipts::sTotalAmount ]
Go to Layout [ Table3.Expenses ]
Show All Records
Set Variable [ $balance; Value:$balance - Table3.Expenses::sTotalAmount ]
На данный момент, переменная $balance
будет содержать требуемый номер, и вы можете делайте все, что вы хотите с этим делать.
Примечание: в sTotalAmount
полей являются суммарными полями, определенные как Total of [Amount]
в каждом из трех таблиц.
В качестве альтернативы, вы можете связать три таблицы с помощью оператора отношений x
(т.е. создать декартово отношение продукта), а затем использовать расчет, скажем, в Table1.Receipts
таблицы =
sTotalAmount + Table2.Receipts::sTotalAmount - Table3.Expenses::sTotalAmount
Но я не рекомендовал бы вы размещать это как «живое» поле вычисления в макете, так как это будет становиться все медленнее по мере роста числа транзакций.
Я уверен, что вы можете сделать это с помощью 'ExecuteSQL()' - но что именно вы будете делать с результатом? Кроме того, почему бы вам просто не связать таблицы? Или - еще лучше - объединить их в одну таблицу транзакций? - Заметим также, что суммирование ** всех * транзакций все время кажется не очень практичным (и будет медленнее по мере роста количества записей). Обычно вы выполняете поиск (например, для транзакций в диапазоне дат), а затем показываете это в отчете. –
@ michael.hor257k К сожалению, разные таблицы не имеют «логических» отношений, но мне нужно получить информацию из своих записей. Похоже, что 'ExecuteSQL' не предоставляет мне необходимую мне информацию (потому что в ней указано, что нет отношений). Я храню информацию о расходах и поступлениях в разных таблицах, а затем я хотел бы объединить всю эту информацию, чтобы получить общий баланс – FancyPants
»* Кажется, что ExecuteSQL не предоставляет мне необходимую мне информацию (поскольку в ней указано, что нет отношения). * «ExecuteSQL() не требует отношений. Отправьте свой код, чтобы переместить его вперед. –