2012-10-30 57 views
1

我试图将我的Windows XP程序(Lazarus)连接到我的Ubuntu postgres服务器。Lazarus免费帕斯卡尔/德尔福 - RunError 211

当拉撒路程序运行时,它看起来编译正常,但我得到这个错误:

Project ... raised exception class 'RunError(211)'.

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

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

我从来没有看到任何输出。 这可能是什么?谢谢!

更多信息:

我已经缩小误差这一行:当OPEN语句被执行

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

    dbQuery_Menu.Open; 

异常被触发。

顺便说一下,dbQuery_Menu被定义为一个TSQLQuery组件。

笨蛋! :(

+0

postgres库是否正确连接?你使用Zeos或其他组件? – opc0de

+0

@ opc0de我能够成功连接。但是当我开始使用TSQLTransaction组件时,出现了很多错误。整个事情都是通过代码完成的。没有可视组件。 – itsols

+1

我个人对TSQLTransaction没有任何经验,但对于我使用zeos组件的工作很好。如果你不会找到任何解决方案,我建议你尝试一下 – opc0de

回答

2

经过近5天,我找到了答案。非常感谢所有thos e ho都贡献了他们的想法特别是RRUZ,RBAGuillem Vicens。还有其他相关的帖子都与获得第一个使用PostgreSQL的Lazarus程序相关。

总结。

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

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

  3. 不要依赖Lazarus文档(维基)至少与PG DB一起工作..它已经过时了。一些例子可能会有误导性。

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

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

+0

所以它就是@RRUZ和我的建议的组合,很高兴你解决了它:-) –

+0

@GuillemVicens是的,我很高兴云层真的很清晰......实际上,我不明白为什么表格和字段名称必须用引号括起来,无论如何,我很高兴它可以工作:) 非常感谢! – itsols

+0

+1用于发布解决方案。 – RBA

1

运行错误211,当你试图调用一个抽象方法出现。从FreePascal的/拉撒路运行时错误的详细信息,请选中此link

既然你说都是由代码完成,你有没有可视化组件,问题可能出在你的代码试图使用尚未重写Open方法的祖先组件。您应该能够通过使用正确的后代组成部分解决这个问题。

另一种可能性,虽然我会强烈推荐为了避免这一点,你自己重写Open方法,应该避免使用它,因为如果y你正在使用一个祖先组件,那么你可能必须重写更多的抽象方法。

HTH

+0

我将如何重写我刚刚创建的东西?除查询之外我打开的所有内容都是连接:( – itsols

+0

我认为您误解了我。 'TSQLQuery'组件类已经声明'Open'是一个抽象方法,抽象方法需要在后代类中被覆盖,因此可以使用它们。 –