• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DAOでACCESSをREADしてEXCELに表示)

DAOを使ってACCESSのテーブルを全READして全データをEXCELに表示する方法

このQ&Aのポイント
  • 初心者でも簡単にできるDAOを使って、ACCESSのテーブルを全READして全データをEXCELに表示する方法を紹介します。
  • ボタン1をクリックすると、指定したデータをACCESSに追加する機能を実装する際に、既存のレコードと重複する場合には追加させないロジックを組み込む方法を解説します。
  • ボタン1をクリックした時に、追加されるデータがテーブル1の一番下に追加されるようにする方法を紹介します。現在は中途半端な位置に追加されてしまう問題を解決します。

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

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.2

> テーブルへのデータの2重登録を防ぐロジックについて 質問本件と「まったく違う」案件ですので、詳細は新たに質問を立ててくださいね。 ごく単純に解決しようと思ったら2パターンでしょうね。 1)アクセスでテーブルの構造を工夫する   ⇒ご自身で書いていらっしゃる「キーを設定して」のキーを「主キー」に設定、    あるいは「重複無しインデックス」を付ける 2)エクセルでコードを工夫する   ⇒つまり、AddNewする前に、「キー」の重複が無いかチェックする    全てのレコードを読み、「キー」が既に存在していたら弾く まぁ、恐らくですが、前者が簡単です。

yakkun2338
質問者

お礼

tsubuyuki様、ご連絡ありがとうございました。 またご連絡が遅くなりまして大変申し訳ございませんでした。 (1)アクセスでテーブルの構造を工夫する で実施しようと思います! この度は本当にありがとうございました!m(_ _)m

その他の回答 (1)

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.1

なかなか回答がつかないようですので、私が知り得る範囲で。 とりあえず結論から先に行ってしまうと「今のままでは無理」です。 おそらく、アクセス(などのDB・DBMソフト)における 「レコードの順番」について勘違いなさっているようです。 アクセスはエクセル(などの表計算ソフト)と違い、 「このレコードは何番(行)目」という、セルの概念を持ち合わせていません。 アクセスでは新規レコードが追加されると、記録媒体などの空き領域に レコード単位で(ほぼ)ランダムに記録・蓄積していき、 記録媒体などから発見した順に表示します。 ですので、必ずしも「登録したレコード順に並ぶ」とは限らないのです。 そこでユーザー(開発者含む)が「並べ替え(ソート)」という機能を使って、 好みの順番で画面に表示させる必要が出てくるのです。 レコードを好みの順に並べ替え(ソート)するためには「キー」が必要です。 添付図を見る限り 「追加された“taro”レコードを末尾に持って行く」 ためのキー項目(ソートキー)が見当たりません。 [社員番号]・[氏名]をキーにすると先頭に来てしまいますし、 [所属]をキーにしてやると中途半端な位置に持って行かれます。 [年齢]もキーとしては役に立たないようです。 よって「今のままでは無理」なのです。 どうしても「追加された“taro”レコード」を末尾に表示する必要があるなら、 (まったく無駄なフィールドではありますが)[登録順]などの 「キーに成り得るフィールド」を持っておく必要があります。 ・DCount関数などで全体の件数を取り、+1して登録順を見る ・DMax関数でキー項目の最大値を求め、+1して最新データとする ・オートナンバー型のフィールドを追加して、それを登録順として使う ・[登録日]フィールドを追加し、これをキーに使う などの手段が考えられます。 ですが(おそらく)普通は「社員番号」は入社順に割り当てられるものだと思いますので、 「新規レコード」に「一番若い社員番号」を持って行くこと自体に疑問は残りますが・・ 設計・設定次第ではこれがそのままソートキーフィールドに使えるモノだと思います。 参考までにお納めくださいませ。

yakkun2338
質問者

補足

tsubuyuki様、ご連絡ありがとうございます! ご教授いただきました概念、大変参考になりました。 本当にありがとうございます。 初心者の私にも分かるようなご丁寧なご解説もありがとうございます。 キーを設定して新たにテーブルを作り直すことにします。 あと、テーブルへのデータの2重登録を防ぐロジックについてご教授いただけますと幸いでございます。 よろしくお願い致します。

関連するQ&A

専門家に質問してみよう