最新閲覧日:

Access初心者です。教えてください。

現在Microsoft Access2013にてDBを構築しました。(Tableは6つで全てリレーションで結んでいる。)
inputテーブルを作成し、そのテーブルに手動で引数をセットしクエリーウィザードにて
呼び出したいフィールドを選ぶと想定したクエリーが出るように作りました。

しかし、周りの人に展開する際に、inputテーブルを開いて、そこに値をセットするのではなく、
フォームのようなものに引数を選択して、ボタンを押すとクエリーが出てくるようにして欲しいと要望が出ました。

1.フォームを作成し、inputテーブルに引数をセット
2.セットされた引数をもとにクエリーを作成。
この2段階で作成なのかなと考えています。

作り方のガイドやもっといい方法などあったら教えてください。

A 回答 (1件)

    • good
    • 0

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

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

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

QMS-Access 複数のフィールドをリレーションシップする方法

いつもお世話になっております。
Accessでレシピのデータベースを作成しております。

レシピのテーブルのフィールドは
・レシピID
・レシピ名称
・原料1
・原料2
・原料3 ・・・
・原料1必要量
・原料2必要量
・原料3必要量・・・
となっています。

レシピとは別に原料のテーブルもあり、
・原料ID
・原料名
・メーカー
等となっています。

レシピテーブルの原料1・2・3には原料IDを入力し
原料テーブルから原料名などを引っ張ってきたいのですが、
それぞれをリレーションシップで結ぶことが出来ません。(1つしかできない)

どのようにすれば良いのでしょうか?
ご教示のほど、よろしくお願いします。

Aベストアンサー

テーブルの構成がちょっと違う気がします。

レシピのテーブル
レシピID、原料ID,原料必要量の3つのフィールドで十分です。
※名称は、このテーブルに入れてもいいし、別途レシピ名テーブルを用意してもいいでしょう。

データとしては、下記のようなテーブルです。
レシピID 原料ID 必要量
1    AA    20
1    BB    30
1    CC    10
2    BB    40

このテーブルの原料IDと原料テーブルのIDを多対1の関係でリレーションさせます。

リレーションを構築せずにクエリで都度結合させるなら現状のテーブル構成でもいいと思いますが。

QACCESS2013 VBA サブフォームから別なサブフォームを参照

いつもお世話になってます。
フォームAにサブフォームを2つ(サブ1とサブ2)を配置しています。
サブ2の紹介者コードが更新されたら、サブ1の会員コードを参照して、テーブル”紹介”に以下のデータを追加するようにVBAを書いています。サブ1は家族データで世帯コードで世帯主を判断、サブ2は紹介者データ。

サブ2の紹介者コード:
Private Sub 紹介者コード_AfterUpdate()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("紹介")
With forms!フォームA!サブ1.Form.RecordsetClone
.MoveFirst
Do Until .EOF
With rs
If !世帯コード <> 1 Then '世帯主はすでに登録済み
.AddNew
.Fields("会員コード").Value = !会員コード
.Fields("紹介者コード").Value = Me.紹介者コード
.Update
End If
End With
.MoveNext
Loop
End With

rs.Clone
Set rs = Nothing
db.Close
Set db = Nothing
End Sub

これを実行すると、サブ1のrecordsetcloneのメンバー(!世帯コードと!会員コード)が
実行時エラー’3265’ このコレクションには項目がありませんとエラーになる。

別なフォームで親側からサブフォームを参照するのには問題ありません。
サブフォームから別なサブフォームの内容を参照するには、何か工夫がいるのでしょうか?

よろしくお願いします。

いつもお世話になってます。
フォームAにサブフォームを2つ(サブ1とサブ2)を配置しています。
サブ2の紹介者コードが更新されたら、サブ1の会員コードを参照して、テーブル”紹介”に以下のデータを追加するようにVBAを書いています。サブ1は家族データで世帯コードで世帯主を判断、サブ2は紹介者データ。

サブ2の紹介者コード:
Private Sub 紹介者コード_AfterUpdate()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("紹介")
...続きを読む

Aベストアンサー

この
With rs

End With
の中の、!世帯コード、!会員コード、などの
「親」(と言ってよいのかわからないが)は
すべて、rs、つまり"紹介"を指定していることになります。

Private Sub 紹介者コード_AfterUpdate()
  Dim db As DAO.Database
  Dim rs As DAO.Recordset,rs2 as dao.recordset
  Set db = CurrentDb
  Set rs = db.OpenRecordset("紹介")
  set rs2=forms!フォームA!サブ1.Form.RecordsetClone
  rs2.MoveFirst
  Do Until rs2.EOF
    With rs
      If rs2!世帯コード <> 1 Then '世帯主はすでに登録済み
      .AddNew
      .Fields("会員コード").Value = rs2!会員コード
      .Fields("紹介者コード").Value = Me.紹介者コード
      .Update
      End If
    End With
    .MoveNext
  Loop
後略
では?

この
With rs

End With
の中の、!世帯コード、!会員コード、などの
「親」(と言ってよいのかわからないが)は
すべて、rs、つまり"紹介"を指定していることになります。

Private Sub 紹介者コード_AfterUpdate()
  Dim db As DAO.Database
  Dim rs As DAO.Recordset,rs2 as dao.recordset
  Set db = CurrentDb
  Set rs = db.OpenRecordset("紹介")
  set rs2=forms!フォームA!サブ1.Form.RecordsetClone
  rs2.MoveFirst
  Do Until rs2.EOF
    With rs
      ...続きを読む

QACCESS2013 クロス集計以外で、変動するテーブルの値を別のテーブルのフィールドに

お世話になります。
Access2013 Win8.1 初心者です。

クロス集計以外で、変動するテーブルの値を、別のテーブルのフィールドにする方法を教えて下さい。
例)
テーブルA
フィールド(野菜)
値(トマト){←変動します。}
値(ナス){←変動します。}

テーブルB
フィールド1(テーブルAの値(トマト))
フィールド2(テーブルAの値(ナス))

集計が複雑で、テーブルAとテーブルBを初めにクエリで結合して、クロス集計を
行ったのですが、その後の集計などに支障が出て、上記方法を考えています。

宜しくお願い致します。

Aベストアンサー

何がしたいのか、少し見えてきましたが、まだよくわかりません。
差し支えない範囲で以下を教えていただけますでしょうか?

>集計が複雑で、テーブルAとテーブルBを初めにクエリで結合して、クロス集計を行ったのですが、その後の集計などに支障が出て、上記方法を考えています。

テーブルAはテーブルBの集計ではない(計算が合いませんが)とすると、このデータはどこから来るものなのですか? (クエリ1のデータを出すためには、テーブルB一つのクロス集計クエリで用が足りると思います。)

その後の集計とは何をしたいのですか?

QACCESS SQLクエリーの活用について

以下データ群(テーブル名:table1)があります(会員番号はユニークをあらわします)。


注文日   会員番号  商品名  価格
2014/04/11 123456 パンツ  1000 ←一番古い注文日の行(4/11開始)が先頭
2014/04/20 123456 靴下   3000
2014/05/23 456789 半袖   2000
2014/05/23 456789 靴下   3000
2014/05/29 456789 パンツ  1000
2014/05/30 987654 靴下   3000
2014/06/09 987654 寝巻き  5000
2014/06/15 987654 下駄   4000


そして、

SELECT Q4.注文日, Q4.会員番号, Q4.商品名, Q3.購入回数, Q3.LTV
FROM
(SELECT Q1.注文日, Q1.会員番号,
Count(Q2.会員番号)+1 AS 購入回数,
DateDiff('d', Nz(Min(Q2.注文日),Q1.注文日), Q1.注文日) AS LTV
FROM
(SELECT 会員番号, 注文日 FROM ★★ GROUP BY 会員番号, 注文日) AS Q1
LEFT JOIN
(SELECT 会員番号, 注文日 FROM ★★ GROUP BY 会員番号, 注文日) AS Q2
ON Q1.会員番号=Q2.会員番号 AND Q1.注文日>Q2.注文日
GROUP BY Q1.会員番号, Q1.注文日) AS Q3
LEFT JOIN ★★ AS Q4
ON Q3.会員番号=Q4.会員番号 AND Q3.注文日=Q4.注文日
ORDER BY Q4.会員番号, Q4.注文日
;

達人からアドバイスいただいていた
上記SQLクエリーからの表示は

注文日 会員番号 商品名 購入回数 LTV
2014/04/11 123456 パンツ 1 0
2014/04/20 123456 靴下 2 9
2014/05/23 456789 半袖 1 0
2014/05/23 456789 靴下 1 0
2014/05/29 456789 パンツ 2 6
2014/05/30 987654 靴下 1 0
2014/06/09 987654 寝巻き 2 10
2014/06/15 987654 下駄 3 16

と出ます(GOOD!!!)。



上記に付随して、
このクエリーが参照しているテーブルの他の列(例:氏名、都道府県)もある(集計対象ではない)場合でそれも追加で(列名:氏名、都道府県を)表現するためには、

SELECT Q4.注文日, Q4.会員番号, Q4.商品名, Q3.購入回数, Q3.LTV

の構文箇所に2つの列名も手打ちで追加する必要がありますでしょうか。
(テーブル列名すべてを表示する・・といった個別に列名を指定しないで表示する方法はあるのでしょうか<列名が多いときに手間が若干かかる)

以下データ群(テーブル名:table1)があります(会員番号はユニークをあらわします)。


注文日   会員番号  商品名  価格
2014/04/11 123456 パンツ  1000 ←一番古い注文日の行(4/11開始)が先頭
2014/04/20 123456 靴下   3000
2014/05/23 456789 半袖   2000
2014/05/23 456789 靴下   3000
2014/05/29 456789 パンツ  1000
2014/05/30 987654 靴下   3000
2014/06/09 987654 寝巻き  5000
2014/06/15 987654 下駄   4000


そして、

SELECT Q4.注文日, Q4.会員番号, Q4.商品名,...続きを読む

Aベストアンサー

#1ですが、訂正

>> SELECT Q4.注文日, Q4.会員番号, Q4.商品名, Q3.購入回数, Q3.LTV
> でOK。
はまちがい

SELECT Q4.注文日, Q4.会員番号, Q4.氏名, Q4.都道府県, 4.商品名, Q3.購入回数, Q3.LTV
です

QACCESSクエリーについて(ユニーク数の抽出等)

久しぶりにACCESSを触っているのですがバージョンも上がり、手間取っています(2010)。


テーブルに以下項目で1万レコード有ります


顧客ID 顧客名 サービス名 金額 電話番号

12345 山田花子  お花    2100 03-1234-5678
23456 太田太一  バラ    4200 03-4567-7890
45678 佐藤百合子 ゆり    3300 045-123-456
23456 太田太一  つぼ    5500 03-4567-7890
 ・
 ・


電話番号はダブりもあります(複数回購入している人もいるため)。


1.電話番号がダブりの時にはそれは1とカウントし、電話番号のユニーク数を知りたい。

2.1のユニーク(電話番号)毎(電話番号で重複ある場合はその合計を加算する)の累積金額を出したい。

3.1でダブりがあった場合、ダブりの件数をユニーク(電話番号)毎に知りたい。


※人によっては1行のみ、ヘビー購入者は10行あるといったように購入頻度はまちまちです


集計クエリー、選択クエリーで算出できないでしょうか。
(達人には基本的な質問だとおもい恐縮ですが御教授いただければ幸いです)

久しぶりにACCESSを触っているのですがバージョンも上がり、手間取っています(2010)。


テーブルに以下項目で1万レコード有ります


顧客ID 顧客名 サービス名 金額 電話番号

12345 山田花子  お花    2100 03-1234-5678
23456 太田太一  バラ    4200 03-4567-7890
45678 佐藤百合子 ゆり    3300 045-123-456
23456 太田太一  つぼ    5500 03-4567-7890
 ・
 ・


電話番号はダブりもあります(複数回購入している人もいるため)。


1.電話番号がダブりの時にはそれは...続きを読む

Aベストアンサー

デザインビュー>SQLビューと進んで、以下をコピペ。
その後、デザインビューに戻して下さい。

1.電話番号がダブりの時にはそれは1とカウントし、電話番号のユニーク数を知りたい。
Select Count(Distinct [電話番号] ) From テーブル;


2.1のユニーク(電話番号)毎(電話番号で重複ある場合はその合計を加算する)の累 積金額を出したい。
Select [電話番号], Sum([金額]) as 累積金額 From テーブル Group by [電話番号];

3.1でダブりがあった場合、ダブりの件数をユニーク(電話番号)毎に知りたい。
ダブリのみ表示なら
Select [電話番号], count(*) as ダブりの件数 From テーブル
Group by [電話番号]
Having count(*) > 1;

ダブらないものだけ表示なら
Select [電話番号], count(*) as ダブりの件数 From テーブル
Group by [電話番号]
Having count(*) = 1;

いっさいがっさい表示なら
Select [電話番号], count(*) as ダブりの件数 From テーブル
Group by [電話番号];

デザインビュー>SQLビューと進んで、以下をコピペ。
その後、デザインビューに戻して下さい。

1.電話番号がダブりの時にはそれは1とカウントし、電話番号のユニーク数を知りたい。
Select Count(Distinct [電話番号] ) From テーブル;


2.1のユニーク(電話番号)毎(電話番号で重複ある場合はその合計を加算する)の累 積金額を出したい。
Select [電話番号], Sum([金額]) as 累積金額 From テーブル Group by [電話番号];

3.1でダブりがあった場合、ダブりの件数をユニーク(電話番号)毎に知り...続きを読む


人気Q&Aランキング

おすすめ情報