我正在尝试通过脚本建立与数据库的连接,这是我第一次这样做。 我能够创建以下脚本,但似乎有一个错误,每次连接不成功时,都会有一个默认的“JMP 警报”弹出窗口(参见快照)而不是包含在“尝试”函数中(我正在尝试使用导致弹出的错误数据库名称“TEST”。 有没有办法控制这个?
此外,是否有将 SQL 合并到 JMP 脚本的良好阅读材料(例如基本最佳实践)?
非常感谢!
names default to here(1);
//Standard SQL syntax string to create database connection from JMP
DB.SQL = "DSN="||"DSN_Name" ||";Description=" || "DSN_Desc" || ";
Trusted_Connection=Yes;APP=JMP;DATABASE="|| "DB_Name" || ";";
//Expression to arrange the User Interface of PODS setup
//Require users to input Database Source Name (DSN Name), Database Source Description (DSN Description) and Database Name
DB_Connection.UI = expr(
Hlistbox(spacerbox(size(5,5)),
Vlistbox(align("right"),spacerbox(size(5,5)),
vb1_1 = vlistbox(align("left"),
panelbox("Insert PODS Connection Info",
lineupbox(ncol(2),
Textbox("DSN Name : "),TEB_DSN_Name = Texteditbox("",set width(150)),
Textbox("DSN Description : "),TEB_DSN_Desc = Texteditbox("",set width(150)),
Textbox("Database Name : "),TEB_DB_Name = Texteditbox("",set width(150))
)
),
spacerbox(size(5,5)),
temp1_1 = Textbox("PODS Connection Status: ")
),
spacerbox(size(3,3)),
Test_DB_Connection.button,
spacerbox(size(3,3)),
button box(" Cancel ",currentwindow()<<CLOSE window=""></CLOSE>

尝试一些变化。
bi = Batch Interactive( 1 );
Try(
db = Create Database Connection( DB.SQL_Updated );
If( Is Missing( db ),
Print( "unable..." ) // I think this is the right way to notice the error
);
,
Print( "Unable to connect to Database" ) // I think this may not happen?
);
Batch Interactive( bi );
如果日志消息有问题,您可以使用 logcapture()。
我认为使用第一个批处理交互调用的返回值传递给第二个是推送/弹出标志的正确方法。 我认为当从按钮运行脚本时,JMP 在内部为标志推送“交互式”。
笔记从@Wendy_Murphrey . 搜索社区将产生更多关于批处理交互的历史记录。
谢谢@Craige_Hales . 我不明白“Batch Interactive ()”到底是做什么的,但它解决了这个问题。 
啊,对不起,忽略了这一点。 如果 JMP 认为它在批处理模式下运行(关于批处理数据的古老术语,没有用于用户输入的终端),那么这些警报将写入日志并进行默认响应。 否则,在交互模式下,JMP 会打开一个模态对话框以获取响应。 大多数情况下,如果按下按钮来启动某些 JSL,交互行为是正确的。 如果提交了脚本(也许是在午餐时间),您宁愿不回复“还好吗?”对话。 按钮脚本往往很短,因此启发式方法往往有效。
我建议,在未来,你首先以交互方式连接,以证明连接是可能的。 另一个好处是 JMP 将使用正确的 JSL 编写源表脚本以获得相同的结果。 您可以将此脚本复制到自己的,而不是自己编写和调试,
你好@markbailey . 是的,你是对的。 绝对是利用 Source 表脚本的一个很好的起点。 我正在探索其他方法,因为我可能需要将此脚本的使用范围扩展到我的组织中可能不熟悉 JMP 的其他潜在用户,更不用说脚本了。 感谢您的建议:)