プロが教えるわが家の防犯対策術!

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

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

A 回答 (2件)

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



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

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

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

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

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

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

この回答への補足

ありがとうございました。
普段入力済みのデータをアクセスで分析することしかしていなかったものですから、フォームを作り、データを入力していく段階から作るのはほぼ初めてで・・・。フォームでデータを入力してからクエリで分析していこうかなと今は考えています。

補足日時:2007/05/08 23:00
    • good
    • 1

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


> 何が考えられますか?
私が、思いつく範囲で・・・
・非連結フォームで入力して、データを更新してない?
・入力しているクエリと表示しているクエリが別テーブルを参照?

「入力しても」となってるので、入力できている前提で書いてあるのですが入力は出来てるので良いのですよね?
    • good
    • 0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

よろしくお願いします。

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

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

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

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

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

とい...続きを読む

Aベストアンサー

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

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

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

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

Aベストアンサー

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

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

がんばってください。

Qaccessでフィールド追加のあとフォームに反映されない

access2002を使っています。

あるテーブルを元に、フォームをつくってあるのですが、テーブルにフィールドを1つ追加しました。

フォームでもそのフィールドを表示させたいのですが、
フィールドリストの中に追加したフィールドが出てきません。

説明がわかりづらくて申し訳ありませんが、
反映されない原因がわかりましたら教えてください!

Aベストアンサー

フォームのレコードソースに追加されていないと思われます。フォームのプロパティを開きレコードソースの指定を確認してみてください。

追加するにはレコードソースの右にあるボタンをクリックしてSQLクエリビルダを開き追加したフィールドも追加してあげれば表示できると思います。

Qテーブルに表示されているものがクエリに表示されない

Windows NTでAccess2000を使っています。(ACCESSは初心者です)
あるテーブルに入っている伝票番号をクエリでひっぱってみたのですが
テーブルにはある番号ががクエリでは出てこないものがあります。
昇順に並び替えているぐらいで特に抽出条件を設けているわけでもないのに
何がおかしいのでしょうか??
教えてください。よろしくお願いします。

Aベストアンサー

ふたたび。

伝票番号のテーブルをAとして、Aを基準にテーブルB/テーブルCがそれぞれ何らかの形でリンクされているとします。
まず、その状態で伝票を「探す処理」を追っかけて見ます。

0.入力により、伝票番号を指定

1.Aの伝票番号=入力された番号
2.A-Bのリンクされているテーブル同士で、等しいもの
3.A-Cのリンクされているテーブル同士で、等しいもの

という処理が行われています。
2・3の処理が行われるのは、リンクが行われている為です。
2・3どちらか、片方でも成立しない場合、表示対象外になります。

【対応】
一時的に「リンク」をなくすことで、2・3の処理を回避できます。

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
とすれば良いでしょう。

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

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

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

Aベストアンサー

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

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

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

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

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

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

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と全く
 同じなので、今回は省略します)


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

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

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

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

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

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

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

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

Aベストアンサー

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

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

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

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

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

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


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

人気Q&Aランキング