I have several tests measuring the performance of some forms and writing it into a DB
set myDB to (type:"odbc", DSN:"xy", user:"xy", password:"zy")
open database myDB
put table "anyTable" of myDB into myTable
put now into startTime
WaitFor 60, something
put now minus startTime into entry
log "something took" && entry
put first word of entry into durationTime
put formattedTime("%Y-%m-%d") into myTime
set newRow to (Name: "Test", Group: "someGroup", Environment: "bla", ExecutionDateTime: myTime, ExecutionDuration: durationTime, Id: 1)
add record newRow to myTable
close database myDB
Since I need to run these tests in different releases I’d like to use the ID column of MyTable to store in the release number. I have created a script X with a universal variable where I pass on the release number
Put (20) into List
Put List into universal MyVar
How do I use X in set newRow to (…Id:??) of my command without having to put it in each script separately? That is I want to call the script instead of defining a variable in each script.
Thank you in advance
I think you’re looking to pass a parameter. When you call a script that needs the release number, you pass it as part of the script call:
In myOtherScript, you declare a parameter on the first line of the script:
Note that the parameter can be called anything that you would like; it doesn’t have to have the same name as the variable containing the value that you are passing. Then inside myOtherScript, you can refer to that parameter whenever you need the release number:
You do still have to declare the parameter in any script that’s going to receive it, so it’s not a lot different in terms of the amount of code from declaring a global variable, but it is the preferred way of passing data between scripts.
Thanks Matt. I will try this.
I’d hoped I didn’t have to declare the parameter in every single script though.
Just to point something out. One of the benefits of SenseTalk is that you don’t HAVE to declare the parameters. (It’s ok to pass a parameter even if the other function doesn’t declare it).
The declaration makes it easy to refer to in your script but you can also use the param() function to refer to the parameters in order. Here’s a simple example that passes two parameters, neither is declared, but we print the second one:
myHandler "xyz", 123