当前位置: 主页 > PLC控制

wincc脚本将数据写入SQL不成功

C脚本可以写入浮点数,但无法写入字符串,VB脚本估计是连接数据库语句问题,数据库用的windows授权连接,怎么设定VB的UID和PWD,C脚本怎么写入字符串?
VB脚本:
SubOnClick(ByvalItem)
‘PrivatecnASADODB.Connection
‘PrivatersAsADODB.Recordset
‘PrivateSubinsertData(nowValueAsDouble)
Dimdatabase,server
DimSTrcn,cn,rs,com
Dimis_SQL
DimDateTime,Login,Te
Setcn=CreateObject("ADODB.connection")
Setrs=CreateObject("ADODB.Recordset")
Setcom=CreateObject("ADODB.Command")
DateTime=Now
SetTe=HMIRuntime.Tags("S7$Program(3)/IVIG_BATCHNO.BATCH_NO01")
Te.Read
Setserver=HMIRuntime.Tags("@ServerName")
server.Read
Is_SQL="insertintoguf(test2)values(‘"&Te.Value&"’)"
‘server=server.Value&"\wincc"
‘database="test"
strcn="Provider=MSDASQL;DSN=test;UID=;PWD="
‘strcn="provider=SQLOLEDB.1;DRIVER=SQLSERVER;SERVER="&SERVER&";DATABASE="&database&";UID=;PWD="
‘strcn="Driver={SQLServer};Server=.\WINCC;uid=;pass=;database=test"
‘strcn="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=test;DataSource=(local)\\\wincc"
cn.ConnectionString=strcn
cn.Open
com.ActiveConnection=cn
com.CommandText=Is_SQL
com.Execute
Setcom=Nothing
‘HMIRuntime.DataSet.Add"cn",cn
cn.Executeis_SQL
cn.Close
Setrs=Nothing
Setcom=Nothing

EndSub

C脚本:
#include"apdefap.h"
voidOnClick(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName)
{

__object*cn=NULL;
__object*rs=NULL;


{
char*connstr="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=test;DataSource=(local)\\\wincc";
charsql[80];
charsql1[80];
charsql2[80];

floatspd;//testtag
char*test;
cn=__object_create("ADODB.Connection");
rs=__object_create("ADODB.RecordSet");
cn->ConnectionString=connstr;
cn->Open(connstr);

spd=GetTagFloat("TE201101/AI.U");
test=GetTagChar("S7$Program(3)/IVIG_BATCHNO.BATCH_NO01");
if(cn->State==0)

{
MessageBox(NULL,"databaseconnectionfail!","warning",MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);
}

sprintf(sql2,"insertintoguf(login)values(%f)",Time);
rs->open(sql2,cn);
sprintf(sql,"insertintoguf(gw1)values(%f)",spd);
MessageBox(NULL,sql2,NULL,MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);
sprintf(sql1,"insertintogufvalues(‘%s’)",test);
rs->open(sql,cn);
MessageBox(NULL,sql,NULL,MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);
if(cn->State!=0)

{
MessageBox(NULL,"databaseconnectionsecessful!","congratulations",MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);
rs->open(sql,cn);
rs->open(sql1,cn);
rs->open(sql2,cn);
//printf("\r\n%s",rs->Field("Temp"));
rs->close();
cn->Close();

__object_delete(rs);

__object_delete(cn);

}
}
}

最佳答案

vbs的资料参考:
WinCC/连通性软件包V7.4
htTPs://support.industry.siemens.com/cs/cn/zh/view/109736226
WinCC数据开放性
https://support.industry.siemens.com/cs/cn/zh/view/78682604
WinCC、Excel、VBA、脚本、连通性软件包
https://support.industry.siemens.com/cs/cn/zh/view/71676391
WinCC数据报表实现方法介绍
https://support.industry.siemens.com/cs/cn/zh/view/78668993
如何从SQL数据库中通过趋势归档输出变量?
https://support.industry.siemens.com/cs/cn/zh/view/44240726

提问者对于答案的评价:
提供的资料很全,不像有的人,全篇主观观点,毫无建设性,多谢!我阅读资料发现是我VB中调用ADO时,少写了一次连接语句,C中无法写入字符串还是无法解决,再研究一下。

最佳答案作者回复:
很高兴帮到你
我c语言水平也不行,有问题可以论坛交流

  • 关注微信

猜你喜欢

微信公众号