2012-10-30 43 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'是一個抽象方法,抽象方法需要在後代類中被覆蓋,因此可以使用它們。 –