2016-05-09 3 views
0

Я использую эту базу данных, где у меня есть несколько таблиц, в которых хранятся сведения о поступлениях и расходах.Расчеты с помощью Filemaker 13 среди несвязанных таблиц

То, что я хотел бы сделать, это создать формат, где я ставлю на общий баланс, то есть (Table1.Receipts_total + Table2.Receipts_total) - (Table3.Expenses_total + Table4.Expenses_total)

Основная проблема здесь заключается в том, что эти таблицы не связаны друг с другом, и с этим аспектом в FileMaker очень сложно справиться.

Я думал, что существует способ запустить «сырой» SQL-запрос низкого уровня, но я не смог этого сделать.

+1

Я уверен, что вы можете сделать это с помощью 'ExecuteSQL()' - но что именно вы будете делать с результатом? Кроме того, почему бы вам просто не связать таблицы? Или - еще лучше - объединить их в одну таблицу транзакций? - Заметим также, что суммирование ** всех * транзакций все время кажется не очень практичным (и будет медленнее по мере роста количества записей). Обычно вы выполняете поиск (например, для транзакций в диапазоне дат), а затем показываете это в отчете. –

+0

@ michael.hor257k К сожалению, разные таблицы не имеют «логических» отношений, но мне нужно получить информацию из своих записей. Похоже, что 'ExecuteSQL' не предоставляет мне необходимую мне информацию (потому что в ней указано, что нет отношений). Я храню информацию о расходах и поступлениях в разных таблицах, а затем я хотел бы объединить всю эту информацию, чтобы получить общий баланс – FancyPants

+0

»* Кажется, что ExecuteSQL не предоставляет мне необходимую мне информацию (поскольку в ней указано, что нет отношения). * «ExecuteSQL() не требует отношений. Отправьте свой код, чтобы переместить его вперед. –

ответ

0

Во-первых, я бы предложил вам нормализовать структуру данных - так как все, что вы делаете с текущим, будет просто взломать.

Во всяком случае, это довольно легко получить фигуру вы хотите, даже без использования 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 

Но я не рекомендовал бы вы размещать это как «живое» поле вычисления в макете, так как это будет становиться все медленнее по мере роста числа транзакций.