1

Windows XP プログラム (Lazarus) を Ubuntu postgres サーバーに接続しようとしています。

Lazarus プログラムを実行すると、問題なくコンパイルできるように見えますが、次のエラーが発生します。

プロジェクト ... で例外クラス 'RunError(211)' が発生しました。

次に、実行を終了し (出力は表示されません)、ファイルcustomform.incを開きます。そのファイルではprocedure TCustomForm.DoCreate;、行を強調表示する手順を示しています。if Assigned(FOnCreate) then FOnCreate(Self);

これはシステムのファイルの 1 つだと思います。

私は出力を見ることができません。これは何ですか?ありがとう!

より詳しい情報:

エラーを次の行に絞り込みました。

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

  dbQuery_Menu.Open;

OPEN ステートメントが実行されると、例外がトリガーされます。

ところで、dbQuery_Menu は TSQLQuery コンポーネントとして定義されています。

無知!:(

4

3 に答える 3

2

抽象メソッドを呼び出そうとすると、実行エラー211が表示されます。FreePascal / Lazarusランタイムエラーの詳細については、このリンクを確認してください。

すべてがコードによって行われ、ビジュアルコンポーネントがないと言うので、問題はおそらく、Openメソッドをオーバーライドしていない祖先コンポーネントを使用しようとしているコードにあります。正しい子孫コンポーネントを使用することで、これを解決できるはずです。

もう1つの可能性は、これを避けることを強くお勧めしますが、Openメソッドを自分でオーバーライドすることです。祖先コンポーネントを使用している場合は、おそらくより抽象的なメソッドをオーバーライドする必要があるため、これは避ける必要があります。

HTH

于 2012-10-30T13:11:00.290 に答える
2

ほぼ5日後、私は答えを見つけました。特にRRUZRBAGuillem Vicensのアイデアに貢献してくれたすべての人に感謝します。他にも関連する投稿があり、すべてが最初の Lazarus プログラムを PostgreSQL で動作させることに関連しています。

概要。

  1. ここで犯した最大の間違いは、TSQLConnectionコンポーネントを使用したことです。これをしないでください。代わりに を使用しTPQConnectionます。

  2. すべてがコードを通じて行われます。上部のタブからドラッグ可能なコンポーネントは使用していません。

  3. 少なくとも PG DB を操作するために、Lazarus のドキュメント (wiki) に依存しないでください。それは時代遅れです。いくつかの例はかなり誤解を招く可能性があります。

  4. フィールドにいくつかのデフォルト値があることを確認してください。たとえば、ブール フィールドに true または false (t/f) が設定されていない場合、エラーが発生する可能性があります。

以上です!多くの postgres+Lazarus 初心者がこれを役に立つと思うことを願っています。

于 2012-10-31T05:23:57.683 に答える
1

ここから-http ://www.network-theory.co.uk/docs/postgresql9/vol2/SQLSTATEvsSQLCODE.html---211(ECPG_CONVERT_BOOL)これは、ホスト変数がbool型であり、データベース内のデータがどちらでもないことを意味します。 t'または'f'。(SQLSTATE 42804)

于 2012-10-30T14:33:12.617 に答える