Lazarus Free Pascal / Delphi - RunError 211

时间:2012-10-30 11:44:24

标签: delphi postgresql runtime-error freepascal lazarus

我正在尝试将我的Windows XP程序(Lazarus)连接到我的Ubuntu postgres服务器。

当Lazarus程序运行时,似乎编译正常,但我收到此错误:

  

Project ...引发异常类'RunError(211)'。

然后它终止执行(我看不到任何输出),并打开一个文件 customform.inc 。在该文件中,它会显示一个过程procedure TCustomForm.DoCreate;,其中突出显示一行:if Assigned(FOnCreate) then FOnCreate(Self);

我相信这是系统的文件之一。

我永远不会看到任何输出。 这可能是什么?谢谢!

更多信息:

我已将错误缩小到这一行:

  dbQuery_Menu.SQL.Text:='Select * From "tblMenus"';

  dbQuery_Menu.Open;

执行OPEN语句时会触发异常。

BTW,dbQuery_Menu被定义为TSQLQuery组件。

没有线索! :(

3 个答案:

答案 0 :(得分:2)

近5天后,我找到了答案。非常感谢所有人都为他们的想法做出了贡献,特别是 RRUZ RBA Guillem Vicens 。还有其他相关的帖子都与使用PostgreSQL的FIRST Lazarus程序有关。

概要

  1. 我在这里犯的最大错误是我使用了TSQLConnection组件。不要这样做。而是使用TPQConnection

  2. 一切都是通过代码完成的。我们没有使用顶部标签中的任何可拖动组件。

  3. 至少不要依赖Lazarus docs(wiki)来处理PG DB ..它已经过时了。有些例子可能会产生误导。

  4. 确保字段具有一些默认值。例如,如果布尔字段没有设置true或false(t / f),则可能会导致错误。

  5. 就是这样!我希望很多postgres + Lazarus新手会觉得这很有用。

答案 1 :(得分:1)

当您尝试调用抽象方法时,会出现

运行错误211。从有关FreePascal / Lazarus运行时错误的更多信息中查看此link

由于您说所有操作都是通过代码完成的,并且您没有可视组件,因此问题可能在于您的代码尝试使用未覆盖Open方法的祖先组件。您应该能够使用正确的后代组件来解决这个问题。

另一种可能性,虽然我强烈建议避免这个,但是要自己覆盖Open方法。应该避免它,因为如果你使用的是祖先组件,那么你可能必须覆盖更抽象的方法。

HTH

答案 2 :(得分:1)

here - http://www.network-theory.co.uk/docs/postgresql9/vol2/SQLSTATEvsSQLCODE.html - -211(ECPG_CONVERT_BOOL)这意味着主变量的类型为bool,数据库中的数据既不是't'也不是'f'。 (SQLSTATE 42804)