• ベストアンサー

Accessのデータについて

Accessについて質問です。 フィールド数が250程のテーブルのフィールドサイズを変更すると 保存の際に定義されているフィールドが多すぎますとエラーになります。 なぜフィールドサイズを変更しただけなのにフィールドが増えたことになるのですか?(このエラーは最適化をするとでなくなります。) また、フィールドサイズを変更して保存するだけでAccessのファイルサイズが大きくなるのはなぜですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.1

>保存の際に定義されているフィールドが多すぎますとエラー Accessのテーブル内のフィールド数の上限は255フィールドです。 例えばフィールドのプロパティを変更するとAccessは変更後の設定が適用された新しいフィールドを内部的に作成し変更前のフィールドを別に保持します。保存するまで実際には置き換わりません。 この変更前内部フィールドもフィールド数の制限に数えられるため表面的には255フィールドを超えていないように見えても内部では超えているということが起こり得ます。 質問を例にとれば フィールド数が255のテーブルの内の1フィールドをサイズ変更すると 254フィールド+フィールドサイズ変更フィールド+フィールドサイズ変更前フィールド=256 となります。内部カウントは256になりテーブルの仕様の255フィールドの制限をオーバーしてしまいます。そのため保存時にエラーが発生します。最適化を行えば内部カウントも最適化されます。 フィールドサイズが200を超えそうならテーブルの構成を考え直す必要はあると思います。 >フィールドサイズを変更して保存するだけでAccessのファイルサイズが大きくなる Accessは最適化し管理しないでいるとどんどんファイルサイズが大きくなっていきます。これはAccessではいたって普通の事です。 フィールドサイズを変更した元のフィールドがゴミデータとして残ればファイルサイズも増えます。 オプション設定で[終了時に最適化]をオンにすればいつも終了時に最適化してくれます。

関連するQ&A

  • Access2002でデータのインポートで悩んでいます。

    Access2002を初めて使います。 ファイルメーカーで固定長のデータ出力が出来ないので ファイルメーカーのデータを一旦 DBF形式で吐き出して Access2002に取り込みました。 件数は20万件ほどで、フィールドの数は20ほどです。 インポートは成功して、テーブルの作成はできましたが 固定長のフィールドサイズで出力するためにフィールド サイズの変更を行おうと考えています。 例えば1バイトのデータサイズを14バイトに変更して フィールド定義を保存しようとした場合に、メモリ エラーを起こしました。 1フィールドのデータを1バイトを14バイトに拡張した だけで、こんなエラーが起きるとは今まで思っていなかったので、こんなしょぼいとは思っていませんでした。 Access2002って負荷の多い処理には向いていないのでしょうか? 後からフィールドのサイズの変更を行うとこのようなエラーが発生するので、あらかじめフィールド定義だけを行ったテーブルを作り、そこに流しこむ方法を考えていますが、その方法がわかりません。 もし、その方法があればそれで解決しよいと考えています。 ちなみにマシンは WindowsXP Proでメモリは3Gで ハードディスクの空き容量は1G残っています。 ファイル自体は20MBほどしかありません。 これで、メモリエラーが出るなんて信じられません。

  • Accessでわからない事があります

    Accessをつかってデータベースを作っています。 テーブルもいくつか作り、それぞれの入力フォームやレポートもつくりました。しかしもとのテーブルに追加したいフィールドがあるのですが、エラーメッセージ「定義されているフィールドが多すぎます」とでて、新しいフィールドを保存できません。ただ、別名で保存する事は出来ます。しかし別名で保存すると、クエリやレポートやらをもう一度作り直さないといけません。(少なくとも今の私のAccessに対する知識ではそれしか出来ないと思われます。)別名では保存できて、もとのテーブルで保存できないのは、なにか設定を変えればいいのでは?と思っているのですが、どなたか教えてください。結構な大作なので、もう一度テーブルの段階から作り直すのはやや気がめいってしまいます。どなたか助けてください。宜しくお願いします。

  • ACCESSのデータサイズがどんどん増えて困ってます。

    Microsoft Access97 を使っていますが。 イントラネット上のShareフォルダにmdbを置いて、共有モードで複数の人間で、情報を打ち込んでいるのですが、最初に置いた状態では、ファイルサイズは2MBくらいだったのですが、1日経って見てみると、7MBになっています。 テーブルのレコード数は、6フィールドほどのテーブルで100件ほどしか増加していないはずなのですが、どういう事でしょう? 何か、変更履歴のような物が何処かに出来て、ファイルサイズを食っているんでしょうか? メンテナンスを掛ければ改善したり、設定で改善したり出来ないでしょうか?? 詳しい方、ぜひお願い致します。

  • アクセスが重い!!

    アクセス超初心者です。 フィールド数12、レコード数100程度のファイルがあります。非常に少ないレコード数なのですが、ファイルの重さは200MBです。 一体何が原因か分からなかったので、テーブル、クエリなど、中にあったものすべてを削除してみたのですが、ほぼ全くファイルのサイズが変わりません。 他の似たようなファイルでは、レコード数が1000以上あっても2MB程度の重さです。 意味のよく分からない質問だとは思いますが、よろしくお願いいたします。 アクセス2002です

  • ACCESS2000でExcelから特定フィールドをインポートしたい

    ACCESS2000でExcelから特定のフィールドをインポートしたいのですが、 うまくいきません。 Excelはフィールド数が254フィールドもあり、 テーブルにインポートしたいフィールド数は30フィールドです。 Excelでは特定フィールドをインポートすることができないようなので、 一時テーブルに全てのフィールドをインポート後 必要なフィールドだけ取り出そうとやってみたのですが、 以下のコードを実行すると、13のフィールドが「解析不能なフィールド」と インポートエラーが出てしまいます。 DoCmd.TransferSpreadsheet acImport, 8, "TEMPテーブル", "c:\data.xls" また、Excelファイルをcsv形式に変換して、インポート定義を作る方法も やってみたのですが、インポート定義作成時に 「フィールド'ID'はインポートまたはエクスポートしようとしている テーブルまたクエリに存在しません」 というエラーが出てしまいます。 どうしたらインポートできるでしょうか。よろしくお願いします。

  • access フィールドのサイズ(文字数)変更

    とても単純な質問で申し訳ないのですが、 Access2000でつくったテーブルにデータを入力しようとしたら、 「指定されたデータ量がフィールドサイズを超えています。」と表示されます。文字数を変更すればよいことですが、デザインビューでプロパティをみても文字数を変更するところがありません。(フィールドのサイズは変更できるのですが)。どのようにすればよいか教えていただけますか?

  • ACCESSの最適化でエラー発生

    教えてください。 ACCESSのDBを最適化したら、DB内のテーブルにMSysCompactErrorというテーブルができ、中身をみると以下のようなメッセージが入っていました。ここ1~2年問題なく、週に1回バックアップを取るときに最適化してきましたが、こんなエラーは初めてです。最適化する前のDBのアクセスは問題なく動いてますが(全てのデータを使ってるわけではないですが)原因がわからず困っています。 DBのファイルサイズは最適化前449.5MB→後351.1MB(先週は418.664MBでした。)でレコード数は4,227,841件テーブル数3個です。 最適化で直接エラーメッセージが表示されたわけでなく、終わってファイルサイズがいつもより小さいので気がつきました。 ErrorCode ErrorDescription ErrorRecid ErrorTable -1003 フィールド 'Description' が見つかりませんでした。 xxTBL -1003 フィールド 'Description' が見つかりませんでした。 xxTBL -1611 フィールド 'Description' が見つかりませんでした。 xxTBL -1003 フィールド 'Description' が見つかりませんでした。 xxTBL -1003 フィールド 'Description' が見つかりませんでした。 xxTBL -1003 フィールド 'Description' が見つかりませんでした。 xxTBL -1003 フィールド 'Description' が見つかりませんでした。 xxTBL -1611 フィールド 'Description' が見つかりませんでした。 xxTBL -1003 フィールド 'Description' が見つかりませんでした。 xxTBL -1611 フィールド 'Description' が見つかりませんでした。 xxTBL -1003 フィールド 'Description' が見つかりませんでした。 xxTBL -1605 フィールド 'Description' が見つかりませんでした。 xxTBL

  • <アクセスのデザインビューでの設定>

    <アクセスのデザインビューでの設定> こんにちわ。 エクセルで作成したデータをアクセスにインポートして作成したテーブルがあります。 そのフィールドに日にちを入れるところがあります。 2010/7/5と表示されるように,デザインビューで設定しましたが, 「定義されているフィールドが多すぎます」とエラーがでて保存できませんでした。 解決方法はありますでしょうか。 よろしくお願いします!! (行った,設定方法) 1)テーブルをデザインビューで開く。 2)日にちのフィールドのデータ型を「日付/時刻型」へ 3)標準タブの書式を「日付(S)」としました。 4)保存→エラー (アクセスのバージョン)  アクセス98 (PCのOS)XP

  • エクセルのデータをアクセスのテーブルにインポート

    エクセルのデータをアクセスのテーブルにインポートしたくて、 アクセスから外部データのインポートでエクセルを指定してるのですが ************************************************************************ ワークシート インポートウィザード インデックス、主キー、またはリレーションシップで重複する値が生成されてるため、 テーブルを変更できませんでした。 重複する値のあるフィールドの値を変更するか、インデックスを削除してください。または重複する値を使用できるように再定義してください。 ************************************************************************ になってしまいます。 エクセルの列名を見ても重複していないし(COUNTIF関数で確認しました) アクセス側のウィザードでインデックスはどこのフィールドにもつけてないし、 「主キーを設定しない」もしくは「主キーを自動的に設定する」にしているのに、何をやっても上記のエラーがでます。 ググっても同じようなエラー内容が見つからないのですが、どうしたらいいでしょう? ヴァージョンはエクセルは2007、アクセスは2010です。バージョンの相違が原因でしょうか?

  • ACCESS2000での大量データ処理

    CSVファイルの情報をACCESS2000にインポートして集計処理をしたいと考えてます。 CSVファイルの構成は、20フィールド(全て文字属性)で1レコード、1400レコードで1件となっております。(この仕様を変更する事は出来ないのが条件です。) 言い直せば、1名分の情報は1400レコードあるとなります。但し、集計に使用する情報はその内の400レコードであり、1000レコードは不要です。 処理する人数は3万件ぐらいあります。 (1)1400レコード×3万件の情報をインポート出来るのでしょうか?    テーブル制限の1Gを超えないのでしょうか(テーブルサイズの参照方法も?) (2)CSVをインポートする際に、必要なフィールド400だけインポートできるVBAはあるのでしょうか?  必要不要の判別フィールドはあります。 (3)インポート後、ACCESSで400項目を1レコードにする事はできないか?255以上のフィールドのテールを処理する方法はあるのでしょうか? (4)このような大量集計を可能にするには、みなさんは何を使用しているのでしょうか? よろしくお願いいたします。