none
jet4.0を使用してExcelに更新する場合の項目数の制限について RRS feed

  • 質問

  • asp.netで開発しております。

    Provider=Microsoft.Jet.OLEDB.4.0;Data

    を使用してExcelをDBに見立ててデータを登録する際には240項目あまり登録はできました。

    しかし、登録したデータを更新する際には、「定義されているフィールドが多すぎます。」

    というエラーメッセージが返ってきます。

    Provider=Microsoft.Jet.OLEDB.4.0;Dataの制限なのでしょうか?

    ご教授お願い致します。

    2011年7月11日 10:58

回答

  • Excel, Access の制限だと思います。「定義されているフィールドが多すぎます。」をキーワードに検索すると参考になるサイトが見つかると思います。
    • 回答としてマーク 山本春海 2011年7月28日 8:13
    2011年7月11日 14:03
  • Hi:

    1. Emptyのフィールドを多数削除して試してください.

    2. cell styleも除去すること

    3. OleDbを利用してExcelのデータを読み取りなら, レジストリの設定:HKLM\Software\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows
    これもチェックしてみてください

    参照:http://support.microsoft.com/kb/281517

     


    Shadowと愉快なコード達
    Please correct me if my concept is wrong
    • 回答としてマーク 山本春海 2011年7月28日 8:13
    2011年7月18日 19:17
  • 以下を読むと、jetの制限事項のようです。

    Acc 2000:「が多すぎますフィールドの定義」のエラー メッセージの更新クエリで
    http://support.microsoft.com/kb/199076

    ちなみに、上記は原文のまま読まないと何が書かれているかわからないでしょう。原文は以下で読めます。

    ACC2000: "Too Many Fields Defined" Error Message in Update Query
    http://support.microsoft.com/kb/199076/en-us

    上記を簡単に要約すると、更新の際は127項目以下でなければならないとのことです。理由は、上記から引用すると、

    UPDATE Table SET A=B, C=D

    は、内部的に変換されて以下のように使用されるからです。

    SELECT A,B,C,D
    FROM Table

    つまり、項目数が倍になります。jet自体は255項目までしか扱えませんから、更新時は127項目以下でなければならないということです。

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク 山本春海 2011年7月28日 8:13
    2011年7月19日 1:47
    モデレータ

すべての返信

  • Excel, Access の制限だと思います。「定義されているフィールドが多すぎます。」をキーワードに検索すると参考になるサイトが見つかると思います。
    • 回答としてマーク 山本春海 2011年7月28日 8:13
    2011年7月11日 14:03
  • Hi:

    1. Emptyのフィールドを多数削除して試してください.

    2. cell styleも除去すること

    3. OleDbを利用してExcelのデータを読み取りなら, レジストリの設定:HKLM\Software\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows
    これもチェックしてみてください

    参照:http://support.microsoft.com/kb/281517

     


    Shadowと愉快なコード達
    Please correct me if my concept is wrong
    • 回答としてマーク 山本春海 2011年7月28日 8:13
    2011年7月18日 19:17
  • 以下を読むと、jetの制限事項のようです。

    Acc 2000:「が多すぎますフィールドの定義」のエラー メッセージの更新クエリで
    http://support.microsoft.com/kb/199076

    ちなみに、上記は原文のまま読まないと何が書かれているかわからないでしょう。原文は以下で読めます。

    ACC2000: "Too Many Fields Defined" Error Message in Update Query
    http://support.microsoft.com/kb/199076/en-us

    上記を簡単に要約すると、更新の際は127項目以下でなければならないとのことです。理由は、上記から引用すると、

    UPDATE Table SET A=B, C=D

    は、内部的に変換されて以下のように使用されるからです。

    SELECT A,B,C,D
    FROM Table

    つまり、項目数が倍になります。jet自体は255項目までしか扱えませんから、更新時は127項目以下でなければならないということです。

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク 山本春海 2011年7月28日 8:13
    2011年7月19日 1:47
    モデレータ
  • > つまり、項目数が倍になります。jet自体は255項目までしか扱えませんか
    > ら、更新時は127項目以下でなければならないということです。

    そうですね、今回のケースでは「登録したデータを更新する際には」という
    ことですから、それが理由ですね。勉強になりました。

     

    2011年7月20日 0:02