
初めてのAccessで分からない事があり質問させてください。
<会社テーブル>
会社ID
会社名
住所
<社員テーブル>
会社ID
社員名
ソート番号
*1社に対し複数の社員レコードが存在
以上のようなテーブルがあるとします
現在「会社テーブル」を表形式で一覧表示しています
会社ID,会社名、住所とフィールドが並んでいるのですが、その後ろに「社員テーブル」のソート番号が一番若い社員名を表示したいと考えています(現状は番号関係なく表示させる方法すら分かりません)
色々いじくりまわしたのですが、初めてAccessをさわる事もあってよくわかりません
リレーション等でひっぱってくる事ができるのでしょうか?
どなたか教えて頂けませんでしょうか
何卒よろしくお願い致します
PS.Access2013で作成中です
No.2ベストアンサー
- 回答日時:
単純にテーブル[会社]のみでフォームを作成し、社員表示用テキストボックスを追加。
そして、そのプロパティを表示しコントロールソース=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/HA …
DLookup()については、マイクロソフトの解説を参照されてください。
【DLookup()の限界を破るにはVBAで同じ関数を作るしかない】
マイクロソフトの解説を読めば判りますが、ORDER BY 節を指定する引数が用意されていません。ですから、どうしても、"社員ソートクエリ"を作成するという手間が必要となります。そこで、SQL文を引数とするDBLookup()をVBAで書けば、その手間を省けるという算段になります。この辺りは、好みと趣味の問題。どっちでも良いと思います。そういうお断りをした上で DBLookup()を紹介しておきます。なお、ADOは、つぎのように参照設定しないと利用できません。
http://www.happy2-island.com/access/gogo03/capte …
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

お礼が遅くなって申し訳ありません
今回は「標準モジュールに登録したユーザ関数」を使わせて頂きました
他のデータベースやプログラムは経験があるのですが、Accessの表示に関する事がさっぱり分からなかったので非常に助かりました
本当にありがとうございました
No.1
- 回答日時:
> ソート番号が一番若い社員名を表示したいと考えています
「1社につき1名以上の社員が居るが、最初の1名だけ出れば良い」
すなわち「表示されるレコード数は会社テーブルのレコード数」でOK?
1)テーブルのうち、会社ID別のソート番号の最小値を求めるクエリを作る
2)1)のクエリを呼ぶクエリを作り、社員テーブルを追加して
会社IDとソート番号を関連付け、会社IDと社員名を求めるクエリを作る
3)2)のクエリを呼ぶクエリを作り、会社テーブルを追加して
会社IDを関連付け、会社IDと会社名と住所と社員名を求めるクエリを作る
4)3)のクエリからフォームを作る
うまく作れば1)2)3)をひとつのクエリにできるけど、
順を追って作るほうが理解しやすいと思います。
1)2)は、昇順ソートとTop 1でひとまとめも可
お礼が遅くなって申し訳ありません
なるほど、クエリでフォームを作成してしまえばいいのですね
ただ、今回はその後の絞り込みの検索等色々しなくてはいけないので、その方法を模索する時間短縮の為に「標準モジュールに登録したユーザ関数」を使う方法を採用致しました
折角教えてくださったのに申し訳ありません
今後時間がある時に上記の方法を試してみようと思います
ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
- SQL Server SQL Oracle serverにって質問です。 会社テーブルがあり、そのテーブルから 社員名、給 4 2022/05/21 12:22
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- SQL Server AccessのInsertクエリのあとつづけてDeleteクエリを行いたいがSQLでどう書いたらいい 3 2023/05/27 14:12
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Access(アクセス) Accessのリンクテーブルのパスを相対パスにする方法について教えて頂きたいです 1 2023/02/08 13:29
このQ&Aを見た人はこんなQ&Aも見ています
-
access別のテーブルを参照してテキストボックスに値を表示、編集したい
Access(アクセス)
-
Accessでテーブルの値をテキストボックスに代入するには?
Access(アクセス)
-
Accessでフォームから別フォームのテキストボックスの値を設定する
Visual Basic(VBA)
-
-
4
Acccessで2つのテーブルから1つのフォームをつくりたい
Access(アクセス)
-
5
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
6
前のレコードの値を自動で入れたい
PowerPoint(パワーポイント)
-
7
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
8
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
9
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
10
新規レコード行を非表示にしたい
Access(アクセス)
-
11
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
12
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
13
AccessでIDを入力したら他の項目も自動で表示
Access(アクセス)
-
14
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
15
Access2013。テキストボックスにクエリの値を表示したい。 ①テーブル「受注情報」 フィールド
Access(アクセス)
-
16
access テキストボックスの値取得
Access(アクセス)
-
17
ACCESSでフォームを使って、テーブルを参照、データ入力、データ更新をしたいのです
Access(アクセス)
-
18
accessでクエリをExcelにエクスポートする時にファイル名に日付を追加したい
Access(アクセス)
-
19
アクセスでの、フォームとテーブルの連動の方法を教えてください
Access(アクセス)
-
20
アクセスで#エラーを表示させない方法は?
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスとファイルメーカでは...
-
テーブル定義の常識
-
フォーム入力後の更新
-
重複項目を取得するSQL分
-
アクセス 教えてください。 超...
-
【SQL2000】アクセスログからレ...
-
SELECT文で重複せずに取得する...
-
SQL文の書き方
-
Access2000の重複チェック
-
Access フォーム 選択されてい...
-
実績累計の求め方と意味を教え...
-
update文について
-
SQL・・・分かりません。
-
エクセのオートフィルタ
-
データが重複するのを回避する...
-
全パターンを出力するSQL文
-
アクセスでレポートの1印刷内...
-
ACCESS2000 SQL 最大レコード数
-
group by句
-
VBAでEXCELファイルからデータ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessで別テーブルの値をフォ...
-
最新の日付とその金額をクエリ...
-
アクセスで「空き番」の確認
-
access 自動採番 年が変わる...
-
[Access]異なるレコード間の文...
-
vba 直前の操作はキャンセルさ...
-
【アクセスVBA】テーブルにフィ...
-
Accessでのレコード存在チェック
-
条件をつけて日付の古い行を抜...
-
Accessで日付が変わると番号が...
-
access 自動採番 「10-AA-000...
-
MS Accessで行指定検索の方法
-
Recordset.FindFirstについて
-
サイベースには、オラクルのROW...
-
アクセスで挿入時のVALUES以下...
-
Access:抽出して、色をつけたい。
-
初歩的な表の変換をしたい
-
【SQL】existsでの商演算
-
Access 文字+年ごとの自動採番
-
候補キーの求め方
おすすめ情報