发表于:2002-01-09 12:32:00
楼主
您好,我是InTouch 的用户,现在有一个应用上的问题,急需您的解答:
问题:
使用SQL Access Manager 实现工程中的Group控制。
具体想法如下:
按下窗体中的一个按钮,实现对一组离散Tag的设置,需要设置的Tag 名子保存在数据库中,需通过多个表的关联查询获取。按下按钮时调用一个Quick Functions 函数,此函数连接数据库,关联Bindlist.使查询到的Tag名字与一个Memory Message Tag 绑定起来,使Message Tag 获得需要控制的Tag的名字。定义一个indirect 离散的Tag,将它与Message Tag联系起来(indirectTag.name=messageTag.value),
这样就可通过indirectTag设置要控制的io 离散Tag了。
Bindlist: GroupTag(memory messagetag) Tagname(表中一字段)
QuickFunction:
DIM iCnt AS INTEGER;
DIM SQLStatement1 AS MESSAGE;
ResultCode = 0;
NumRowsAll = 0;
ResultCode = SQLConnect(ConnectID,"DSN=NTTNEWDB;UID=sa;DB=komabatest;");
SQLStatement1 = "SELECT T_List_Tag.TagName AS TagName FROM T_List_GroupList INNER JOIN T_List_GroupDetail ON " ;
ResultCode = SQLSetStatement(ConnectID,SQLStatement1);
SQLStatement1="T_List_GroupList.GROUPID = T_List_GroupDetail.GROUPID INNER JOIN T_List_Tag ON T_List_GroupDetail.TAGID = T_List_Tag.TagID";
ResultCode=SQLAppendStatement(ConnectID,
SQLStatement1);
ResultCode = SQLPrepareStatement( ConnectID, SQLHandle );
ResultCode =SQLExecute(ConnectID,"Groupcontrol",SQLHandle);
NumRowsAll = SQLNumRows(ConnectID);
FOR iCnt = 1 TO NumRowsAll
SQLGetRecord(ConnectID,iCnt);
//indirectTag.name=messageTag.value
//indirectTag.value=1(or0)
NEXT;
SQLEnd(ConnectID);
SQLDisconnect(ConnectID);
结果:提示,[Microsoft][ODBC Driver Manager]Program type out of range.
是不是不支持多个表的关联的查询呢?
如上面的:SQLStatement1 = "SELECT T_List_Tag.TagName AS TagName FROM T_List_GroupList INNER JOIN T_List_GroupDetail ON " ;
ResultCode = SQLSetStatement(ConnectID,SQLStatement1);
SQLStatement1="T_List_GroupList.GROUPID = T_List_GroupDetail.GROUPID INNER JOIN T_List_Tag ON T_List_GroupDetail.TAGID = T_List_Tag.TagID";
ResultCode=SQLAppendStatement(ConnectID,
SQLStatement1);
已经做过只和一个表的字段的绑定,结果是成功的。
SQLStatement1 = "SELECT TagName FROM T_List_Tag" ;
ResultCode = SQLSetStatement(ConnectID,SQLStatement1);
请您给予答复,很急!
Thank u so much!!