我最近开始学习如何在Delphi中编写代码,因为从Python迁移到一个项目。我似乎找不到解决这个问题的方法。我现在已经在线搜索了几个小时,并且没有任何“修复”似乎正在起作用。我尝试过使用'Query.ExecSQL',我已经尝试将代码分解成段,我试图将edtSubject.Text分配给变量并以这种方式进行,在少数其他尚未修复的“解决方案”中问题。我真的很挣扎,需要一种方法来解决它,这很快,这是我的代码:
Query := TADOQuery.Create(Self);
Query.Connection := ADOConnection;
Query.SQL.Add('INSERT INTO tbl_RFI (Subject) VALUES (:Subject)');
Query.Parameters.ParamByName('Subject').Value := edtSubject.Text;
Query.ExecSQL;
我真的希望有人可以帮我这个, 感谢。
答案 0 :(得分:1)
尽管其他人说我已经在我的生产代码中多年来不时发生同样的事情。
未找到参数'ParameterName'
始终使用在代码中创建的ADO对象。我找到的最佳解决方案是http://edn.embarcadero.com/article/20420
基本上只是在引用参数之前强制ADO对象重新解析参数。
编辑:感谢Ken的反馈,我在调用ParseSQL之前首先添加了一个测试来检查参数是否存在,从而保留了99.9%的执行计划。game = Game.query.join(Round).join(
League, Round.league_id == League.id
).filter(
Game.utc_time < datetime.utcnow(),
League.id == league.id
).order_by(Game.utc_time.desc()).first()
由于添加了ParseSQL,我没有遇到问题。
答案 1 :(得分:1)
我知道迟到的回复,但我刚刚经历了同样的情况,所以如果这有助于其他人。并且它在我的案例中随机发生,“参数未找到”是一个tadocommand。程序错误输出,重新启动完全相同的事件序列,并正常工作。加载编译器,逐步完成并正常工作。设置断点,我可以看到未定义的参数。但同样,它并非每一次,它都是随机的。
所以感觉就像某种类型的计时问题。我尝试了ParseSQL命令,实际上每次出错都会导致错误。我认为命令文本正在被裁剪,但没有对此进行调查。 (这是一个相当长的命令)
无论如何,似乎我能够通过在创建tadocommand并分配sql文本后添加application.processmessages来解决这个问题。
答案 2 :(得分:0)
在设置SQl文本之前添加Query.ParamCheck:= true,它应该没问题