开发者

FileMaker: Batch Changes to Source of a Table Occurrence

Is there any way (or are there any tools) to batch change the source of a Table Occurrence from a local file to an externally sourced file?

Situation: I开发者_高级运维 manage a hosted database with hundreds of Table Occurrences of 15 or so tables. Some of my users access the database with slow internet connections. While many of the tables need to be updated for the entire workgroup, some data on other tables and UI information is mostly static.

I'd like to take a copy of the database, change the Table Occurrences of the tables which must be shared from a Local File source to an External Source (of the existing server.) I can do this by hand, but it would require thousands of clicks and be prone to inaccuracy. Much better if I can automate the process. (To specify, say, that all Occurrences of my Sales Table move from Local File to External Source.)

I realize that I might be able to so something with AppleScript's UI Scripting if there's not a better way to do it.


No answers so far, so I wrote this yesterday. It's dirty, long-winded and doesn't catch errors but it'll do the job and is something to build off of for the future.

--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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜