2010-12-06 5 views
7

私は選択して更新するために接続する必要があるParadox 5.xテーブルを持っています。 私はOLEDBConnectionを使用しています。私は何の問題もないテーブルから選択C#を使用してParadoxテーブルにクエリを挿入するときの問題

。 私はエラーを得たnamesiハードコードされたフィールドを入力したときに、私は、問題に会ったテーブルに挿入しようとしているとき: INSERT INTOステートメントには、次の未知のフィールド名が含まれています... ので、私はOleDbDataReader.GetName(...)を使用フィールド名を取得する。 今私はテーブルに挿入するためにテーブルからrecivedされたフィールド名を使用し、私はまだ同じエラーが発生します。

私はこの問題は、フィールド名であると思う: 'トラック#1シリアル番号' テーブル名: '車'

I "は、[]を使用してみました"。[]、および [。」 "]。

私は、ボーランドのエンジンの必要性について読みますが、これは問題であるイムわかりませんでした。 ありがとうございます。

- =ノーム= -

p.sは、私は私が接続する必要があり、そのcastumerのDBので、テーブルの名前を変更することはできません。

イムは、私が使用してC#のコードを追加:

private static string createInsertQueryVehicle(string i_VehicleNumber, string i_VehicleMFG, string i_Truck1SerialNo, string i_Truck2SerialNo, string i_Truck3SerialNo) 
     { 
      string tryout = string.Format("INSERT INTO {0} ([{6}], [{7}], [{8}], [{9}], [{10}]) VALUES(RIGHT('{1}',10),'{2}','{3}','{4}','{5}')", 
       TableName, Vnum, Vinfo, T1Serial, T2Serial, T3Serial, VnumFieldName, VinfoFieldName, T1SerialFieldName 
       T2SerialFieldName,T3SerialFieldName); 
      return tryout; 
     } 

を最後にトライアウトを保持している:

INSERT INTO Vehicles ([Vehicle Number], [Vehicle Mfg], [Truck #1 Serial Number], [Truck #2 Serial Number], [Truck #3 Serial Number]) VALUES(RIGHT('000000010001525',10),'קרונות משא','ר40011_1','ר40011_2','') 

EDIT: ちょうど最後に私の解決策を追加したい:終わり 最適なソリューションを私はアクセスポイントを接続ポイントとしてパラドックステーブルにリンクして使用していましたが、最後にアクセスデータベースとして扱いました..... 誰かを助けることを願っています。

+1

これはあなたが探しているかもしれません:http://stackoverflow.com/questions/116163/ delphi-paradox-db-field-name-issue-spaces-in-field-name – Kell

+0

ソースコードを投稿できますか? – Gabe

+0

ケル:私はそれがインサートクエリーにも当てはまるかどうかは分かりません。私はこの投稿を見て、このバージョンを不幸にも私はまだ同じ例外を取得しようとしました。 – Bjorkson

答えて

0

あなたは、フィールドやテーブル名に特殊文字を持ちながら引用識別子を使用する必要があります。二重引用符(")はあなたが探しているものでなければなりません。

以外にも、私はボーランドデータベースエンジンは、このようなパラドックスとしてボーランドデータベースに対して動作するために必要であると信じています。少なくともParadoxと協力してDelphiを使用していたので、私はまだこのようなアーキテクチャを経験していませんが、私はいつも言いました。

+1

パラドックステーブルにBDEは必要ありません。 – Donnie

+0

情報をありがとう、ドニー! Borlandデータベースをもう一度使用する際には、次の要件を考慮します。 –

+0

それは私が推測する場合があります。それを全部試してみた。 – Bjorkson

0

あなたが見つけた(幾分畳み込まれた)解決策... ODBCトレースを入れ、問題の原因となっているフィールド名をAccessがどのように渡しているかを確認する価値があります。これは、パラドックスがハッシュ(#)または同様のものを受け入れるエスケープシーケンスかもしれません。ちょっとした考え。

0

Iは、番号記号(COL#)を有するカラムを用いて(表1)をテーブルを作成することによって、問題を再現することができました。同様:

The INSERT INTO statement contains the following unknown field name: 'col#'. Make sure you have typed the name correctly, and try the operation again. 

これはバグ、MicrosoftのJETプロバイダーのようだ:私はこのSQLを実行

INSERT INTO `Table1.db` (`col#`) VALUES ('a') 

私はこのエラーを取得します。

UPDATE `Table1.db` SET `col#` = col1 

私はJETプロバイダと他の問題が見つかりました:発見された唯一の回避策は

INSERT INTO `Table1.db` (`col1`) VALUES ('a') 

のように別の列に値を挿入し、COL#列を更新することです。たとえば、テーブルにプライマリキーまたはパスワードが保護されていない場合、この間違ったエラーが発生します:

Operation must use an updateable query. 
関連する問題