2014-01-20 3 views
0

Пожалуйста, смотрите ссылку на Pro 12 базы данных FileMaker я создал, чтобы проиллюстрировать мою проблему:Counting список значения элементы в FileMaker

https://dl.dropboxusercontent.com/u/24821795/Example.fmp12

Я хочу, чтобы подсчитать, сколько раз активность была назначена к Сотрудник, но есть несколько вещей, делающих это сложным (не невозможно, я надеюсь):

  1. Когда пользователь выполняет поиск, счет должен обновляться, чтобы включать только найденные записи.
  2. Пользователь может добавить в список мероприятий.

В приведенном примере SelfJoinCount и Activities :: Count не то, что я хочу - они оба подсчитывают активность (например, стрельба из лука назначена двум сотрудникам), но не соответствуют критериям 1. выше.

Попробуйте выполнить находку Пола = M

  • Значение ReviewedCount (сводное поле, считая Пересмотрено) изменения 3, который является то, что я хочу.

  • Значения SelfJoinCount и Activities :: Count не меняются. В этом случае я хочу, чтобы они изменились на 1 (т. Е. Одна запись с Ballooning, одна запись с наблюдением за птицами и одна запись с Archery в найденном наборе).

я мог бы создать поле расчета с 1 в нем, если деятельность происходит, а затем краткое поле подсчета, что 1 для каждого отдельного вида деятельности в базе данных, но это не будет работать из-за критериев 2 выше (также есть много мероприятий).

Любые идеи?

ответ

0

Хорошо, несколько проблем у вас здесь.

Прежде всего, вам нужны ключевые значения для ваших таблиц. Это можно легко выполнить, создав поле чисел в каждой таблице. В параметрах выберите автоматический ввод серийного номера, уникальность проверки, а не пустое.

Теперь вам нужна третья таблица для соединения. Эта таблица будет иметь значение внешнего ключа для сотрудника, а также внешний ключ для этой деятельности.

Вы хотите, чтобы ваш макет персонала отображался в форме, добавьте портал в таблицу соединений с полями внешнего ключа для этой операции. Создайте всплывающее окно или раскрывающийся список для действий (подсказка: если вы хотите, чтобы имя операции отображалось в макете, а не в ее ключе, используйте всплывающее окно.), Он должен иметь значение ключа и отображать второе поле, все значения, показать только значение из второго поля.

Это позволит вам иметь много разных отношений между таблицами, чтобы у одного сотрудника мог быть много видов деятельности, а деятельность может иметь много сотрудников.

Теперь, если вы хотите подсчитать каждое действие, вы можете, конечно, создать поля расчета в таблице персонала, чтобы подсчитывать экземпляры каждого вида деятельности, но я нахожу это громоздким и трудоемким, а также требуя, чтобы вы создавали TO для каждого вида деятельности. То, что вы действительно хотите использовать, - это функция ExecuteSQL().Некоторые вещи, как это:

ExecuteSQL ("

SELECT COUNT (J.FK_ActivityID) ОТ JoinTable J WHERE J.FK_StaffID = группа по J.FK_ActivityID? ";" ";""; Персонал: : PK_StaffID)

Вы можете настроить ExecuteSQL на включение определенного действия или оставить его, поскольку он включает их все. До вас, как вы это делаете.

Если бы не 7am и не спал, я бы высмеял файл для вас, но я думаю, вы бы лучше его тестировали и работали над ним самостоятельно.

+0

Благодарим вас за быстрый ответ, но я не думаю, что он обращается к предостережениям 1. и 2. в моем оригинальном посте. Кроме того, мои извинения за то, что я не подумал упомянуть об этих вещах: * Это будет решение для выполнения, поэтому он не может использовать ExecuteSQL. * будет объединено несколько баз данных, поэтому действия не могут иметь связанных с ними значений ключей. – Kap

+0

С дополнительной таблицей и порталом вы, похоже, разработали решение для добавления нескольких действий к сотруднику - это не требуется , У каждого сотрудника только один назначенный вид деятельности, и я просто хочу подсчитать количество раз, когда какое-либо мероприятие было назначено любому сотруднику (но с оговорками, которые я упомянул в первоначальном посте). > вы можете, конечно, создать поля вычислений в таблице персонала ... Я не могу, поскольку пользователь может добавить в список видов деятельности, поэтому я не могу добавить ТО для каждого вида деятельности. – Kap

+0

Наличие нескольких баз данных для слияния никоим образом не ограничивает доступ к вашим таблицам. На самом деле, еще важнее, чтобы вы делали это, чтобы сохранить правильную информацию в правильных записях. К сожалению, у вас не было упомянутого решения во время выполнения, или я бы не поднял ExecuteSQL. Для вашего примера, если вы хотите просто подсчитать, сколько раз назначено действие, создайте в таблице действий расчет (valuecount (список (штат)). – VikingBlooded

Смежные вопросы