143.Wincc V7.3使用c脚本将sql server数据表内容显示在ListView控件中,并添加文字
(2017-01-28 18:14:02)
标签:
winccv7.3treeviewc脚本查询数据库填入控件 |
分类: 西门子软硬件 |
新建四个内部变量,均为文本型,名字分别为CurDate、flow1、flow2、flow3。画面上放置一个treeview控件,名字为TV,放置一个按钮,在按钮的鼠标点击事件添加以下c脚本:
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char*
lpszPropertyName)
{
#pragma code("kernel32.dll")
#define GetObject GetObject
int i,RsCount;
__object *pdl=NULL;
__object *pic=NULL;
__object *tv=NULL;
__object *NodeIndex;
__object *cn=NULL;
__object *rs=NULL;
char
sql[256],Relative[10],key[10],txtDate[10];//flow1[20],flow2[20],flow3[20];
char *connstr="Provider=SQLOLEDB.1;password=sa;user id =sa;Initial
Catalog=Report;Data Source=.\\WINCC";
pdl = __object_create("PDLRuntime");
pic=pdl->GetPicture("");
tv=pic->GetObject("TV");
cn=__object_create("ADODB.Connection");
rs=__object_create("ADODB.RecordSet");
sprintf(sql,"%s","select
CurDate,'flow1:'+Convert(varchar(10),flow1),'flow2:'+Convert(varchar(10),flow2),'flow3:'+Convert(varchar(10),flow3)
from report" );
cn->open(connstr);
if (cn->State == 0)// 为0表示连接数据库不成功
else
{
rs->Open(sql,cn,3,1);
RsCount=rs->RecordCount;
rs->MoveFirst();
tv->Nodes->Clear(); //先清空
tv->Style=6; //6.直线、+/-和文本;
tv->LineStyle =1;
//treeview填入数据
//第一级节点
NodeIndex=tv->Nodes->Add();;
NodeIndex->key="Class0";
NodeIndex->Text="Report数据表";
//填入第二季节点-“日期时间”
for(i=1;i<=RsCount;i++)
{
}
//填入第三级节点flow1,flow2,flow3
rs->MoveFirst();
for(i=1;i<=RsCount;i++)
{
}
for (i=1;i<=tv->nodes->count;i++)
}
if(cn->State != 0)
__object_delete(tv);
__object_delete(pic);
__object_delete(pdl);
}