3

Delphi で IBDac を使用して Firebir db に接続しましたが、突然ソフトウェアを実行しようとすると、このエラーが発生しました

動的 SQL エラーSQL エラー コード = -206 不明な列 table1.MyField_ID 6 行目、18 列目

データセットを開こうとするとエラーが表示される

mydataset.open;

列はもちろん存在します。これは、別のテーブルへの外部キーです。なぜこのエラーが発生するのか本当にわかりません!! コンポーネントで使用したSQLは次のとおりです。

CREATE TABLE table1 (
      pkfield1 INTEGER NOT NULL,
      field_no INTEGER NOT NULL,
      fk1_id INTEGER NOT NULL,
      fk2_id INTEGER,
      MyField_ID INTEGER,
      bfield INTEGER);     

  select 
        table1.pkfield1,
        table1.field_no,
        table1.fk1_id,
        table1.fk2_id,
        table1.MyField_ID, <<<------- the field that cause the error
        table1.bfield,
        table2.desc1,
        table2.desc2,
        table2.desc3
    from table2
    right outer join table1 on (table2.pk1_id = table1.fk1_id)
    Order by table1.fk1_id, table1.field_no desc

お知らせ下さい

ありがとう

4

1 に答える 1

4

キャメルケースを使用すると、データベース層が自動的に引用しているように見えるため、ケースを変更してください。

Firebird 2.5 データベースで簡単にテストすると、次のようになります。

SQL> select t1.usuario, t1.NoExisto from sg_usuario t1;
Statement failed, SQLSTATE = 42S22
Dynamic SQL Error
-SQL error code = -206
-Column unknown
-T1.NOEXISTO
-At line 1, column 23


SQL> select t1.usuario, "t1.NoExisto" from sg_usuario t1;
Statement failed, SQLSTATE = 42S22
Dynamic SQL Error
-SQL error code = -206
-Column unknown
-t1.NoExisto
-At line 1, column 34

ご覧のとおり、データベース エンジンは、引用符を使用して SQL クエリを取得した場合にのみ、キャメル ケースでエラーを生成します。

myfield_idを試すか、フィールド名に正しい大文字と小文字を使用することをお勧めします。

    select 
        table1.pkfield1,
        table1.field_no,
        table1.fk1_id,
        table1.fk2_id,
        table1.myfield_id, 
        table1.bfield,
        table2.desc1,
        table2.desc2,
        table2.desc3
    from table2
    right outer table1 on (table2.pk1_id = table1.fk1_id)
    Order by table1.fk1_id, table1.field_no desc
于 2012-11-23T15:10:28.310 に答える