SQL Delphi"参数'主题'找不到"

时间:2015-01-23 17:14:20

标签: sql delphi parameters project

我最近开始学习如何在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;

我真的希望有人可以帮我这个, 感谢。

3 个答案:

答案 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,它应该没问题