Accessで顧客コードを入れると顧客マスタ通りの名前、住所TELがフォームに自動で出て、商品コードを入れると品物名が出るようにしたいのですが。
コードと商品名のはいったテーブルとフォームは作ったのですが・・・

このQ&Aに関連する最新のQ&A

A 回答 (5件)

はじめの手順から書きます。



顧客コードと氏名・住所・TELが入ったテーブルを作ります。(顧客マスタの事)

>コードと商品名のはいったテーブルとフォームは作ったのですが・・・

と言うことですので、商品用のテーブルはできています。

もう1つ、テーブルとテーブルのリレーション(関連性)を設定しやすいように、

オートナンバーを設定した主キー用のフィールドと、
顧客コードと、商品コードを設定したテーブルを作ると良いでしょう。(以下Cテーブルと呼びます。)

あとは、テーブルのリレーション設定を行います。


リレーションシップボタンをクリックし、
テーブルをすべて表示させます。

次に、顧客用のテーブルから顧客コードをCテーブルの顧客コードへとドラッグし、参照整合性にチェックを入れます。
そして、作成をクリックします。

同様に、商品コードの入ったテーブルから、
Cテーブルへとドラッグし、参照整合性にチェックを入れます。そして作成をクリックします。

続いて、クエリの作成に移ります。
オブジェクトをクエリに変更します。

デザインビューでクエリを作成し、
テーブルの一覧を表示させます。

一覧から、まず
Cテーブルのオートナンバーを設定したフィールドを
ダブルクリックします。
次に、Cテーブルの顧客コードをダブルクリックします。
次に、顧客マスタに入っている名前・住所・TELの順にダブルクリックしていきます。

次に、Cテーブルの商品コードをダブルクリックします。
そして、商品名をダブルクリックして
必要なフィールドの設定が完了します。

クエリは、名前をつけて保存しましょう。
(以下では、Q顧客商品と呼びます。)

できた、Q顧客商品を
ウィザードを使用してフォームを作成するから
選択して、完了。

これで、コードを入れるだけで、
テーブルから名前・住所・TEL・商品名が
自動表示されるようになります。

文章で書き並べた感がありますので、
分かりにくければ、また、ご質問ください。では。

この回答への補足

打ち込むとテーブルにデータが残っていくフォームがすでにあり、ここに、今回のコードを打ち込む項目を追加したいです。
アドバイスいただいた方法で作成したクエリのデータを既存フォームのコントロールソースで表示し無理やり持って行ってみましたがだめみたいです。

補足日時:2005/04/25 16:07
    • good
    • 1
この回答へのお礼

具体的に書いていただいてわかりやすかったため、何とか最後までたどり着くことができました。
おかげでコードを入れると商品名などが出るようになりました。

ここでどうしてもわからず困っているのが、最後の

>できた、Q顧客商品を
>ウィザードを使用してフォームを作成するから
>選択して、完了。

のところを、新しいフォームとしてでなく既存のフォームにつくるやり方です。お手数をおかけしますがアドバイスいただけないでしょうか。

お礼日時:2005/04/25 14:51

なかなか、返答がなく


ヤキモキされたところもあったと思いますが、
完成されて良かったです。

テーブルで作ったものを
クエリで組み合わせ
それをフォームで呼び出す

が基本の流れです。
印刷を工夫したい場合は、レポートを使うのも
良いでしょう。

そして、ソフト的に
簡単に操作をしたい場合は、
フォームにボタンを作成して、
クリック時にマクロを実行するようにします。

少しややこしい話になるかもしれませんが、
アクセスは
テーブル間の関連性が大事です。

特に、1対多の関係が
整理できていると、良いものを作りやすくなります。

※1(一種類ずつデータが登録されているフィールド)
 多(何回も同じデータが登場するフィールド)
    • good
    • 0
この回答へのお礼

ご指摘のとおり、「基本の流れ」「テーブル間の関連性」が作っていてもまだぼんやりとしているレベルです。
おかげでもう少しで印刷までたどり着けそうです。
ありがとうございました。

お礼日時:2005/05/04 14:38

もう少しでできそうですね。



○「日にち」「商品コード」「商品」「顧客コード」「顧客名」「金額」を入力すると「消費税」「合計」が計算されるクエリ

を、既存のフォームに設定した後、
テキストボックスを右クリックし、
表示させたいフィールド名を
コントロールボックスから選択します。

それで、できると思います。
アドバイスが遅くなりましたが、もう少しでできそうなので、
頑張ってください。多少説明の悪いところもありますが、完成までお付き合いできればと思います。
    • good
    • 0
この回答へのお礼

おかげさまで何とかできました。
イメージとは違うので復習もかねてもう一度はじめから作り直してみようと思います。
お手数をおかけいたしました。

お礼日時:2005/05/02 22:09

1件目の回答に対してのコメントで、


「コードを入れると商品名などが出るようになりました。」と言う内容がありました。

そのクエリと同じように、
「日にち」「商品コード」「商品」「顧客コード」「顧客名」「金額」を入力すると「消費税」「合計」が計算されるクエリを作成します。

それを、今のフォームで表示されるように
設定すればよいでしょう。

設定の仕方は、
○フォームセレクタを右クリック⇒プロパティ。
○レコードソースからクエリを選択。
です。

ただ、既存のフォームなので、
テキストボックスのコントロールソースを
変更する必要があるでしょう。

29日に時間があるので、
画像入りのHPでも作成してアップいたしましょうか?

※ポイントは、
 クエリ、フォームで入力したデータは、
 結果的にテーブルに保存されると言うことです。

 (テーブルから、フォームにデータを呼び出しても、
 クエリで、仮想のテーブルを作り、フォームに
 呼び出しても、データは結果的にテーブルに保存
 されます。)

 
    • good
    • 1
この回答へのお礼

○コードを入れると商品名などが出るクエリ

○フォームセレクタを右クリック⇒プロパティ。
○レコードソースからクエリを選択。

まではアドバイスのおかげでできました。
(緑色の三角が表示されていいのですよね)

○「日にち」「商品コード」「商品」「顧客コード」「顧客名」「金額」を入力すると「消費税」「合計」が計算されるクエリ

も、もう少し頑張ればできそうです。

○テキストボックスのコントロールソースを
変更する

ここがさっぱりです。


お世話になりすぎて恐縮していますが、よろしくお願いします。




 

お礼日時:2005/04/27 11:22

フォームの用途が分かれば適切なアドバイスができるのですが、、、


「テーブルにデータが残っていくフォームがすでにあり」
というのは、どのようなデータが残っていくようになっているのでしょうか。

商品コードと商品名を登録したり
顧客コードと顧客名を登録するためのフォームであれば、
そこに、上記コードを呼び出すテキストボックスを
入れるのは、おすすめしません。

ただ、どの顧客にどの商品を販売したのか
あらわすようなものなら(いわば売上データを入力するフォーム)おすすめします。

方法としては、
(1)既存のフォームを選択⇒デザインビューで開きます。

水平ルーラーの左、垂直ルーラーから見れば上
(ウィンドウの左上に)灰色の□(四角)があります。

(2)フォームセレクタと言う名前なのですが、そこを
右クリック⇒プロパティとします。

(3)レコードソースから、
新規に作成していただいたクエリを選択すれば上手くいくでしょう。

あとは、テキストボックスのコントロールソースを
変更する必要があるかもしれません。

※上手くいかないようなら
どのようなデータを入力するフォームなのか教えていただければ、適切なアドバイスができると思います。
よろしくお願いいたします。
    • good
    • 0
この回答へのお礼

フォームから「日にち」「商品コード」「商品」「顧客コード」「顧客名」「金額」を入力すると「消費税」「合計」が計算され、テーブルにデータが溜まっていきます。そのフォーム配置のまま入力した文字だけをドットプリンターで印刷しています。▲(向きが違いますが)を押し次次にデータを入力していくようになっています。
今回、「商品コード」「商品」それぞれ入力しているので、「商品コード」を入れると「商品」が自動で出るようにして手間を減らせればと思い質問しました。
(わかりにくい書き方ですいません)

>(1)既存のフォームを選択⇒デザインビューで開きます。
>水平ルーラーの左、垂直ルーラーから見れば上
(ウィンドウの左上に)灰色の□(四角)があります。
>(2)フォームセレクタと言う名前なのですが、そこを
右クリック⇒プロパティとします。
>(3)レコードソースから、
今回教えていただいた方法だと、緑色の小さな三角がすべてのテキストボックスの左上に表示されます・・。

可能であれば、引き続きアドバイスよろしくお願いいたします。

お礼日時:2005/04/26 17:53

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAccessで別テーブルの値をフォームに表示したい

初めてのAccessで分からない事があり質問させてください。

<会社テーブル>
会社ID
会社名
住所

<社員テーブル>
会社ID
社員名
ソート番号

*1社に対し複数の社員レコードが存在

以上のようなテーブルがあるとします

現在「会社テーブル」を表形式で一覧表示しています
会社ID,会社名、住所とフィールドが並んでいるのですが、その後ろに「社員テーブル」のソート番号が一番若い社員名を表示したいと考えています(現状は番号関係なく表示させる方法すら分かりません)

色々いじくりまわしたのですが、初めてAccessをさわる事もあってよくわかりません

リレーション等でひっぱってくる事ができるのでしょうか?

どなたか教えて頂けませんでしょうか

何卒よろしくお願い致します

PS.Access2013で作成中です

Aベストアンサー

単純にテーブル[会社]のみでフォームを作成し、社員表示用テキストボックスを追加。そして、そのプロパティを表示し

コントロールソース=DBLookup("SELECT 社員名 FROM 社員 WHERE 会社ID=" & [会社ID] & " ORDER BY ソート番号")

これは、以下の標準モジュールに登録したユーザ関数 DBLookup()を使っています。これで、クエリを用意しなくても目的を達成できます。

さて、かかるユーザ関数を標準ライブラリに登録したくない場合、

1、"社員ソートクエリ"を作成します。

SELECT 社員.会社ID, 社員.社員名
FROM 社員
ORDER BY 社員.ソート番号;

2、コントロールソースに次のように書きます。

=DLookUp("社員名","社員ソートクエリ","会社ID=" & [会社ID])

http://office.microsoft.com/ja-jp/access-help/HA001228825.aspx

DLookup()については、マイクロソフトの解説を参照されてください。

【DLookup()の限界を破るにはVBAで同じ関数を作るしかない】

マイクロソフトの解説を読めば判りますが、ORDER BY 節を指定する引数が用意されていません。ですから、どうしても、"社員ソートクエリ"を作成するという手間が必要となります。そこで、SQL文を引数とするDBLookup()をVBAで書けば、その手間を省けるという算段になります。この辺りは、好みと趣味の問題。どっちでも良いと思います。そういうお断りをした上で DBLookup()を紹介しておきます。なお、ADOは、つぎのように参照設定しないと利用できません。

http://www.happy2-island.com/access/gogo03/capter00307.shtml

Public Function DBLookup(ByVal strQuerySQL As String, _
             Optional ByVal ReturnValue = Null) As Variant
On Error GoTo Err_DBLookup
  Dim DataValue
  Dim rst     As ADODB.Recordset

  Set rst = New ADODB.Recordset
  With rst
    .Open strQuerySQL, _
       CurrentProject.Connection, _
       adOpenStatic, _
       adLockReadOnly
    If Not .BOF Then
      .MoveFirst
      DataValue = .Fields(0)
    End If
  End With
Exit_DBLookup:
On Error Resume Next
  rst.Close
  Set rst = Nothing
  DBLookup = IIf(Len(DataValue & ""), DataValue, ReturnValue)
  Exit Function
Err_DBLookup:
  MsgBox "SELECT 文の実行時にエラーが発生しました。(DBLookup)" & Chr$(13) & Chr$(13) & _
      "・Err.Description=" & Err.Description & Chr$(13) & _
      "・SQL Text=" & strQuerySQL, _
      vbExclamation, " 関数エラーメッセージ"
  Resume Exit_DBLookup
End Function

単純にテーブル[会社]のみでフォームを作成し、社員表示用テキストボックスを追加。そして、そのプロパティを表示し

コントロールソース=DBLookup("SELECT 社員名 FROM 社員 WHERE 会社ID=" & [会社ID] & " ORDER BY ソート番号")

これは、以下の標準モジュールに登録したユーザ関数 DBLookup()を使っています。これで、クエリを用意しなくても目的を達成できます。

さて、かかるユーザ関数を標準ライブラリに登録したくない場合、

1、"社員ソートクエリ"を作成します。

SELECT 社員.会社ID, 社員.社員名
FR...続きを読む

QACCESSでフォームを使って、テーブルを参照、データ入力、データ更新をしたいのです

フォームを使って、テーブルを参照、データ入力、データ更新をしたいのです。

売上テーブル

 ID   商品コード  日付    金額 
 1    G1     20080101  532153
 2    G1     20080101  564281
 3    G1     20080301  538123
 4    J4     20080301  124531
 5    J4     20080302  125483

ID:オートナンバー 商品コード:数値型 日付:数値型 金額:数値型

これを使い、
フォームではまず

レコードナンバーを入力画面
       ↓
レコード番号を入れると、そのレコードのデーターが画面に表示され、
その画面で修正可能
       ↓
 保存 ボタンで保存

という流れです。

レコードナンバーはIDを使おうと思っています。

データの量が莫大な為、コンポボックスなどは使えません。

できるだけ、VBAなどは使わずに作りたいです。

よろしくお願い致します。

フォームを使って、テーブルを参照、データ入力、データ更新をしたいのです。

売上テーブル

 ID   商品コード  日付    金額 
 1    G1     20080101  532153
 2    G1     20080101  564281
 3    G1     20080301  538123
 4    J4     20080301  124531
 5    J4     20080302  125483

ID:オートナンバー 商品コード:数値型 日付:数値型 金額:数値型

これを使い、
フォームではまず

レコードナンバーを入...続きを読む

Aベストアンサー

まずそのテーブルを基にしてフォームを作成します。
そのフォームのヘッダー部分にテキストボックスを配置後、一旦
上書き保存。
フォームのレコードソースを
SELECT *
FROM テーブル名 WHERE ID=[Forms]![フォーム名]![テキストボックス名]
とします。
次にテキストボックスの更新後処理に
Me.Requery
とすれば完成です。
フォームを開いてテキストボックスにID入力後エンターしてください。

保存に関しては、コマンドボタン作成後クリック時イベントに
DoCmd.RunCommand acCmdSaveRecord
とすれば良いでしょう。

この手のモノは検索すれば相当数ヒットするので、そちらを参考にされるのもよろしいかと。

Qアクセスに自動入力を入れたい

accessで、EXCELでのVLOOKUP関数のようなものを使いたいのですが
フィールド1にCODE番号を入れると、フィールド2に自動入力という
ようなことをしたいのです。

(1)テーブル1に区分テーブルを作りました。
   例:1  A社
     2  B社
     3  C社

(2)テーブル2に次のように入れたい
   例:フィールド1に「1」と入力すると、
     フィールド2に「A社」と入力される

これは可能でしょうか?
もし、説明されているページなどがあれば、
そのURLを教えていただけると助かります。

当方、accessは入力程度しか経験がないため、
初心者向けでの説明をしていただけると幸いです。

よろしくお願いします。

Aベストアンサー

Excelからの転向者が良くする質問ですね

結論から言いますと
テーブル2にA社と入力してはいけません

テーブル1がありテーブル2でそれを参照したいときには
テーブル2には区分コードフィールドだけを設け
テーブル1とテーブル2で区分コードでリレーションシップを設定します

>VLOOKUP関数のようなものを使いたい
Access(リレーショナルデータベース・RDB)では
複数のテーブルを関連付けて物事を表現します
そのため他のテーブルを参照するということは基本中の基本になります
そのために関数を使ったりしません
もっと強力な仕組みが用意されています
それがテーブルのリレーションシップであり、クエリの結合です

これからAccessをやっていこうとお考えなら
上に書いたようなことを理解することを一番初めにやってください
すなわち、[テーブル設計][正規化][参照整合性][リレーションシップ][クエリ]などを
勉強してください

QACCESSでフォーム入力内容から自動で表示させる

顧客の口座を管理するものをAccessで作成しています。

顧客テーブルに氏名等の情報があり、別に銀行マスタテーブルとして金融機関の情報がID、銀行コード、銀行名、支店コード、支店名、と入力されているものがあります。

銀行マスタテーブルは以下の形です
銀行コード 銀行名 支店コード 支店名
1 みずほ 1 東京営業部
1 みずほ 4 丸の内中央
1 みずほ 5 丸の内
5 UFJ 5 大阪


あらかじめ、氏名等の情報は入力してあり、これから口座情報を登録していくのですが、フォームに銀行コード、支店コードを入力した際に、その下に配置したテキストボックスに銀行名、支店名を表示させたいと考えています。
銀行コードの方は値が重複しても対応する銀行名は同じなので
=DLookUp("[銀行名]","銀行マスタ","[銀行コード] = " & [Forms]![H25]![銀行コード])
でなんとかできたのですが、支店コードは各金融機関毎に割り振られ、重複するものがあるため最上段のものが表示されてしまいます。(UFJの支店コード5を表示させたいのに、みずほの支店コード5が出てきてしまう。)
そこで、複数条件で検索できるよう以下のようにしてみたのですが、うまくいきませんでした。
=DLookUp("[銀行名]","銀行マスタ","[銀行コード] = " & [Forms]![H25]![銀行コード]' And 支店コード = #" & [Forms]![H25]![支店コード] "#")
イメージとしては、そのフォームに入力した銀行コードかつ支店コードが一致する銀行マスタテーブルの支店名を、フォームに配置したテキストボックスへ表示させれればいいのかなと考えてみたのですが。(上の例で言うと、銀行コードが5で支店コードが5だからテキストボックスに「大阪」と出したい。)

関数でもVBAでも構いませんので、どなたかご教示ください。
よろしくお願いいたします。

顧客の口座を管理するものをAccessで作成しています。

顧客テーブルに氏名等の情報があり、別に銀行マスタテーブルとして金融機関の情報がID、銀行コード、銀行名、支店コード、支店名、と入力されているものがあります。

銀行マスタテーブルは以下の形です
銀行コード 銀行名 支店コード 支店名
1 みずほ 1 東京営業部
1 みずほ 4 丸の内中央
1 みずほ 5 丸の内
5 UFJ 5 大阪


あらかじめ、氏名等の情報は入力してあり、これから口座情報を登録していくのですが、フォームに銀行コード、支店コードを...続きを読む

Aベストアンサー

=DLookUp("[銀行名]","銀行マスタ","[銀行コード] = " & [Forms]![H25]![銀行コード]' And 支店コード = #" & [Forms]![H25]![支店コード] "#")

=DLookUp("[銀行名]","銀行マスタ","[銀行コード] = " & [Forms]![H25]![銀行コード] & " And 支店コード =" & [Forms]![H25]![支店コード])
では。

QAccessでvlookupみたいなことはできますか。

Accessで、2つのテーブルがあります。

touroku_m テーブル……ID、登録No、氏名、携帯メール
keitai_m テーブル……ID、登録No、携帯メール

keitai_mの方には、携帯メールフィールドに、アドレスが入力されています。
touroku_mテーブルの携帯メールフィールドは空なので、登録Noを比較して、共通だったらkeitai_mに入力してある携帯メールアドレスをtouroku_mに一気に入れたいのです。

こんなことは可能でしょうか。

Aベストアンサー

レス遅くなってすみません。
えっと、追加クエリはテーブル名を見て追加しますので、追加クエリが実行されるときにtouroku_mの名前のテーブルに追加されます。
なので最初touroku_mという名前のテーブルが名前を変えると、それには追加されませんが、またtouroku_mに戻せば追加されるようになりますよ。
要は追加クエリを実行したいテーブルの名前をtouroku_mにしとけば大丈夫です。

QAccess:フォームの自動入力方法を教えてください。

テーブル『店舗名称一覧』
<店舗コード(主キーで重複なし)、店舗名称>

テーブル『問い合わせ一覧』
<問合せID(主キーオートナンバー)、店舗コード、店舗名>


上記テーブルをリレーションシップでつなぎ、問合せ一覧フォームで入力する際に、店舗コードを入力すると自動的に店舗名称が表示されるようにしたいと思い、『フォーカス喪失時』のイベントのコードビルダで以下のように設定しましたが、以下のようなエラー表示が出て、『デバッグ』をクリックすると、以下『→』部分が黄色くなっていました。
どのように訂正すればよいのでしょうか?
ご存知の方がいらっしゃったらお教えください。


  Private Sub 店舗コード_Exit(Cancel As Integer)
   If Not IsNull(店舗コード) Then
→   店舗名 = DLookup(店舗名称, 店舗名称一覧, "店舗コード=" & 店舗コード)
   End If
  End Sub

Aベストアンサー

DLookupのcriteriaの引数の指定の仕方が違います。
"店舗コード=" & 店舗コード の部分。
店舗コードはテキスト型だと思いますが。
店舗コードのフォーカス喪失時でも更新後処理時のイベントでも良いですが。
店舗コードがテキストならcriteriaを
Me!店舗名 = DLookup("店舗名称", "店舗名称一覧", "[店舗コード] ='" & Me![店舗コード] & "'")
店舗コードが数値なら
Me!店舗名 = DLookup("店舗名称", "店舗名称一覧", "[店舗コード] =" & Me![店舗コード])

で出来ます。

QAccessでテーブルの値をテキストボックスに代入するには?

[ID][文字列]の2つのフィールドからなる単純なテーブルがあり、削除クエリを併用して常に最新のデータしか格納されていない状態に工夫できました。(データは常に1つ)
そこでフォーム上にあるテキストボックスにこのテーブルの[文字列]フィールドのデータを表示させたいのですが、
どうしたらよいでしょうか?

また、このテーブルの[文字列]フィールドのデータを直接変数として使いたい場合はVBAでどのように記述すればよいのでしょうか?

Aベストアンサー

テーブルに"データは常に1つ"ならコントロールソースに
「=DLOOKUP("文字列のフィールド名","テーブル名")」
IDごとに"データは常に1つ"ならコントロールソースに
「=DLOOKUP("文字列のフィールド名","テーブル名","[ID]='" & Me.ID & "'")」

Dlookup関数のヘルプ
http://office.microsoft.com/ja-jp/assistance/HP010496551041.aspx

QAccess コンボボックスで選択し、自動でテキストボックスに該当のデータを抽出する方法

こんにちわ。現在仕事の関係でどうしても必要になり、Accessを初めて勉強している者です。
先日もAccess関連の質問をさせて頂きましたが(ご回答頂いた方ありがとうございました)、
また難問にぶつかってしまいました。

絶対にありそうなのに、色々検索しても良いサイトが見つからず、へこんでおります…。
どなたか、わかりやすく説明されているサイトをご存知であれば教えて頂きたいのです。

・コンボボックスで選択した時に、自動で隣にあるテキストボックスに該当のデータを出す。

ということをしたいのですが…。
具体的にいいますと、

コンボボックスにて、会社名を選択すると、隣のテキストボックスにその該当する会社のドメイン名を自動で表示させたいのです。


コンボボックス                テキストボックス
  会社名                     ドメイン名

   A社  →A社を選択すると、        A.co.jp ←自動でA社のドメイン表示
   B社  →B社を選択すると、        B.com ←自動でB社のドメイン表示
   C社
   ・
   ・
   ・

こんなカンジです。(尚、図の作成はMSPゴシックでの作成なのでその他のフォントだとずれると思います。すみません)

テーブルで会社名の一覧と、ドメインの一覧の二つを作って、うまく連動させれば出来そうな気がするのですが
その方法そのものがわからないために、良い説明のあるサイトがないか、朝から調べまくっています(@_@;)
色々自分でも勉強したいというのがあるので、もし上記のような事をやる方法について書いてあるようなサイトがありましたら、
ぜひ教えて頂けると幸いです。よろしくお願いします。

こんにちわ。現在仕事の関係でどうしても必要になり、Accessを初めて勉強している者です。
先日もAccess関連の質問をさせて頂きましたが(ご回答頂いた方ありがとうございました)、
また難問にぶつかってしまいました。

絶対にありそうなのに、色々検索しても良いサイトが見つからず、へこんでおります…。
どなたか、わかりやすく説明されているサイトをご存知であれば教えて頂きたいのです。

・コンボボックスで選択した時に、自動で隣にあるテキストボックスに該当のデータを出す。

ということをし...続きを読む

Aベストアンサー

>テーブルで会社名の一覧と、ドメインの一覧の二つを作って、うまく連動させれば出来そうな気がするのですが
勘違いでないためにも
テーブルはひとつで、フィールド 会社名  テキスト型
                ドメイン ハイパーリンク型
で準備しておきます。
色々と方法はありますが
​http://ag5.net/~nino/access-19.html​
こんな方法はいかがですか。

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

QACCESS フォームからサブフォームのデータを更新・入力したい

ACCESS フォームからサブフォームのデータを更新・入力したい

tbl_プロジェクトというテーブルにIDとプロジェクトコード、プロジェクトの基本情報を持たせ、f_プロジェクトフォームからプロジェクトコード、件名、契約日等のデータ及び、f_テーマサブフォームにテーマを入力できるようなフォームを作成しています。フォームで入力したものをそれぞれのテーブルに保存したいのですがうまくいかない部分があります。

フォームから入力すると、tbl_プロジェクトに所属する情報は更新されます。そのtbl_プロジェクトに所属するプロジェクトコードをサブフォームのtbl_テーマのプロジェクトコードにも反映したいのですがどのようにしたらよいでしょうか?
そういったことは可能でしょうか?分かりにくい説明で申し訳ないですが教えていただけると助かります。よろしくお願いします!



DBの構成
【テーブル】
tbl_プロジェクト (1件1件のIDとプロジェクトコードを持つ)
(フィールド:P_ID、プロジェクトコード、件名、契約日など)
tbl_テーマ(プロジェクト毎に関連のあるキーワードを持つ)
(フィールド:P_ID、プロジェクトコード、テーマ)←これのプロジェクトコードにtbl_プロジェクトのデータが入るようにしたい。
tbl_顧客(プロジェクトを依頼した顧客情報を持つ)
【クエリ】
q_テーマ(プロジェクト、テーマ、顧客を抽出するクエリ)
【フォーム】
f_プロジェクト (プロジェクトを1件ずつ表示・参照・新規作成するフォーム)
f_テーマサブフォーム (f_プロジェクトフォームのプロジェクトコードにづきテーマを
        表示・入力するサブフォーム)

リレーションはP_IDをキーに一対多で作成しています。

ACCESS フォームからサブフォームのデータを更新・入力したい

tbl_プロジェクトというテーブルにIDとプロジェクトコード、プロジェクトの基本情報を持たせ、f_プロジェクトフォームからプロジェクトコード、件名、契約日等のデータ及び、f_テーマサブフォームにテーマを入力できるようなフォームを作成しています。フォームで入力したものをそれぞれのテーブルに保存したいのですがうまくいかない部分があります。

フォームから入力すると、tbl_プロジェクトに所属する情報は更新されます。そのtbl_プロジェク...続きを読む

Aベストアンサー

No.4です。

前回の回答は、「レコードの新規登録」のみを想定していました(汗)
大変失礼致しました。


【「メインフォーム」-「サブフォームの新規レコード」間の不一致について】
(=No.4の補足での、2個目の「◆」の件)

メインフォーム側の「レコード移動時」イベントで、『プロジェクトコード』の
更新後イベントと同様の処理を行えば、解消すると思います。
(先頭1行が「Private Sub Form_Current()」となる他は、前回のVBAと全く
 同じなので、今回は省略します)


【既存レコードでの『プロジェクトコード』の空白について】
(=No.4の補足での、1個目の「◆」の件)

対処法としては、
 a)更新クエリを使用して、tbl_テーマの『プロジェクトコード』を一括更新
  (→tbl_テーマに入力済みの『P_ID』の再確認が不要な場合)
 b)「メインフォーム上のプロジェクトコードを、サブフォームの全レコードに
  一括代入」するためのコマンドボタンを、メインフォームに追加
  (→tbl_テーマの『P_ID』が正しいかを目視確認してから代入する場合)
の、2つの考え方があります。

「a」については添付画像をご覧いただくとして、ここでは「b」について説明
します。

メインフォームに『コード転記』コマンドボタンを作成したら、そのクリック時
イベントに以下のコードを記載して下さい:

Private Sub コード転記_Click()

  If MsgBox("サブフォームにプロジェクトコードを追記します", vbOKCancel, "確認") = vbCancel Then Exit Sub

  'サブフォームの全レコードを上書き更新
  With Me![サブフォームのコントロール名].Form.RecordsetClone
    Do Until .EOF
      .Edit
      !プロジェクトコード = Me!プロジェクトコード
      .Update
    Loop
  End With

  '更新を反映
  Me![サブフォームのコントロール名].Form.Refresh

  MsgBox "追記しました", , "確認"

End Sub


なお、「a/b」のどちらを採った場合でも、サブフォームの『P_ID』の上書き
編集に合わせて『プロジェクトコード』も連動して更新させるには、別途、
以下のような『P_ID』の更新後イベントでの対応が必要です:

Private Sub P_ID_AfterUpdate()
'メインではなくサブフォームの『P_ID』テキストボックスの更新後イベント

  If IsNull(Me!P_ID) Then
    Me!プロジェクトコード = Null
  Else
    Me!プロジェクトコード = DLookup("[プロジェクトコード]", "tbl_プロジェクト", "[P_ID]=" & Me!P_ID)
    '『P_ID』がテキスト型の場合は上記ではなく以下のコード
    'Me!プロジェクトコード = DLookup("[プロジェクトコード]", "tbl_プロジェクト", "[P_ID]='" & Me!P_ID & "'")
  End If

End Sub

また、この対応を組み込んで戴けば、

> テーマを修正するとフォーム上では10001が入力される。
> tbl_テーマには反映されない。

の件も解消すると思います。
(但し、別のレコードに移動したり、メニューから「レコード(R)→レコードの
 保存(O)」を選択する等して、レコードが保存してからでないと、テーブル
 には反映されないので、確認の際はご注意下さい)


・・・以上です。

No.4です。

前回の回答は、「レコードの新規登録」のみを想定していました(汗)
大変失礼致しました。


【「メインフォーム」-「サブフォームの新規レコード」間の不一致について】
(=No.4の補足での、2個目の「◆」の件)

メインフォーム側の「レコード移動時」イベントで、『プロジェクトコード』の
更新後イベントと同様の処理を行えば、解消すると思います。
(先頭1行が「Private Sub Form_Current()」となる他は、前回のVBAと全く
 同じなので、今回は省略します)


【既存レコードでの『プロジェクトコー...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報