Как я могу создать новый первичный ключ в таблице FileMaker, а затем изменить существующее отношение, чтобы оно основывалось на только что созданном ключе? - PullRequest
0 голосов
/ 24 марта 2011

У меня вполне просьба.Разработчик создал нашу базу данных, которая имеет несколько макетов с очень сложным деревом отношений.Если бы пришел другой разработчик, взгляните на это, он сказал, что деконструкция нашей системы будет слишком трудоемкой и болезненной, подумайте о создании сценария, чтобы вы могли обойти его, пока он не будет исправлен.Вот дилемма: у меня есть информация на одной странице, которая должна ссылаться на информацию на нескольких различных страницах с использованием вкладок и порталов.Однако вся информация связана с именем пользователя.Это имя пользователя не является статичным / сериализованным или что у вас есть.Таким образом, если проблема не будет решена сразу, с этой страницей может быть связано большое количество информации.Если имя неверно и кто-то пытается изменить имя пользователя даже слегка, это нарушает эту связь и начинает новую.Информация не исчезает, но в основном она находится где-то в подвешенном состоянии, пока вы не измените имя обратно на оригинальное.Я на самом деле попытался экспортировать информацию, изменив информацию, которая не соответствует, то есть изменив имя с Jon.Smith на John.Smith, а затем импортировав информацию на новую «страницу» для этого человека с неудачными результатами.Что подводит меня к моему вопросу, сможет ли скрипт решить эту проблему?Кроме того, есть ли предложения, как создать этот скрипт?Я извиняюсь, но у меня очень мало опыта в управлении базой данных, и я не уверен, почему этот проект обрушился на меня.Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 29 марта 2011

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

ВЕРНУТЬ ВАШ ФАЙЛ (С) ПЕРВЫМ. Тогда:

1) Создайте два новых поля:

  • id (таблица персоны)
    • Опции для идентификатора: Автоматический ввод серийного номера
  • person_id (таблица, связанная с персоной)

2) Создание серийных номеров для нового поля идентификатора в таблице персон.

  • Перейдите к макету человека.
  • «Записи»> «Показать все записи»
  • Щелкните в поле id и выберите «Записи»> «Заменить содержимое поля».
  • Выберите «Заменить серийными номерами» и примите значения по умолчанию. Обязательно установите флажок для обновления вашего следующего серийного номера.

3) Поместите только что сгенерированные серийные номера в соответствующую таблицу.

  • Перейдите к связанному макету.
  • 'Записи'> 'Показать все записи'
  • Щелкните в поле person_id и выберите «Записи»> «Заменить содержимое поля».
  • Выберите «Указать» рядом с «Заменить вычисленными результатами».
  • В раскрывающемся списке слева вверху выберите таблицу связанных лиц.
  • Дважды щелкните поле id (ваш расчет должен быть person :: id, с заменой person на имя вашей таблицы).
  • Нажмите «ОК», а затем «Заменить».

4) Измените отношения.

  • Выберите «Файл»> «Управление»> «База данных».
  • Перейдите на вкладку отношений.
  • Измените отношение от имени к идентификатору.

5) Проверьте все. Должно работать.

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

0 голосов
/ 24 марта 2011

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

Что касается вашей конкретной проблемы, сценарию, вероятно, не нужно экспортировать записи, но можно сбросить значения для поля в FileMaker.Это можно сделать либо циклически просматривая записи, которые необходимо изменить, либо с помощью шага сценария Replace Field Contents.Таким образом, скрипт может сделать что-то вроде этого:

Go to Layout[MyLayout] // Go to a layout that is attached to the table you need to search.
Perform Find[Restore] // Restore a find that will show the records you need to change.
Replace Field Contents[Table::Field; "New Value"]

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

...