intouch中如何显示数据库表的内容

dayong657 2014-11-12 07:48:52
如题,搞了一下午也没有成功。很简单的一个问题,intouch项目中控件是MSFlexGrid或者DataGrid。
用了两种方法都不行,一种是调用SQLConnect()连接数据库,再调用SQLSelect(),选择完成后不知道怎么给Grid控件的数据源属性赋值,找也找不到。
脚本如下:
ResultCode=SQLConnect(ConnectionID,"DSN=myDatabase;DB=gprsdb");
IF ResultCode==0 THEN
ErrMsg="No connect error";
ELSE
ErrMsg=SQLErrorMsg(ResultCode);
ENDIF;
ResultCode= SQLSelect( ConnectionID, "temptable","hisTabList" , "","" );

第二种方法从网上找来的,跟vb里使用几乎一样。
脚本如下:
{===建立与MS SQL数据库Pubs连接(用户名:sa,密码:)===} 
DIM connect AS MESSAGE;
DIM strSQL AS MESSAGE;
DIM ColIndex AS INTEGER;
DIM RowIndex AS INTEGER;
DIM ColCount AS INTEGER;
OLE_CreateObject(%myCon,"ADODB.Connection");
OLE_CreateObject(%myRs,"ADODB.Recordset");ADO{connect="Provider=SQLOLEDB; Data Source=E8INHLY0QRBITBZ; Initial Catalog=gprsdb; User Id=; Password=; ";}
connect="driver={sql server};server=E8INHLY0QRBITBZ;database=gprsdb;uid=;pwd=";
%myCon.Open(connect);
strSQL="SELECT top 50 record_time from historytable";
%myRs.Open(strSQL,%myCon,3,3,1);
#MSFlexGrid1.DataSource=%myRs;

运行提示MSFlexGrid1.DataSource赋值属性不对,我都无语了。。。求高人指点。!
...全文
2642 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
maanran123 2015-09-12
  • 打赏
  • 举报
回复
好高兴,本人最近做出来了!!!楼主参考一下吧! 用的ACCESS数据库,数据记录到表table2中,在把表中的最新10条记录,在控件MSFlexGrid1中显示出来。 SQLConnect( ConnectionId, "DSN=intouch_access" ); SQLCreateTable( ConnectionId, "table2", "" ); SQLInsert( ConnectionId, "table2", "access_database" ); SQLSelect( ConnectionId, "table2", "access_database_1", "", "" ); NumRows=SQLNumRows( ConnectionId ); SQLDisconnect( ConnectionId ); #MSFlexGrid1.cols=10; #MSFlexGrid1.rows=11; #MSFlexGrid1.row=0; #MSFlexGrid1.col=0; #MSFlexGrid1.Text= "序号"; #MSFlexGrid1.CellAlignment=4; #MSFlexGrid1.col=1; #MSFlexGrid1.Text= "日期"; #MSFlexGrid1.CellAlignment=4; #MSFlexGrid1.col=2; #MSFlexGrid1.Text= "时间"; #MSFlexGrid1.CellAlignment=4; #MSFlexGrid1.col=3; #MSFlexGrid1.Text= "型号"; #MSFlexGrid1.CellAlignment=4; #MSFlexGrid1.col=4; #MSFlexGrid1.Text= "电压"; #MSFlexGrid1.CellAlignment=4; #MSFlexGrid1.col=5; #MSFlexGrid1.Text= "频率"; #MSFlexGrid1.CellAlignment=4; #MSFlexGrid1.col=6; #MSFlexGrid1.Text= "空载电流"; #MSFlexGrid1.CellAlignment=4; #MSFlexGrid1.col=7; #MSFlexGrid1.Text= "空载功率"; #MSFlexGrid1.CellAlignment=4; #MSFlexGrid1.col=8; #MSFlexGrid1.Text= "耐压值"; #MSFlexGrid1.CellAlignment=4; #MSFlexGrid1.col=9; #MSFlexGrid1.Text= "是否合格"; #MSFlexGrid1.CellAlignment=4; OLE_CreateObject(%table2Cn,"ADODB.Connection"); %table2Cn.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\test.mdb; " ); DIM strSQL AS MESSAGE; DIM ColIndex AS INTEGER; DIM RowIndex AS INTEGER; DIM ColCount AS INTEGER; OLE_CreateObject(%table2Rs,"ADODB.Recordset"); strSQL="Select * from (Select top 10 * from table2 order by 序号 desc) order by 序号 asc"; %table2Rs.open(strSQL,%table2Cn); IF %table2Rs.EOF==0 THEN %table2Rs.Movefirst(); ELSE ErrorMsg="Error!"; ENDIF; IF %table2Rs.EOF==0 AND NumRows <= 10 THEN ColCount=10; RowCount=NumRows; FOR RowIndex=1 TO NumRows #MSFlexGrid1.Rows=RowCount+1; #MSFlexGrid1.row=RowIndex; FOR ColIndex=0 TO ColCount - 1 #MSFlexGrid1.col=ColIndex; %Field=%table2Rs.Fields.Item(ColIndex); #MSFlexGrid1.Text= %Field.value; #MSFlexGrid1.CellAlignment=4; NEXT; %table2Rs.Movenext(); NEXT; ENDIF; IF %table2Rs.EOF==0 AND NumRows > 10 THEN ColCount=10; RowCount=10; FOR RowIndex=1 TO 10 #MSFlexGrid1.Rows=RowCount+1; #MSFlexGrid1.row=RowIndex; FOR ColIndex=0 TO ColCount - 1 #MSFlexGrid1.col=ColIndex; %Field=%table2Rs.Fields.Item(ColIndex); #MSFlexGrid1.Text= %Field.value; #MSFlexGrid1.CellAlignment=4; NEXT; %table2Rs.Movenext(); NEXT; ENDIF; %table2Rs.close(); %table2Cn.close(); OLE_ReleaseObject(%table2Cn); OLE_ReleaseObject(%table2Rs);
  • 打赏
  • 举报
回复
[code=java]
DIM HisSQL1 AS MESSAGE; 
DIM HisSQL2 AS MESSAGE; 
DIM HisSQL3 AS MESSAGE; 
DIM NumRows AS INTEGER;
DIM i AS INTEGER;

HisAlrStart = #DT1.Value;
HisAlrEnd=#DT2.Value ;

HisSQL1 ="SELECT [AlarmName],[AlarmStartTime],[AlarmEndTime],[AlarmTimeLength],[AlarmType],[AlarmValue],[VariateName],[VariateRemark] ";
HisSQL2 = " FROM [PA3_CCR].[dbo].[AlarmList]";
IF #ComboBox1.Text == "全部" THEN 
    HisSQL3 = " where AlarmStartTime >= '"+HisAlrStart+"' and AlarmStartTime < '"+HisAlrEnd+" ' order by AlarmStartTime";
ELSE 
    HisSQL3 = " where AlarmStartTime >= '"+HisAlrStart+"' and AlarmStartTime < '"+HisAlrEnd+"' and VariateRemark = '"+#ComboBox1.Text+"' order by AlarmStartTime";
ENDIF;

                SQLClearStatement(ConnectionID,StatementID);
                ResultCode=SQLSetStatement( ConnectionID,        HisSQL1 ); 
                ResultCode=SQLAppendStatement(ConnectionID,  HisSQL2 ); 
                ResultCode=SQLAppendStatement(ConnectionID,  HisSQL3 ); 
                ResultCode=SQLPrepareStatement(ConnectionID,StatementID);  
                ResultCode=SQLExecute(ConnectionID,"AlarmView",StatementID);
                why=SQLErrorMsg(ResultCode); 
                IF   ResultCode==0 THEN
                      NumRows=SQLNumRows(ConnectionID);              
                      #FpsControl3.SetRowMaxs(NumRows);
                      SQLFirst( ConnectionID );
                      IF   NumRows>0 THEN
                                   FOR i=1 TO NumRows
                                           #FpsControl3.SetText(1, i,  AlarmStartTime);
                                           #FpsControl3.SetText(2, i,  AlarmEndTime);
                                           #FpsControl3.SetText(3, i,  AlarmName);
                                           #FpsControl3.SetText(4, i,  PLCAdd);
                                           #FpsControl3.SetText(5, i,  AlarmVal);
                                           #FpsControl3.SetText(6, i,  "状态报警");

                                           #FpsControl3.SetText(8, i,  DevTag);
                                          ResultCode = SQLNext(ConnectionID); 
                                   NEXT;
                             ELSE #FpsControl3.SetText(-1, -1,  "");
                        ENDIF;
                        HisAlrNum = "有 "+StringFromIntg(NumRows,10)+" 条报警!";
                  ENDIF;
                  SQLEnd(ConnectionID);
                  ResultCode=SQLClearStatement(ConnectionID, StatementID);       
[/code]
zongshuai0609 2015-05-10
  • 打赏
  • 举报
回复
你的问题搞定了??我也遇到了这个问题
dayong657 2014-11-13
  • 打赏
  • 举报
回复
好吧 没有其他办法了
还在加载中灬 2014-11-12
  • 打赏
  • 举报
回复
从在一些非(常见平台)上开发的经验上看,只能勤找资料,不过资料不好找,因此只能多试,没有其它的办法~~
dayong657 2014-11-12
  • 打赏
  • 举报
回复
引用 1 楼 ky_min 的回复:
不清楚intouch 也许数据源不支持DataSet
恩 不知道怎么做了 感觉很简单的问题 到这个组态软件里 一塌糊涂
还在加载中灬 2014-11-12
  • 打赏
  • 举报
回复
不清楚intouch 也许数据源不支持DataSet

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧