WebAccess SQL脚本案例
此例为真实案例,客户在bwcfg.mdb中添加了数据表,叫MYODBCConnetor,表内各字段对应WebAccess点值,且都是常数点,其中一个字段叫“料号”,对应常数点“料号”。客户做了一个运行画面,如图。
期待效果是现场操作员修改每个栏位之后,按下按钮时,后台判断数据表中是否有料号一样的记录;如果没有,则添加一条记录到数据表中。
脚本如下:
SQLPREPARE "CONNECT SESSION 9 TO bwdb_Access"
SQLEXECUTE
SQLPREPARE "USE SESSION 9"
SQLEXECUTE
SQLPREPARE "DECLARE C1 CURSOR FOR SELECT COUNT(*) FROM MYODBCConnetor WHERE 料号='[GETVAL 料号常数点]'"
SQLEXECUTE
SQLPREPARE "OPEN C1"
SQLEXECUTE
SQLPREPARE "FETCH NEXT C1 INTO PNCount"
SQLEXECUTE
SQLPREPARE "CLOSE C1"
SQLEXECUTE
SQLDIRECT "DISCONNECT SESSION 9"
if {[GETVAL PNCount]==0} then {
MCREXEC 新增料号记录.mcr
}
if {[GETVAL PNCount]!=0} then {
MCREXEC 新增料号记录错误提示.mcr
}
其中:
1.
连接数据库
a)
首先要连接的数据库必须为一个数据源;
b)
先预定一个连接点名,如“SESSION 9”,用户自行定义,使用以下语句来使SESSION 9连接点连接上数据库;
SQLPREPARE "CONNECT SESSION 9 TO bwdb_Access"
SQLEXECUTE
c)
调用以下语句连使用SESSION 9连接点;
SQLPREPARE "USE SESSION 9"
SQLEXECUTE
2.
查询数据表中对应记录数
a)
组织数据表中“料号”字段为当前“料号常数点”点值的记录数查询命令;
SQLPREPARE "DECLARE C1 CURSOR FOR SELECT COUNT(*) FROM MYODBCConnetor WHERE 料号='[GETVAL 料号常数点]'"
SQLEXECUTE
b)
执行语句;
SQLPREPARE "OPEN C1"
SQLEXECUTE
c)
将查询到的记录数赋值到常数点PNCount中;
SQLPREPARE "FETCH NEXT C1 INTO PNCount"
SQLEXECUTE
d)
关闭语句;
SQLPREPARE "CLOSE C1"
SQLEXECUTE
3.
断开连接
SQLDIRECT "DISCONNECT SESSION 9"
4.
根据查询到的结果做不同处理
if {[GETVAL PNCount]==0} then {
MCREXEC 新增料号记录.mcr
}
if {[GETVAL PNCount]!=0} then {
MCREXEC 新增料号记录错误提示.mcr
}
数据保存功能在一个后台程序中实现,由“新增料号记录.mcr”触发,此处不做讨论。
楼主最近还看过