2013-07-19 3 views
1

Я создаю базу данных в FileMaker 12, которая, среди прочего, сохранит список заданий (обозначенных числовым идентификатором) и сотрудников, у которых было оплачиваемое время для этой работы ,Filemaker 12 - отобразить одно значение, сохранить другое

Даны три таблицы:

Employee (empName, empID, salary, ...) 
JobHours (empID, jobID, hrsWorked, ... , refID) 
JobCost (jobID, expenses, profit, ... , refID) 

Где:

Сотрудник мой персонал список соответствия имен числовыми идентификаторами сотрудников и статистика (зарплаты, и др);

JobHours - это список участия сотрудников - всякий раз, когда сотрудник проводит время на работу, в этой таблице есть строка с указанием их идентификатора, идентификатора задания, отработанных часов и нескольких других вещей;

JobCost - это ежедневный отчет о работе. Одна запись в этой таблице относится к активности для одного задания за один день. Кроме того, каждая запись получает уникальный уникальный идентификатор системы (поскольку ни идентификатор jobID, ни дата не уникальны) для связи с JobHours (в результате чего список тех, кто работал над определенной работой в определенный день).

У меня есть форма, показывающая записи из JobCost. Для каждой записи я могу видеть на портале, показывая записи от JobHours, которые работали над этой работой в этот день.

Теперь проблема.

В моем портале, я хочу, чтобы выпадающий список имен сотрудников тянули из списка значений для создания записей в JobHours со следующими критериями:

1) Мне нужно, чтобы это было выпадающим а не всплывающее окно, поэтому он будет отвечать на автозаполнение с клавиатуры. В раскрывающемся списке будет отображаться вторичное значение (имя сотрудника) из списка значений при его сбросе и будет правильно отвечать на автозаполнение клавиатуры на вторичном значении, но после того, как вы сделали свой выбор, он отображает только основное значение (сотрудник Я БЫ).

2) Мне нужно, чтобы все отображались имена, а не идентификаторы. Всплывающее окно делает это отлично. Однако, похоже, он не отвечает на клавиатуру для ввода автозаполнения.

3) Мне нужно сохранить числовой идентификатор, а не имя.

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

+0

На моей копии FMPA 12 v3 (Mac) Я нахожу, что могут быть введены как раскрывающиеся списки, так и всплывающие меню. Возможно, проверьте, что ваша копия FileMaker обновлена? – pft221

+0

Только что проверено Я обновлен - FMP 12.0v4 и обновление не доступно, когда я проверяю. Разве это может быть разница между Pro и Advanced? – qrab

+0

Мне кажется маловероятным, но это возможно. Возможно, попробуйте получить демо-версию Advanced с веб-сайта и посмотреть, устраняет ли это проблему. Также попробуйте другой компьютер - возможно, некоторые настройки повреждены на вашем. Вы на Mac или Windows? – pft221

ответ

2

Общей методикой является использование двух полей, один непосредственно поверх другого.

На нижней панели введите поле JobHours :: EmpID. Настройте его как раскрывающийся список со списком значений, который вы указали.

В поле JobHours :: EmpID помещается соответствующее поле Employee :: EmpName. Установите поле так, чтобы оно не могло быть введено в режиме просмотра или поиска.

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

+0

Я пробовал это, и как @Chuck упоминает ниже, он несколько неэлегантен. Если я не придумаю что-нибудь еще на следующий день или около того, я, вероятно, вернусь к этому, и в этом случае отметьте это как ответ. – qrab

0

Решение pft является тем, что я давно использовал, но все же считаю его неэлегантным, поскольку пользователь все еще видит существующий номер идентификатора в поле при изменении значения.

Если тип впереди важен, я бы использовал всплывающее меню. После того, как меню было активировано либо путем внесения в него вкладок, либо путем нажатия на него, пользователь может ввести с клавиатуры, и выбор изменится в зависимости от введенного.

+0

Вы и @ pft221 согласны с тем, что всплывающие окна должны отвечать на автозаполнение. Есть ли какой-то переключатель, которого я мог бы пропустить? Кажется, это не работает для меня. – qrab

+0

Ну, это не * точно * автозаполнение, но когда я создал быстрый тест в FileMaker 12 со статическим списком значений (Аризона, Калифорния, Нью-Йорк) и поле, привязанное к нему как всплывающее меню, мне удалось щелкнуть в поле, чтобы открыть меню и ввести «C», чтобы выбрать Калифорнию. Таким образом, он не заполняет содержимое так сильно, как выбор ближайшего совпадения. – Chuck

0

Я пришел в эту тему, ища решение этой же проблемы (позволяя пользователю выбрать из списка, показать свой выбор, но вместо этого сохранить соответствующее значение). Например, выберите название вида растений из раскрывающегося списка, укажите название вида растения в раскрывающемся поле, но сохраните таксономический серийный номер (TSN, который с большей вероятностью останется неизменным на протяжении многих лет). Это легко сделать в MS Access, но он принял более гибкий подход, чтобы сделать это в FMP12.

Как я его решил: Я создал два поля в таблице, которые будут хранить значения: Plant_TSN и Plant_SciName. Должно существовать соотношение между значениями в этих двух полях. В моем случае я храню имя SciName для каждого TSN в таблице поиска. Затем я создал два поля в моем макете, по одному для каждого нового поля.

Для значения, которое вы хотите сохранить (например, Plant_TSN): Выделите соответствующее поле макета и включите стрелку show/hide. Отредактируйте список значений, в который вы поместите раскрывающийся список, чтобы отобразить второй (читательский) столбец, но сохраните первое значение столбца. В макете уменьшите поле, чтобы показывать стрелку.

Для поля, которое вы хотите видеть пользователем (например, Plant_SciName): , сделайте другое поле макета поле «Редактировать окно» и запретите ввод поля в режиме «Обзор» или «Поиск». Но это против стрелки раскрывающегося списка, созданной на предыдущем шаге, чтобы сделать то, что выглядит как одно поле.

Наконец, в первом поле (только для стрелки) напишите сценарий, чтобы в удобном для пользователя номере (Plant_SciName) ввести значение, удобное для пользователя (Plant_SciName), когда в раскрывающемся списке выбрано значение user-gug (Plant_TSN). Я использовал триггер сценария OnObjectSave в раскрывающемся отформатированном поле. Скрипт должен быть чем-то вроде строки 1) Freeze window, 2) Перейти к соответствующей записи (на основе отношения в таблице поиска 3) Установить поле (например, поле редактирования) и 4) GotoLayout [оригинал], чтобы компенсировать замораживание.

Возможно, это не совсем четкое объяснение, но я уверен, вы получите его на третьем чтении! Я бы опубликовал скриншот, но мне, видимо, нужны 10 «точек репутации».

Cheers.

+0

Спасибо, что нашли время набрать это. Достаточно времени прошло, что я не помню свое точное решение, но это звучит примерно так, как я. В лучшем случае, kludge, но он работал достаточно хорошо, и клиент кажется удовлетворенным. – qrab

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