问题描述
我正在尝试将数据从TwinCat 2程序插入sql Server数据库中。激活触发器后,出现以下错误:262145
racer_name : STRING(256);
racer_name := 'CS1';
FB_FormatStringC1_lap_db(
sFormat:='INSERT INTO demo VALUES (%s,%D,%D)',arg1:= F_STRING(racer_name),arg2:= F_DWORD(C1_Lap_Minutes),arg3:= F_DWORD(C1_Lap_Seconds),bError=>,nErrId=>,sOut=>sInsertStringC1_lap_db );
FB_DBRecordInsertC1_lap_db(
sNetID:=,hDBID:=1,sInsertCmd:=sInsertStringC1_lap_db,bExecute:= dummy,tTimeout:=T#30s,bBusy=> bBusyInsert,bError=> bErrInsert,nErrID=> nErridInsert,ssqlState=> );
与服务器的通信正在运行,因为我尝试仅导入整数,并且可以正常工作。
也许我没有正确格式化字符串变量?
谢谢。
解决方法
这是您的查询:
INSERT INTO demo VALUES (%S,%D,%D)
如果表有4个,您将提供3列用于插入。假设id
是自动生成的,则可以通过枚举目标列来明确地不提供它:
INSERT INTO demo (racer,minuteslap,secondslap) VALUES (%S,%D)
这是为什么始终在insert
语句中枚举目标列是最佳实践的原因之一。