• ベストアンサー

ACCESS、EXCELの限界?

ACCESS、EXCELで表示できる列数の限界について教えて下さい。 VBからの操作で、Oracleのテーブルの内容をACCESSで表示する仕組みを考えています。 Oracleのテーブルの列数が350近くもあり、ACCESSで表示することができません。CSVで出力したとしても、Excelで表示できません。どちらも255以上の列は表示できないようでした(256列以上は途切れて表示される)。 となると、Oracleのテーブルの内容をVBのグリッドに表示するしか方法はないでしょうか? もしそれしか方法が無いようであれば、グリッドに表示するか、ビューか何かを使用して表示列を絞り込む(これは最終手段にしたいです)かどちらかにしなければなりません。 一番いいのは、そのままACCESSに表示することなんですが。テキストで延々と出力するだけでは、データの編集がやりにくいので困っています。 よろしくお願いいたします。 開発環境は、Win2000(SP2)、Oracle8.1.6、VB6.0(SP3)、OFFICE2000(SR-1、SP2)です。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

項目数の制限という意味では質問にかかれている通りでしょう。 以前、Accessで扱ったレコードに1レコード500項目くらいのファイルがあり、下記の様にしたのを覚えています。 [主レコードテーブル:項目B1、項目B2、・・・・、B_ID]   [Subレコードテーブル1:B_ID、項目S1-1、項目S1-2、・・・・]   [Subレコードテーブル2:B_ID、項目S2-1、項目S2-2、・・・・]   [Subレコードテーブル3:B_ID、項目S3-1、項目S3-2、・・・・] 項目のインポートは作りこみでした。(固定長ファイルの各項目の属性、桁数等の項目定義ファイルを作り、VBでそれを参照する手順) Accessの限界という意味では1Gバイトの方が切実な問題でした。 最初は全テーブルを1つのmdbで管理していましたが、日々、データ量が増え、将来的な不安があり数個に分割し定期的に不要なレコードを別テーブルに移しています。 Excelにおとす時はユーザーは全項目を見たいことは無かったので255の壁は余り意識しませんでした。 それよりもExcelの限界という意味ではレコード数でしょうか。個人的には数百件あるとExcelを使う気になりませんが現実には10000件くらいを目処にExcelにおとしたりもしています。余り多いと間違いも起きますし。扱いづらくなります。 もし項目数がExcelの列数よりも多いなら、Sheet1、Sheet2、Sheet3・・・と分割すると思います。ただ、これは実行したことはありません。 参考にならないかもしれませんが、何年か前の体験談です。(VB6.0、Access97、Excel97です)

Magoichi
質問者

お礼

nishi6さん、ご回答どうもありがとうございます。 やはり、列数の制限は外せないですよね・・・。 ACCESSやEXCELでの分割もいいかもしれませんね。特に、EXCELのSheet分割はやってみる価値がありそうです。どうもありがとうございます。 幸い、トランザクション的な扱いを考えていますので、件数は大量にはならない予定です。 255列という制限は、Office製品ならまだ何とか納得できますが、PersonalOracleでもだめだったんですよね。もちろんこれは開発用ですが。 ご回答どうもありがとうございました。

その他の回答 (3)

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.4

1:OlacleからCSV形式で出力する。 2:ExcelでVBAマクロを組む。CSVファイルをテキストとして読み込んで、複数のワークシートにまたがって出力する、みたいな感じの。 フィールドが350もあるんですから、それを幾つかのグループに分割することは可能でしょう。で、グループごとに一つのワークシートを割り当てるようにすれば、機能面でも使いやすくなるんじゃないかなぁ。 シート選択時に、前のシートで操作していたレコード位置と同期を取るようにするとかすれば、ある程度使えるようになるんじゃ… あ、でもこの方法、データの編集だけなら対処できるけど、データの追加/削除まで絡んでくると厄介ですね。

Magoichi
質問者

お礼

ARCさんどうもありがとうございます。 そうですね。最初はACCESSで行こうと思ってたのですが、EXCELでも使い勝手よさそうですね。データの追加と削除については、現在考えていません。 最初は、ACCESSかEXCELの設定で、たとえば、「列を255以上表示する」オプションみたいのがあるかと思ってたのですが、皆さんのご回答でどうやらそれは無理だということがわかりました。 ご回答どうもありがとうございました。

  • yuhki_f
  • ベストアンサー率32% (32/99)
回答No.3

ACCESS,EXCELとも列数は255あたりです。 それ以上の列数を扱うときはACCESSなら別テーブルに、EXCELなら別シートにもっていくしか方法がありません。

Magoichi
質問者

お礼

yuhki_fさんどうもありがとうございます。出勤前にお礼を書いてます。 ACCESS、EXCELともに、255柵越え計画はあきらめることにします。後はグリッド表示か、別テーブルか、別シートかにします。 ご回答どうもありがとうございました。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

どもども田吾作7です。 編集するということから想像するとマスタデータを作成しようしてるのでしょうか? Access、Excelは普段使っているから、それが一番使い勝手がいいですもんね。 しかし、そういった桁の限界もあるのは逃げ出すこと出来ない事実。。。 どうしても、一度に行いというのであれば、あえてAccess・Excelをやめてみては? >VBのグリッドに表示するしか方法はないでしょうか? とありますが、リンク形式でしているならば参考にならないかもしれませんが・・・ インポート、エクスポートはSQL一文で済みますよね?一度CSVに落として、フリーのCSVエディターを使用するなんて反則ですか?ベクターの中にありますよ。 CSVで検索したらたくさん出てくると思います。

参考URL:
http://www.vector.co.jp/vpack/filearea/win95/business/db/index.html
Magoichi
質問者

お礼

田吾作7さん、どうもご回答ありがとうございます。 やはり、どうやってもACCESSやEXCELでは無理みたいですね・・・。情報ありがとうございます。 フリーのCSVエディタは早速明日(今日)試してみます。そうですね。最終的には使い勝手の話になるかと思いますので、だめだったら、VB標準のグリッドか、文化オリエントのTrueDBGridにでも埋め込んでみます。 話はそれますが、エディタってとても個人色強いですよね。私はいろいろ使ってみましたが、今はEmEditor3で落ち着いています。それが、VBとかアプリに組み込まれると、結構みんな使ったりするんですよね。面白い現象です。 ご回答どうもありがとうございました。

Magoichi
質問者

補足

私の質問分の開発環境に一部間違いがありました。 >開発環境は、Win2000(SP2)、Oracle8.1.6、VB6.0(SP3)、OFFICE2000(SR-1、SP2)です。 ↓ 開発環境は、Win2000(SP2)、Oracle8.1.6、VB6.0(SP5)、OFFICE2000(SR-1、SP2)です。 です。ほとんど影響はないと思いますが、念のためにです。お願いします。

関連するQ&A

  • AccessからOracleへの外部結合

    AccessのテーブルからOracleのテーブルに外部結合した場合、遅くなるのはなぜでしょうか。対策はありますか。 AccessのテーブルからOracleのテーブルとほぼ同じ内容のサーバー上のAccessのテーブルに外部結合しても遅くない(数秒)ですがOracleのテーブルに外部結合すると30秒以上かかります。Accessの結合元のテーブル約3万件、Orcaleのテーブル約25万件です。 Oracleのテーブルに内部結合した場合は数秒です。 Access2000/Oracle8.0.5です。

  • エクセルからアクセスのテーブルにデータ追加したい

    Excel(xls)からAccess(mdb)のテーブル(出力)にデータを追加できるVBAコードを教えてください。 条件 Accessの名前と場所 C:\SP3\Print.mdb テーブル名 (出力) (履歴) テーブル構造 (出力) (履歴)ともに、フィールド1~4、ID 履歴テーブルのIDは、カウントアップであり、プリント後のデータが格納される。エクセルでマクロを起動したときに、最初に履歴テーブルの最後のIDを知り、エクセルの対応するID列をレコード分だけ最後のID+1から通番を付ける。通番を付けたら、エクセルのフィールド1~4とIDのレコードセットを出力テーブルの該当列に追加する。 以上がやりたいことです。 エクセルに、10行から100行程度のデータを貼りつけて、このVBAを紐づけたマクロボタンを押したら、履歴テーブルの最後を調べて、その次の番号から順に、上からID列を更新して、その後、出力テーブルに追加したいのです。 検査機器用に専用開発されたプリントソフトがデータベースにAccessを持っていて、プリントソフトのフロントからデータを手入力する仕様なのですが、エクセルで加工したデータをAccessの所定のテーブルに横差ししたい考えです。対象のPCには、Accessをインストールしていないため、エクセル側からテーブルを操作したい理由です。 よろしくお願いします。

  • access → Oracleへのデータ移行(VB.NETで)

    お知恵を貸してください。 ただ今、VB.NETでアクセスで開発されたアプリケーションを、 VB.NETに移行する開発をしているのですが、その中で、 現在のDBはアクセス、移行後のDBはオラクル10gなんですが、 何か良い移行方法は無いでしょうか? ちなみに、テーブル名、レコード名は変更しますので、そのまま移行ではありません。 私が考えているのは、アクセスのデータをエクセルにコピペし、 それを.NETで読み込んでテープルに入れて1レコードずつ オラクルに書き込んで行こうと考えております。 しかし、上記の方法でエクセルの読込方法が良く分かりません。 一旦、エクセルに取込む方法の場合の読込方法を教えてください。 また、もっと効率の良い方法をご存知でしたら教えてください。 開発環境は  OS : windows XP Pro 開発ソフト : VB.NET DB : Access 2003 SP2 DB : Oracle 10g です。なにぶん、VBでの開発経験が浅いので、 猿でも分かるように(W)お教えいただけると幸いです。

  • DataGridの内容をExcelにエクスポートするには?(VB)

    VBでDataGridを使ってOracleDBのテーブルを表示する機能を開発中です。 Oracleのテーブルの内容をADOを使って VBのDataGridに表示することはできました。 そのDataGridに表示された内容をExcelのファイルにエクスポートするにはどうすれば良いのでしょうか? ご存知でしたらお教えください。 環境はWindows2000、VB6.0です。 宜しくお願いいたします。  

  • accessのデータをoracleへinsertする方法

    環境 vb6、access2000、oracle10g、OS:WinXP Pro accessの中にある30,000件のレコードをvb6でoracle10gに日常的にinsertしようと考えてます。(ボタンクリック時etc) insert into 『oracleのテーブル名』 select * from 『accessのテーブル名』 とは記述できないと思うのですが、30,000回 loop→insertさせると 15分くらい掛かります。何か処理速度を早くなる良い方法はありませんか?  お知恵をお貸し下さい。宜しくお願い致します。

  • Oracle9iからOracle10gへ変更

    Oracle9iからOracle10gへデータベースを変えようとしています。 データベースのみの変更のためアプリには手を入れなくても動くだろうと安易に考えていますが 何か変更しなければいけないところ(例:ロジックやコントロール)はあるのでしょうか? [現在の環境] WindowsXPPro Oracle9i VB6 SP5 [今後の環境] WIndows7Pro Oracle10g VB6 SP5 補足) VBフォーム上にORADCコンポーネントを使用してグリッドにDB情報を表示しています。 このあたりのコントロールもそのまま使用することはできるのでしょうか? ご存知の方ご教授いただければと思います。

  • AccessからOracleへのリンクテーブル時の型情報?

    Access始めたばかりの初心者です。 現在Oracle10gのデータベースのとあるテーブルを をAccess2000でリンクし、クエリで抽出したものをレポートに表示 しようとしています。 そのテーブル上に、 Oracle上ではVARCHAR2(6バイト)の日付データがあります。 例) 200806 これをAccessのクエリ上で変換し、 "6月" と表示させたいのですが、 なぜかうまくいきません。 Oracle上の項目名が YM だとすると、 Replace(Right([YM], 2), "0", "") & "月" こういった関数でうまくいきそうなものですが・・ もしかしてOracleのVARCHAR2はリンクすると文字列型以外の型として 扱われるのでしょうか・・ どなたかご存じの方、ご教授くださいませ。

  • アクセス→オラクルの方法は?

    アクセス(Access2000)で作ったサンプルDBを オラクル(Oracle9i)にインポートするためには どうすればいいのでしょうか。 そもそもできるのでしょうか。 テーブルだけでOKなんです。 いったんデータをcsvにはいてから? 逆方向(オラクル→アクセス)はよく見かけるのですが…

  • VBからのDAOでメモ型へのアクセス

    Access2000でメモ型を含むテーブルを作成し、VBからアクセスします。 テーブルへの書込みはサイズに関係なく(257バイト以上も)問題なく出来ます。257バイト以上の文字列を書き込んだ後Accessで直接テーブルの内容を確認すると、正常に書き込まれています。 が、257バイト以上の文字列の読み込みを行うと255バイトで切れてしまいます。 テキスト型は255バイトまでで、メモ型は65534バイトまでと思っていたのですが違いますか? 違っているとしたら、60000バイトは必要ありませんが1000文字(2000バイト)くらいは使いたいと思っていますので、フィールドの型と、VBからのアクセスの方法を教えてください。

  • AccessでOracleのテーブルをリンクし、Access側では読み取り専用にしたい

    社内にOracleデータベースでのシステムが立ち上がっているのですが、管理帳票の出力用に、OracleのデータをAccessで読み込みたいと思っています。 テーブルのリンクそのものは知っており、成功しているのですが、Oracleデータベースのデータを壊さないようにするため、このリンクテーブルを読み取り専用にしたいと思っています。どのようにすれば良いでしょうか。 なお、Oracle側で読み取り専用ユーザを作成して、そのユーザでリンクすれば良いことは理解していますが、それは最後の手段にしたいと思っています。別の方法でうまくできないでしょうか。

専門家に質問してみよう