我正在将一个使用 Accuracer 数据库的旧项目转换为 SQL Server。
此查询(在 accuracer 下)执行正常:
procedure TForm1.Prebaci1Click(Sender: TObject);
begin
DataModule2.UniQuery1.Close;
DataModule2.UniQuery1.SQL.Clear;
DataModule2.UniQuery1.SQL.Text :='UPDATE TWITTER SET TWIT = TWIT + " *** prenešeno z : " +(ZA_DATUM),ZA_DATUM=:a1 where ID=:a2';
DataModule2.UniQuery1.ParamByName('a1').asDate :=cxDateNavigator1.Date;
DataModule2.UniQuery1.ParamByName('a2').asInteger := cxGrid1DBTableView1.DataController.Values[cxGrid1DBTableView1.DataController.FocusedRecordIndex,0];
DataModule2.UniQuery1.ExecSQL;
DataModule2.UniStoredProc1.Refresh;
end;
但是在 SQL Server 中它不起作用 - 我得到这个错误:
无效的列名 '*** 上传者:'。
我究竟做错了什么 ?需要特殊括号的东西?
您已经被告知需要在 SQL Server 中使用单引号。但我认为更好的解决方案是使用参数。
请注意,您还需要将( ) 列转换为字符串:datetime
ZA_DATUM
...
UniQuery1.SQL.Text :='UPDATE TWITTER SET TWIT = TWIT + :a0 + CAST(ZA_DATUM AS varchar(100)), ZA_DATUM=:a1 where ID=:a2';
UniQuery1.ParamByName('a0').asString := ' *** prenešeno z : ';
...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句