人に聞けない痔の悩み、これでスッキリ >>

こんにちは。
現在、アクセスを使って簡単なデータベースを
作っていたのですが、ひとつわからないことがございます。

テーブルを二つリレーションを組んで、
フォームを作ったのですが、
うまく二つのテーブルにデータが
保存できません。

フォーム:顧客ID、名前、電話番号
サブフォーム:商品ID、商品名、納期、など。。。

こういった二つのテーブルで、サブフォームの方のテーブルに
顧客のデータも保存したいんですが、できるものなのでしょうか?

初心者でわかりづらくて、
大変申し訳ございませんが、よろしくお願い致します。

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

A 回答 (2件)

#1です



> テーブル1:顧客ID、名前、電話番号
> テーブル2:顧客ID、名前、電話番号、商品ID、商品名、納期、担当者名

これは、基本的な話が、理解できてないのだと・・・
普通、
> テーブル1:顧客ID、名前、電話番号
テーブル2:顧客ID、商品ID、商品名、納期、担当者名
として、
クエリ1:顧客ID、名前、電話番号、商品ID、商品名、納期、担当者名
を使用するパターン

基本と言うのは、重複するデータは、保管しない!って話ね
    • good
    • 0
この回答へのお礼

この度は、ありがとうございました。
無事に作り上げることができました!
とても参考になりました。

お礼日時:2009/05/29 18:52

質問の意味が判りかねますが・・・



> フォーム:顧客ID、名前、電話番号
は、良いとして・・・
> サブフォーム:商品ID、商品名、納期、など。。。
サブフォーム:顧客ID、商品ID、商品名、納期、など。。。
と、レコードソースのフィールドがなっていないと・・・
サブフォームのプロパティ「リンク子フィールド」「リンク親フィールド」の設定が出来ないと思いますが・・・

どのフィールドでリレーションしたのですか?

この回答への補足

説明不足で申し訳ございません。

テーブル1:顧客ID、名前、電話番号
テーブル2:顧客ID、名前、電話番号、商品ID、商品名、納期、担当者名

これをフォームにする際、
フォーム1:顧客ID、名前、電話番号
サブフォーム:商品ID、商品名、納期、担当者
(顧客ID、名前、電話番号はフォーム上、表示はしない)

といったフォームを作りたいのですが、
顧客ID、名前、電話番号をサブフォームに
表示せずに、テーブル1とテーブル2のテーブルに
データを保存することはできるのでしょうか?

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

補足日時:2009/04/27 12:25
    • good
    • 0

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

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

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

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

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

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アクセスでテーブルの変更内容をフォームに反映させるには?

アクセス超初心者です。
テーブルを作って、その後フォームを作りました。
フォームの内容が足らなかった為、テーブルに戻って編集しました。
しかし、テーブルの変更内容がフォームに反映されません。
顧客管理のデータベースを作りたかったのですが。。
例えば、テーブルで「氏名」という項目が足らなかったとして、追加したとします。それを保存します。その後、フォームの顧客管理を開けても、反映されません。編集後、どうすればフォームに反映されるのでしょうか。。(T_T)
宜しくお願いします。

Aベストアンサー

2パターンあります。
(1)クエリーの内容をフォームに貼り付けている場合で項目を限定している時は反映されません。
 クエリーに追加した項目を反映すれば、フォームにも反映されます。(自動的にフィールド(テキストボックスなど)が作成されるわけではありません。)
(2)ウィザードで作成していた場合、一番最初は自動的にフォームが作成されフォーム上にテーブルと同じフィールドが作成されますが、その後のテーブル変更では自動的にはフィールドは作成されません。
 whitemarkさんのおっしゃるとおり、自分でフィールドを追加してください。

いずれにしても反映という意味が、「自動的にフォーム上にフィールドを作成してくれる」ということでしたら
ACCESSではウィザードで作成の最初だけですので気をつけてください。

がんばってください。

Qフォームの計算がテーブルに反映するには?

Windows2000/ACCESS2000を使用してます。
フォームで自動的に合計や消費税が計算されるように設定しましたが、保存されたテーブルを見てみると合計や消費税は空白になっていて計算された値が入力されてませんでした。
フォームでの計算式は以下のように設定しました。
合計のフィールドを選んで、プロパティを開きその中のデータタブのコントロールソースに式ビルダーで、 =A+B と設定しました。フォーム上では計算されるの
ですが・・・
どのようにしたらテーブルに計算された値が表示されるのでしょうか?
宜しくお願いします。

Aベストアンサー

no.1のものです。

No.3のお礼に対しての回答です。

フォームの計算させている名前は別のものにして下さい。
そして、フォームで計算させているところと、テーブルの方で
入力させたいところの書式は同じものにしてください。


実際にやってみた結果です。

テーブル:テーブル1
a[数値]
b[数値]
kotae[数値]

フォーム:テーブル1
a
b
kotae2[数値]
(計算式は  =[a]+[b])

フォーム上につくったボタンのコード

Private Sub コマンド6_Click()

Me![kotae] = Me![kotae2]

End Sub


です。

試してみてください。

QAccess フォームからの入力結果をテーブルにすることはできない?

Access フォームからの入力結果をテーブルにすることはできない?

使用しているのはWindows XP、Access 2003です。

とある調査結果をデータベース化する仕事を与えられています。
データ1件あたりの構成要素を一目で見れるようにするために「こういうレイアウトのフォームを作って」と上司からリクエストが出ています。

まず、今手元に集まっているデータについては、

Excelで一覧表作成 → Accessにインポートしてテーブル作成 → オートフォームでフォーム作成し、デザインビューでレイアウト変更

というふうにして、上司から言われたフォームは作りました。

今後、データは増えていくので、作ったフォームから新たにデータの追加をしていくことになるのですが・・・。

フォームからデータを追加しても、元となったテーブルにはリンクしませんよね?
とすると、データを追加した結果をテーブルにしたい場合はどうしたらいいのでしょうか?

今度は、そこからクエリを組む必要も出てくるため、テーブルにしたいのですが・・・。

Accessについては、以前勤めていた会社の研修で習っただけで詳しい使い方をずいぶん忘れてしまっています。今回、自分なりにいろいろ調べてはみたのですが、よくわかりませんでした。

もしかしたら、Accessの使い方を基本的に間違っているでしょうか・・・

よろしくお願いします。

Access フォームからの入力結果をテーブルにすることはできない?

使用しているのはWindows XP、Access 2003です。

とある調査結果をデータベース化する仕事を与えられています。
データ1件あたりの構成要素を一目で見れるようにするために「こういうレイアウトのフォームを作って」と上司からリクエストが出ています。

まず、今手元に集まっているデータについては、

Excelで一覧表作成 → Accessにインポートしてテーブル作成 → オートフォームでフォーム作成し、デザインビューでレイアウト変更

とい...続きを読む

Aベストアンサー

フォームを使って入力したデータは自動的にテーブル(一番下の行)に反映されます。

クエリはその都度、新しい情報にてデータの検索・並べ替えが行われますので
こちらも、自動的に反映されるといえます。

Qアクセス: フォーム上で計算した数字をテーブルに保存したい。

 こんばんは。また質問させてもらいます・・。
これがアクセスに関して、最後の質問になるようにしたいです!!

 さて、フォームに入力したものは自動的にテーブルに保存されます。
しかし、フォーム上で計算したものは、テーブルに反映されていませんでした。
過去の質問にフォーム上計算したものは、テーブルに反映されないということがわかりました。
では、一体どうすればいいのでしょうか。

 フォームのコントロールソースには
=([QTY]*[COST]) 数量*値段を入れています。

どうすれば、テーブルに表示できるでしょうか。
ご教授お願いいたします。

過去の質問は、こちらを参考しました。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1002073

Aベストアンサー

クエリーを覚えると便利です。
テーブル=オペレーターが入力したりする項目
クエリー=テーブルのデータプラスそれから計算出来るさまざまな項目

例えばQTYとCOSTはテーブルに
合計は 合計:[QTY]*[COST}
というようにクエリーに追加すれば、テーブルに
合計という項目を持つ必要がありません。
テーブルの「合計」を削除しても差支えありません。

また入力日という項目をテーブルに持ち
後の整理の目的でクエリーには
年:Year([入力日])
月:Month([入力日])
などとする事も可能です。

これで何年何月のデータだけを抽出したい場合でも
クエリーの抽出条件に 2004 とか 8(月)とかを
入力するだけでOKです。

合計、平均、最大、最小なども....

データベースはクエリーにあるレコードをいちいち保存するのではなく、計算式だけを覚えていて、開くたびに
計算して表示してくれるだけなのです。

QACCESSサブフォームにデータ反映されない

よろしくお願いします。

Access2010を使っています。
メインフォームにあるテキストボックス2つに条件を入力し、
抽出したデータをサブフォームで表示させたいと思います。

●メインフォーム名「フォーム1」
テキストボックス2つ「tex1」「tex2」

●データ元クエリ「q1」
フィールド名「ID1」「ID2」「Name」

●サブフォームSQL
SELECT q1.Name
FROM q1
WHERE (((q1.ID1) = Forms![フォーム1]!tex1) And
((q1.ID2) = Forms![フォーム1]!tex2)));


フォームを開き、tex1とtex2に入力してもサブフォーム表示が変わりません。
サブフォームをデータシートで別に開くと、データ抽出できていることは確認できました。

サブフォームのコントロールソースへSQLを入力するだけでは、
メインフォーム内でのデータは反映されないんでしょうか??

Aベストアンサー

>サブフォームをデータシートで別に開くと、
>データ抽出できていることは確認できました。

の部分がよくわかりませんが。


普通は、たとえば、
メインフォームにボタンを一つ
設定し、そのボタンのクリックイベントで、

Private Sub コマンド0_Click()
Me!埋め込み0.Requery
End Sub

のように設定します。
ここで、「埋め込み0」というのはメインフォームの
デザインビューでサブフォームを表示するために
設定するコントロールのことで、サブフォーム
そのもではありません。初期値は「埋め込み0」
のような名前になっています。サブフォームと
同じ名前に設定しているならば、「埋め込み0」
のところをサブフォームと同じ名前に置き換えても
かまいません。


そのほかには、「tex2」の更新後処理に同様に、

Private Sub tex2_AfterUpdate()
Me!埋め込み0.Requery
End Sub

のように設定してもいいのですが、この場合には
「tex2」に入力後、一旦フォーカスを移動させる
必要があります。たとえば「tx1」にマウスを
移動させてクリックするとか。それによって
「tex2」の更新後処理が起動されます。

>サブフォームをデータシートで別に開くと、
>データ抽出できていることは確認できました。

の部分がよくわかりませんが。


普通は、たとえば、
メインフォームにボタンを一つ
設定し、そのボタンのクリックイベントで、

Private Sub コマンド0_Click()
Me!埋め込み0.Requery
End Sub

のように設定します。
ここで、「埋め込み0」というのはメインフォームの
デザインビューでサブフォームを表示するために
設定するコントロールのことで、サブフォーム
そのもではありません。初期値は「埋め込み0」
のよう...続きを読む

Qアクセエスのレコードの更新をVBAでするには?

アクセスで、一覧表のフォームにボタンを取りつけています。レコードの内容を変更したら、ペンの形のマークが現れますね。これは変更中ということですが、そこでボタンを押しても変更は確定されないから、更新確定させたいのです。

それで、DoCmd.Requery を最初の行に入れてみたら、元の一覧表は最初のレコードに飛んでしまう。

元の一覧表の位置を動かさないために、Ctrl+Enter キーを押して更新確定させたような状態をVBAで実現する方法あるのでしょうか?

よろしくお願いします。

Aベストアンサー

No1 です。
今回の場合には
Docmd.RunCommand acCmdSaveRecord の方が良かったですね
文字通りレコードを保存します。
Requery に引きづられてしまいました (^_^;)

Recalc、Refresh、Requery の使い分けは下記が参考にはなりますか?
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

Qフォームで入力しても反映されない

ACCESSでフォームに入力しても元クエリに反映されない原因は何が考えられますか?コンボボックスからデータを入力しているのですが・・・。あと、選択クエリの更新結果が1件も表示されないのはリレーションシップの設定がまずいからでしょうか??

Aベストアンサー

元テーブルには反映されているのでしょうか?

>フォームに入力しても元クエリに反映されない

とは、そのコンボボックスからの入力値のみ反映されないのでしょうか?それともフォームで入力して保存しようとするとエラーメッセージがでて、入力自体が出来ないのでしょうか?入力は可能なのに1件もテーブルに保存されていないということなのでしょうか?

たいていのフォームで入力できな~い等の場合2つ以上のテーブルから必要項目を抜き出してクエリを作成する際の項目の選択ミスが多いのですが・・・。

また、もしかして・・・とは思いますが、ACCSESSは同時実行には弱いため、フォームも開いていて元クエリも開いていてはその場では反映されないですので一旦閉じてから開きなおさないと(クエリの再実行)なりません。

>あと、選択クエリの更新結果が1件も表示されない
についてももう少し具体的に(言葉では難しいかと存じますが)お聞かせいただけますか?

お力になれるとよいのですが。

QACCESSのフォームからデータの追加ができない

現在Accessの基本を勉強中です。
テーブルを元にフォームを作成し、フォームから新しく名前や会社名などを直接入力し、追加できるようにしたいです。
ところがフォームから入力を行うと、内容が追加されず一番最初に登録した人の名前が書き換わるだけになります。
どのように新しくデータを追加できるようになるのでしょうか?
まったくの初心者なので、どの機能を使えばよいか戸惑ってます。
どうかよいご意見をお願い致しますm(__)m

Aベストアンサー

データを追加する場合は、新規レコードに移動(=新規レコードを選択)する必要があります。

最も簡単なのは・・・
そのフォームの最下方に、レコードセレクタ(『レコード: [|<][<][   1][>][>|][*]/1』といった
感じの部分)が表示されていたら、そこで『[*]』のボタンを押すと、新規レコードに移動できます。
(もしレコードセレクタが表示されていないようなら、フォームのプロパティシートを開いて、
 『書式』タブの『レコードセレクタ』の設定値を「はい」にして下さい)

他には、
 ・フォーム自体を入力専用にする
 (フォームのプロパティシートの『データ』タブで『データ入力用』を「はい」に設定:
  既存のレコードは表示されなくなります)
 ・レコード移動用のコマンドボタンを設置する
 (フォームをデザインビューで開き、ツールボックス(矢印や、新規のテキストボックス等を
  設置する際に使用するツールバー)の左から二番目にあるウィザードボタンが押された
  状態にして、新規コマンドボタンを設置すると、簡単に作れると思います)
といった方法があります。

データを追加する場合は、新規レコードに移動(=新規レコードを選択)する必要があります。

最も簡単なのは・・・
そのフォームの最下方に、レコードセレクタ(『レコード: [|<][<][   1][>][>|][*]/1』といった
感じの部分)が表示されていたら、そこで『[*]』のボタンを押すと、新規レコードに移動できます。
(もしレコードセレクタが表示されていないようなら、フォームのプロパティシートを開いて、
 『書式』タブの『レコードセレクタ』の設定値を「はい」にして下さい)

他には、
 ・フォー...続きを読む

QAccess2007で複数のチェックボックスにチェックが入らない

Access2007で複数のチェックボックスにチェックが入らない

よろしくお願いします。

Accessでチェックボックス5つをオプショングループで囲んで、ひとまとまりにしたつもりなのですが、
複数のチェックボックスがチェックできません。
2つ目をチェックしようすると、一つ目のチェックが外れてしまいます。

どうしたらよいでしょうか。

Aベストアンサー

> Accessでチェックボックス5つをオプショングループで囲んで、ひとまとまりにしたつもりなのですが、
> 複数のチェックボックスがチェックできません。
> 2つ目をチェックしようすると、一つ目のチェックが外れてしまいます。

オプショングループとは、そういうものです。

複数選択したければ、
オプショングループの外に出しましょう。

見た目の問題なら、四角形を使って代用。


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

人気Q&Aランキング