FileMaker: пакетные изменения в источнике появления таблицы - PullRequest
0 голосов
/ 23 апреля 2011

Есть ли способ (или есть какие-либо инструменты) для пакетного изменения источника вхождения таблицы из локального файла в файл из внешнего источника?

Ситуация: я управляю размещенной базой данных с сотнями таблицПоявление примерно 15 таблиц.Некоторые из моих пользователей получают доступ к базе данных при медленном интернет-соединении.Хотя многие таблицы необходимо обновить для всей рабочей группы, некоторые данные в других таблицах и информация о пользовательском интерфейсе в основном статичны.

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

Я понимаю, что мог бы сделать что-то с помощью сценариев пользовательского интерфейса AppleScript, если нет лучшего способа сделатьэто.

1 Ответ

2 голосов
/ 27 апреля 2011

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

--to prepare to run this script, you should already have the External Data Source set up
--you should also open the Manage > Database menu and select the "Relationships" tab

--set newDataSource to the name of the new external data source
set newDataSource to "" 

--obtain tableOccurrences from TableNames ( Get ( FileName ) ) in the Data Viewer and copy the list into the tableOccurrences variable below
--note that tableOccurrences will be a return-separated list which is quite long when set
set tableOccurrences to ""

--a list of which tables should be moved from the local file to the hosted file. Note that these should be proper table names not table occurrences
set tablesToReplace to {"table1", "table2", ..., "tableN"}

tell application "FileMaker Pro Advanced"
    activate
end tell

set AppleScript's text item delimiters to {return}
set j to the number of text items of tableOccurrences

repeat until j < 1
    tell application "System Events"
        tell application Process "FileMaker Pro Advanced"
            keystroke text item j of tableOccurrences
            keystroke "o" using command down
            delay 1

            set i to 1
            repeat until ((i > (count of rows of table 1 of scroll area 1 of window 1)) or selected of row i of table 1 of scroll area 1 of window 1)
                set i to i + 1
            end repeat

            if (i <= (count of rows of table 1 of scroll area 1 of window 1) and name of static text of row i of table 1 of scroll area 1 of window 1 is in tablestoReplace) then
                set currentMasterTable to name of static text of row i of table 1 of scroll area 1 of window 1
                set currentOccurrenceName to value of text field 1 of window 1
                click pop up button 1 of window 1
                tell menu 1 of pop up button 1 of window 1
                    click menu item newDataSource
                end tell

                set k to 1
                set tableSelected to false
                repeat until tableSelected or k > (count of rows of table 1 of scroll area 1 of window 1)
                    if name of static text of row k of table 1 of scroll area 1 of window 1 = currentMasterTable then
                        select row k of table 1 of scroll area 1 of window 1
                        set tableSelected to true
                    end if
                    set k to k + 1
                end repeat

                set value of text field 1 of scroll area 1 of window 1 to currentOccurrenceName
                click button "OK" of window 1
            else
                click button "Cancel" of window 1
            end if
        end tell
    end tell
    set j to j - 1
end repeat
...