• 締切済み
  • 暇なときにでも

acccessのテーブルにマクロを設定する方法?

テーブルまたはクエリで自動入力できるマクロを設定できる方法を知りたいです。例えば「都道府県」というフィールドの値が"東京"と入力されたとき「都道府県コード」に"1"という値を自動的に入力するというような方法です。同じテーブルを基に作ったフォームでは上記のマクロを設定できますが、テーブルの表形式で他のデータを参照しながら一気に入力したいのでテーブルで設定できるととても作業がはかどりそうなのです。ヘルプもいっぱい読んでみましたが、見れば見るほどチンプンカンプンになってきます。Accessを使い始めてまだ日が浅いので、どうか優しく教えていただけないでしょうか?

共感・応援の気持ちを伝えよう!

  • 回答数6
  • 閲覧数169
  • ありがとう数5

みんなの回答

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

#4 (改行位置変更させていただきましたm(__)m) >ですが、70くらいのコード番号があるので[分類項目]="xxx"ならば値の代入で式に >[分類コード]="70"のようなマクロを設定するのに、70行分の内容を書きました。これ >をもっと簡単にする方法はあるのでしょうか?やはり70回書かなければできないもの 直接的な回答 「分類項目」テーブルを作成して、DLookupなどで検索するといいでしょう。 補足 上記のやりかたでもとりあえず動くけれども、この問題を根本的に解決するために は、テーブル構造の改変が必要です。(詳しくは入門書等をお読みください) 1:お使いのテーブル上に「分類コード」フィールドが存在しなければ、追加してくだ さい。 2:「分類」テーブルを作成してください。フィールドは「分類コード」「分類項目」 あたりでいいでしょう。リレーションシップを設定すればなお良し。 2.5:「分類」テーブルにデータを入力してください(70コでしたっけ) 3:フォームにテキストボックスとコンボボックスを一つづつ作成して、双方のコント ロールソースを「分類コード」としてください。 4:コンボボックスのプロパティを設定して、「分類コード」に対応する「分類項目」 を表示するようにします。 5:実際にこのフォームを使ってみてください。テキストボックスに分類コードを入力 したときは、コンボボックスには適切な分類項目が表示され、コンボボックスに分 類項目を手入力(もしくは一覧から選ぶ)したときには、テキストボックスに分類コ ードが自動で入力されるようになったと思います。 6:テーブル上の「分類項目」フィールドはもはや不要ですよね。削除するなり、ご自 由に。 なんか、当初のご質問からかけ離れてきましたね。この件について新たにご質問があ れば、新しくOSIETEに登録していただければと思います。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • Access 選択クエリ 開いてデータ修正できない

    Access 選択クエリ 開いてデータ修正できない 選択クエリを直接データシートビューで開いて直接あるフィールドの値を修正したいです。 選択クエリ(以下のテーブルを都道府県コードでリンク)多:多 テーブル1 ・氏名 ・ふりがな ・都道府県コード ・備考欄 テーブル2 ・都道府県コード ・都道府県名 上記のクエリで「備考欄」に文字入力ができな状況です。 ロックがかかっています。 やりたいことは単純ですがそもそもこの状況では入力・修正はできないのでしょうか。 どなたかご教授いただければ幸いです。 よろしくお願い申し上げます。

  • アクセスのフォームでデータ元をテーブルからクエリにかえたい

    上手く表現できるかどうかわからないのですが、頑張って書きます。少々長いです。 アクセスでフォームを使ってデータ入力しています。これは単純で、あるテーブルへのデータ入力をフォームを使ってやるだけのことです。このテーブルの中に「都道府県」というフィールドがあります。ある事情からこのフォームを使ってデータ入力(または修正)をするレコードは、「都道府県」のフィールドが「福岡県」のものだけでよくなりました。 そこで、「都道府県」に「福岡県」を持っているレコードだけを取り出すクエリを作ります。このクエリを元にして、同じフォームでデータ入力したいのです。入力項目は全く同じです。「福岡県」をもっているレコードだけが全く同じフォームで表示されるようにしたいのです。 もとのテーブル名を「全データ」とし、クエリを「福岡県抽出クエリ」と呼ぶとすると、どこかで「全データ」を「福岡県抽出クエリ」に書き換えればすべてのテキストボックスのデータ元が入れ替わってくれると思うのですが、それでいいのでしょうか。その場合、どうやったらいいのでしょう。 なぜ一からファームを作り直さないかというと、テキストボックスの大きさや配置を決めるのに膨大な労力を費やしていて、全部をやり直したくないからです。 どうかお願いします。ご指導ください。

  • Accessについて。フォームでデータ入力

    超基本的な質問ですみません。 仮に下記のような構造のデータベースがあったとします。 テーブル 都道府県名 フィールド 都道府県 テーブル 住所    フィールド 都道府県 市町村 テーブル 顧客    フィールド 都道府県 市町村 顧客にデータを入れていくために"顧客情報入力"というフォームを作ります。 "都道府県"をコンボボックスで選択しました。 市町村のコンボボックスに上の"都道府県"で選択した都道府県の"市町村"だけを表示させるためにはどうしたら良いのでしょうか。 クエリについてはある程度理解していたつもりなのですが、頭が真っ白になってしまいました。

  • 回答No.5

表形式で入力したいという事でしたら、表形式のフォームを作って、そこに マクロを設定すれば、すんなりいきます。テーブルやクエリーは「生データ」 ですので、そこで入力、修正、削除するのは一種「非常手段」のようなもの ですから。  アクセスではクエリー、フォーム、マクロ等CUT&TRY出来ますから、色々 やってみたらいいでしょう。

共感・感謝の気持ちを伝えよう!

質問者からの補足

ありがとうございます。表形式のフォームができることさえ知りませんでした。表形式でフォームを作って、現在保存してあるマクロを貼り付けてみます。なんとなくできるような気がしてまいりました。

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

リレーションテーブルや、コンボボックスを使ったやり方は、先にto-comasさんが書いておられますので、私はマクロやVBAをバリバリに使った複雑な自動入力を表形式で行うやり方について書いてみる事にします。 Accessでは、普通はマクロを使って、テーブルやクエリー(のデータシートビュー)に直接値を入力するようなことはしません。(それをやるようなプログラムは「行儀が悪い」とされます。) というわけですので、自動入力機能はフォーム上にて作成します。VBAとかを使って使いやすい物を作りましょう。(この辺が腕の見せ所ですよね。) で、おもむろに[表示]-[データシートビュー]を実行します。 これで、表形式でありながら自動入力機能を兼ね備えた、ゴージャスな入力フォームの完成です(笑) ちなみに、DoCmd.OpenForm を使えば、最初からデータシートビューで開いたり、途中でデータシートビューに切り替えたり出来ます。DefaultViewプロパティを使えば、デフォルトのビューをあらかじめ設定しておくことも出来ます。 それと、Access入門のためにAccessのヘルプを使用するほど効率の悪いことはありません(笑)。本格的に始めるのであれば、入門書の数冊ぐらいは買っておいても損はないと思います。「リレーショナルデータベースとは」といった項目を読めば、都道府県コードの問題などは、恐らく一発で解消することと思います。

共感・感謝の気持ちを伝えよう!

質問者からの補足

ありがとうございました。表形式のフォームを作れば簡単なのですね。 本当に初心者なのでVBAまでは理解できないレベルですが、とりあえず、適当にやったらフォームの上では作動したマクロで対応したいと思います。そこで質問ですが、70くらいのコード番号があるので[分類項目]="xxx"ならば値の代入で式に[分類コード]="70"のようなマクロを設定するのに、70行分の内容を書きました。これをもっと簡単にする方法はあるのでしょうか?やはり70回書かなければできないものなのでしょうか? ちなみに、設定する「分類項目」は、例えば"大使館"、"航空会社"、"案内所"のようなもので、アルファベット順ではなく、思い通りの順番で並べ替えて印刷したいと思ったので、苦肉の策として「分類コード」なるフィールドを付け加えて見ました。ところがばらばらに入力されるデータのコード番号をいちいち調べるのが面倒くさくなって、「自動的に入力」なる都合のよいものはないかと思い立ったわけです。 スイマセン。勉強不足の初心者が、都合のよいことばかりを考えてこの壁にぶつかってしまったのですが、もしよろしければ再度お教えくださいませ。よろしくお願いします。

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

#2(to-comasさん)の発言に補足させていただきます。 この発言では、フォーム上のコントロールに対して値集合ソース等を設定するとされていますが、Access97以降(だったかな)では、同様の設定を、テーブルやクエリー中のフィールドに対しても行えるようになっています。 やり方は… テーブルの場合 テーブルをデザインビューで開く 変更したいフィールドをクリック 「ルックアップ」タブをクリック 「表示コントロール」を「コンボボックス」に設定 値集合タイプ、値集合ソースなどを適宜設定する クエリーの場合 クエリーをデザインビューで開く デザイングリッド上の該当するフィールドをクリック [表示]-[プロパティ]で、プロパティを開く 「ルックアップ」タブをクリック 「表示コントロール」を「コンボボックス」に設定 値集合タイプ、値集合ソースなどを適宜設定する です。 私の読解力では、chicaskiさんはテーブルやクエリーのデータシートビューでの利用を想定しているように読み取れましたので、このような補足をさせていただきました。

共感・感謝の気持ちを伝えよう!

  • 回答No.2

 旨く文章で説明できるか自信ないけど、書いてみます。 1.まず「都道府県」テーブルを作ります。ここには、「都道府県名」と「都道府県コード(ID)」フィールドを作成して、データを47件(県)登録します。 2.次に、データを入力したい「作業」テーブルの中に、「都道府県コード(ID)」のフィールドを作ってください。 3.リレーションシップ(上のツールバーの中のボタンにあります)を開いて、「都道府県」テーブルの「都道府県コード(ID)」と「作業」テーブルの「都道府県コード(ID)」を連結させます(フィールド名をドラッグ&ペーストしてください)。 4.次に、「作業」テーブルを元に入力用フォームを作ります。 5.この「作業」入力用フォームのデザインを開いて、「都道府県コード(ID)」のプロパティの値集合タイプをテーブル/クエリーに設定して、値集合ソースを「都道府県」テーブルにします。 6.あとは、列数・列幅・連結列などの項目を設定すれば完了です。 とはいえ、こんなつたない説明でお解りいただけるか自信はありません。 一度、試してみてください。 うまくいかないときは、補足にUPしてください。

共感・感謝の気持ちを伝えよう!

  • 回答No.1
  • a-kita
  • ベストアンサー率50% (6/12)

ある規則性がある更新を行うのであれば、その場でデータを埋め込む必要は無いのでは? chicaskiさんの例で言えば、一気に"東京"とか"埼玉"とか入力して、出来上がってから都道府県コードに更新するのがスマートだと思います。(普通はコードを入力して名称を表示させるものですが・・・) どうしてもその場でと言うのであれば、恐らく調べられたことかと思いますが、フォームを作成して、都道府県名テキストボックスのLostFocusイベントで対応するコードを入れるのが良いかと思います。「参照したい他のデータ」の内容は分かりませんが、入力に必要な情報ならクエリーで結合するなりしてうまく表形式フォームにできるかも知れません。 Accessの質問だと、もうやりたい事が少し詳細に書かれているほうが答えやすいっす。 できるならば補足をお願いします。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • フォームのプロパティを設定したい(Access2000)

    Access2000 XPです。 都道府県名が1レコードに1つずつ入っているテーブルと 各都道府県名のテーブルが47コあります。 新規でフォームを作成し(フォームのレコードソースはまだ未設定) コンボボックスを1つ置いて、値集合ソースに都道府県テーブルを設定し コンボボックスで選ばれた都道府県にフォームのレコードソースを変更しようと思っています。 Me.RecordSource=コンボボックス.text 単純にこれで良いと思うのですがエラー(入力された値は、フィールド又はコントロールで定義されている入力規則に従っていません)が出て全然更新されません。 どなたか分かる方、解決法をお願いします。。。

  • 住所の分割方法

    顧客データで、住所フィールドが1,2,3とあり、本来であれば、 1・・・都道府県 2・・・市区町村から番地 3・・・マンション、アパート名 としなければいけないのですが、郵便番号辞典から入力したため、住所2のフィールドに1と2がくっついて入力されています。 これを都道府県で切って、都道府県名を住所1のフィールドに、市区町村から番地までを住所2のフィールドに分割したいのですが、関数もしくはマクロがあれば教えてください。 住所1には、「東京都」などの「都」に相当する都道府県名まで入れたいのですが。 (データが5000件くらいあります)

  • Access2002 郵便番号から都道府県を算出したい

    いつも拝見しております。皆様のお知恵をお貸しください。 Access2002にて、既に存在する【郵便番号】フィールドの値を元に、 【都道府県】フィールドに都道府県名を当て込むという操作を できればクエリで実行したいと思っております。どのような方法が あるでしょうか? よろしくお願いします。

  • ACCESS2007で同じテーブルから繋ぐことはできますか。

    ACCESS2007で同じテーブルから繋ぐことはできますか。 実際に作るのはもっとテーブル数も項目も多いので、不明な箇所だけを簡略した例は次のものです。 都道府県テーブル:K_No、都道府県名 名簿テーブル:M_No、名前、本籍地、居住地(2か所にK_Noは入れられませんよね?) 本籍地と居住地には都道府県.K_Noを入れたいのですが、一つの都道府県テーブルのNoを名簿テーブルの本籍地と移住地の2箇所にリンクすることはできますか。 名簿.M_No、名簿.名前、名簿.本籍地、都道府県.都道府県名、名簿.居住地、都道府県.都道府県名でクエリを作りましたら、 都道府県から名簿へリンクの線が2本出るクエリでは、本籍地と居住地が同じものだけが抽出されました。 都道府県(No)-(本籍地)名簿(居住地)-(No)都道府県_1と3テーブルになると全レコードは表示されますが、本籍地も居住地も居住地のNoの名前が出てしまいます。 本籍地用と居住地用の都道府県テーブルを別に用意しなければならないのでしょうか。何箇所同じ地方コードを入れる箇所(本籍地、居住地、勤務地、別居家族の居住地など)があるので一つのテーブルを共有できたら、と思っています。

  • Excel VBA:エクセルのマクロで入力規則を設定する際のアラートの扱いがわからず困っています

    エクセルでINDIRECTを使った入力規則設定をマクロで行う際の、アラートの扱いがわからず困っており、お教えいただけると幸いです。 例えば、A列に日付、B列にその日付に行った都道府県名、C列にはB列で選択した都道府県に属する自治体名を入れる場合を考えます。 そのために、  ・北海道、青森、…という具合に都道府県名のリストに、あらかじめ『都道府県名』と言う名前をつけたものを作成しておく。  ・洞爺湖、阿寒湖、釧路、…という北海道の自治体名リストにあらかじめ『北海道』と言う名前をつけたものを作成しておく。  ・弘前、八戸、十和田、…という青森県の自治体名リストにあらかじめ『青森』と言う名前をつけたものを作成しておく。   :(以下同様) と言う準備をしたあと  -B列の入力規則ダイアログボックスで、入力値の種類を『リスト』、元の値として『=都道府県名』とすることでドロップダウンリストから都道府県名を選ぶことが出来ます。  -C列の入力規則ダイアログボックスで、入力値の種類を『リスト』、元の値として『=INDIRECT(B1)』とすることでドロップダウンリストから自治体名を選ぶことが出来ます。   C列の規則を設定する際にB列にまだ都道府県名が入っていない場合は『元の値はエラーと判断されます。続けますか?』と言うアラートが出ますがOKを押して続行。 とすれば、C列のドロップダウンリストでB列で選択した都道府県に属する自治体名が選べることになります ここまでは、教科書などにも書いてある内容なので問題はないのですが、これをマクロ化すると問題が発生します。 上記の入力規則の設定をマクロで記録し、実行すると  『実行時エラー'1004'.アプリケーション定義またはオブジェクト定義のエラーです。』 が発生します。エラーの起こっている場所はC列の入力規則定義部分の .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= xlBetween, Formula1:="=INDIRECT(B1)" のようです。 B列に都道府県名が入った状態ではエラーとはならないので、マクロ記録時に『元の値はエラーと判断されます。続けますか?』が出てOKとした部分が 何らかの問題となっているとは思うのですが、対処方法がわからずに困っております。 ちなみに、On Error Resume Nextを入れておいたとしても、エラーでマクロが中断されることはなくなりますが、入力規則の設定は行われないので対処方法にはなりません。 質問が長くなり恐縮です。 コピーペーストなどで入力規則の設定が消えてしまうことがあるので、ブックの立ち上げ時に入力規則の再定義をしたいと考え、このような質問となりました。 対処方法おわかりの方、ご教授いただけると大変助かります。 なお、環境はwindowsXP、excel2003です。 よろしくお願いいたします。

  • ACCESSのテーブル入力について

    また仕事に時間的余裕が出てきたのでアクセスに挑戦し始めました。以前、複数条件による検索でお世話になったことがあります。 例えばA校ー私大ー東京、B校ー国立ー沖縄というように、組み合わせの変わらないデータを入力するとします。 このデータを入力するテーブルを「学校基本情報」として、適宜、校名フィールド、校種フィールド、設置都道府県フィールドなどを作っておきます。 次に、この「学校基本情報テーブル」に各学校のデータを入力していきます。校名は直接入力にし、校種や設置都道府県は、参照用に「校種テーブル」、設置県を参照するために「都道府県名テーブル」などをあらかじめ作っておき、それを「ルックアップ」で参照、選択するようにするとします。 ここまでが準備段階で、実際の業務上では次のようにしたいと考えています。 各学校から推薦制度の条件や学校見学会の日程などが送られて来るたびに、学校毎に必要項目を入力して、情報を一括してまとめておきます。後に検索に使えるようにするためです。 これは「学校から送られてきた情報を後で検索するためのテーブル」みたいにして新たなテーブルを作ろうと考えています。なので、情報が送られてくる度に、改めて学校名や推薦条件、見学会日程などを入力するのですが、学校の基礎データについてはすでに「学校基礎情報テーブル」によって、校種や設置都道府県がまとめられています。だから、新たに「学校から送られてきた情報を後で検索するためのテーブル」に学校名を入力した時、それに呼応して、既に登録されている校種や都道府県名を「学校から送られてきた情報を後で検索するためのテーブル」に反映させられないものなのでしょうか。 ちょっと分かりにくいかもしれませんが、お分かりの方、いらっしゃいましたらよろしくご回答の程、お願い致します。

  • アクセスのクエリ作成について

    下記のようなテーブルとフィールドがあるとします。 Aテーブル  会社名 分類 都道府県 住所 HPアドレス  Bテーブル  担当者 部署 電話 メールアドレス Cテーブル  受付番号 分類 Dテーブル  受付番号 分類 ここでAテーブルの都道府県で一致するデータを抽出し、 下記のフィールドを表示するクエリを作成したいと思っています。 A 会社名 分類 都道府県 住所 HPアドレス B 担当者 部署 メールアドレス 電話 C 受付番号 D 受付番号 クエリを作成し実行しましたが、何もデータが出てきません。 全フィールド入力していないと抽出できないのでしょうか。 中にはHPアドレス等がない場合もあるのです。 すみませんが、どなたか教えて下さい。 よろしくお願いします。

  • アクセスでの組み合わせ

    テーブルAには学校名、学校コードが入っていて、都道府県名を挿入したいと思っています。 学校コード5桁のうち3桁目、4桁目で都道府県を識別しています。 この場合、どのようにして都道府県名を挿入すると簡単にできるのでしょうか。 [学校名]  [学校コード] 〇×高校   311001 ▲□高校   512003 ◎◎◎高校  611130 ◇◆高校   011222 *11**は東京都、*12**は神奈川県・・・といった具合です。 都道府県名の横に、*11**や、*12**を入力したテーブルは作ってみたのですが・・・。 クエリで上手に組み合わせる方法を教えて下さい。

  • 配列の書き方

    多次元配列を使って都道府県と地域名と運賃データを格納しようと思っています。 例えば 北海道 都道府県コード1 サイズによって 1470,1680,1890,2100,2310,2520 青森県  都道府県コード2 秋田県  都道府県コード3 岩手県  都道府県コード4 この3県はサイズによって 1050,1260,1470,1680,1890,2100 ・・・ という情報を格納したいです。 入力された都道府県データと個数で送料を判定したいのですがどのようにすればいいのか途方にくれています。 ご教授ください。

    • ベストアンサー
    • PHP
  • Accessの条件付き書式設定で、複数の条件が一致した時の書式を設定したい

    Accessのフォームで、複数の条件が一致した時の書式を設定したいのですが、どうすればいいのでしょうか? 例えば、 [都道府県]フィールドが『東京都』の時、そのレコードの全フィールドの背景を水色にし、 [数量]フィールド、[金額]フィールドがマイナスの時、そのフィールドの値を赤字にしたいのです。 フォームで、全てのフィールドを選択してから、メニューの条件付き書式設定で、 『条件1(1)』に、「式」 「[都道府県]="東京都"」 と入力し、背景を水色に設定し、[OK] しました。 次に、[数量]フィールドと[金額]フィールドだけを選択し、メニューの条件付き書式設定で、 [追加]ボタンを押して、『条件2(2)』に、「フィールドの値」 「次の値より小さい」 「0」 と入力し、 フォントを赤色に設定し、[OK] をクリックしました。 ですが、実行すると、『東京都でマイナス』の時、『背景が水色で値が赤字』 という具合になりませんでした。。 単票フォームでも帳票フォームでもどちらでも結果は同じでした。 どうすればできるのでしょうか?それとも、こういうことはできないのでしょうか?? [都道府県] | [担当者] | [数量] | [金額]   → なって欲しい結果  東京都 | あああ | 5 | 500   → このレコードの背景が水色になる  千葉県 | いいい | -5 | -500   → -5 と -500 が赤字になる  東京都 | ううう | -1 | -100   → このレコードの背景が水色になり、更に-1と-100が赤字になる。 このようにしたいのですが、どうしたらよろしいのでしょうか? よろしくお願いします。

専門家に質問してみよう