Ac2000です。
T_マスタというテーブルに
名前や所属の課、年度などが入っています。
このTマスタから検索する検索フォームがあります。
検索ボタンがいくつかあり、
年度を検索するようにテキストボックスがあります。
年度テキストボックスにいれた年度で検索しつつ、
押した検索ボタンによって検索する方法はどのようにしたらよいでしょうか?
Ex.検索ボタンには所属の課などがかいてあり、「総務」「営業」などどかいてあります。
ソースはこんな感じです。
------------------------------
Dim SQL As String
Dim WhereCond As String
Dim condNendo As String
'年度
If Me!年度.Value <> "" Then
condNendo = "(T_マスタテーブル.年度 = " & CLng(Me!年度.Value) & ")"
WhereCond = WhereCond & " AND " & condNendo
End If
WhereCond = Mid(WhereCond, 6)
DoCmd.OpenReport "R_マスタ_一覧", acPreview, , WhereCond
End Sub
No.5ベストアンサー
- 回答日時:
こんにちは。
maruru01です。[Tマスタ]テーブルが人を管理するためのテーブルである以上、同じ人を2重に登録するのは都合が悪いと思います。
手としては、所属フィールドを複数にする(1つ目の所属が営業部、2つ目が総務部という風に入力する)
あとは、所属欄に、"営業部・総務部"と入力して、検索では、"*総務部*"という風に前後にワイルドカードを置くという方法です。
どちらにせよ面倒ですが。
この回答への補足
すいません。
印刷用のテーブルを作成することにしました。
長々とありがとうございました。
関数のつくり方覚えてまたひとつAccessが便利になりました♪
回答ありがとうございます。
フィールドを増やして
「所属グループ」「所属グループ2」「所属グループ3」・・・「所属グループまとめ」([所属グループ]&[所属グループ2]・・・となってます。)
としました。
ここで新たな問題なのですが、
今までは「T_マスタ」に「ID」「氏名」「所属」「所属グループ」などを入力していたのですが、
これからは「T_マスタ」には「ID」だけを入力し、
他は「T_社員一覧」にまとめて管理することになりました。
「T_社員一覧」は「ID」「氏名」「所属」「所属グループ」「所属グループ1」「所属グループ2」・・・「所属グループまとめ」
となっています。
教えていただいた関数の
If Me!年度.Value <> "" Then
cond = "(T_社員一覧.所属グループまとめ = '" & Syozoku & "') AND " & _
"(T_マスタテーブル.年度 = " & CLng(Me!年度.Value) & ")"
DoCmd.OpenReport "R_マスタ_一覧", acPreview, , cond
の部分を変えてみたのですが、
(「T_マスタテーブル.所属課」>「T_社員一覧.所属グループまとめ」)
これではうまく作動しませんでした。
これを回避する方法というのはあるのでしょうか?
いきなり方向転換してしまって申し訳ありませんが、よろしくお願いいたします。
No.4
- 回答日時:
コマンドボタン名は、"部"ですか。
もちろん、"*"を使用したあいまい検索は出来ます。
例)
cond = "(T_マスタテーブル.所属課 LIKE '" & Shozoku & "*') AND " & _
"(T_マスタテーブル.年度 = " & CLng(Me!年度.Value) & ")"
でもこれだと、総務部の庶務課や経理課は拾えません(あたり前ですが)。
なので、レコード数がいくつあるか分かりませんが、[T_マスタ]テーブルに、[所属部]フィールドを作った方がいいと思います。
回答ありがとうございます。
やはりこんなふうにグループ分け用の所属をつくらなくちゃだめですよね。
今それをつくっているのですが、問題が出てきました。
たとえば、「営業部」の中に「営業1課」「営業2課」の人たちが入るとします。
そして「総務部」の中に「庶務課」「経理課」「営業1課」の人たちが入るとします。
「営業1課」の人たちが「営業部」と「総務部」の両方に入ることになるんです。
こうなると、教えていただいた
myOpenReport "**課"
という方法だと1つしかダメですよね?
営業2課 → 営業部
庶務課 → 総務部
経理課 → 総務部
とすればそれぞれはわけられますが、この場合「営業1課」は
どのようにグループ分けすればいいのかわかりません。
同じひとたちを2回入力するわけにいかないし。。。
何かいいアイディアないでしょうか?
申し訳ありませんが、よろしくお願いします。
No.3
- 回答日時:
>「検索フォームのコードモジュール」ってどこでしょうか?
コマンドボタンのクリックイベントなどが書かれてある"白い紙"です。
これをモジュール、またはコードモジュールといいます。
モジュールは、フォーム(またはレポート)ごとに1枚ずつあります。
このモジュールに記述された関数は、このフォームが開いている間、このフォーム上でのみ使用出来ます。
また、どのフォームとも関係ない"標準モジュール"というのがあります。
ここにPublic(Privateのかわりに)で関数を書けば、どのフォーム上でも使用出来ます。
ちなみに、各イベントのコードは、そのコントロール(コマンドボタン)が配置されているフォームのモジュールにしか記述出来ません。
回答の補足がよくわかりません。
質問の文意から、ユーザーが入力する年度と、ある特定の所属の両方に当てはまるレコードを抽出してレポートに出すと思ったんですが。
"ひとつのボタンで複数の所属を出す"とは?
回答ありがとうございます。
>回答の補足がよくわかりません。
>質問の文意から、ユーザーが入力する年度と、ある特定の所属の両方に当てはまるレコードを抽出してレポートに出すと思ったんですが。
はい、その通りです。
>"ひとつのボタンで複数の所属を出す"とは?
たとえば「総務」というボタンを押したときには、
「総務課」「庶務課」「経理課」などが抽出される。
「営業」というボタンを押した時には、
「営業1課」「営業2課」などが抽出される、という意味です。
おわかりいただけたでしょうか?
教えていただいたコードで試したら条件がひとつだけ、でしたら無事できました。
上記にかいたように、複数検索、そしてあいまい検索(総務部・総務課を「総務*」で検索できる、みたいな
感じで)ができれば教えてください。よろしくお願いします。
No.2
- 回答日時:
再びmaruru01です。
myOpenReport関数を次のように書き換えます。
Private Sub myOpenReport(Shozoku As String)
Dim cond As String
If Me!年度.Value <> "" Then
If Shozoku = "なし" Then
cond = "T_マスタテーブル.年度 = " & CLng(Me!年度.Value)
Else
cond = "(T_マスタテーブル.所属課 = '" & Shozoku & "') AND " & _
"(T_マスタテーブル.年度 = " & CLng(Me!年度.Value) & ")"
End If
DoCmd.OpenReport "R_マスタ_一覧", acPreview, , cond
Else
MsgBox "年度を入力して下さい。"
End If
End Sub
(ただの)[検索]ボタンのクリックイベントには
myOpenReport "なし"
それ以外の所属(例えば営業)の付いたボタンのクリックイベントには
myOpenReport "営業"
これでいけると思いますが。
この回答への補足
クエリで出す際のSQLです。
(ひとつのボタンで複数の所属を出すことがあるので。。。)
SELECT T_マスタテーブル.年度, T_マスタテーブル.時期, T_マスタテーブル.社員番号, T_マスタテーブル.社員氏名,・・・
FROM T_マスタテーブル
WHERE (((T_マスタテーブル.所属) Like "購買*" Or (T_マスタテーブル.所属) Like "生産管理*" Or (T_マスタテーブル.所属) Like "業務*"));
何度もありがとうございます。
すいませんがわからないことがあるのでよろしくお願いします。
>検索フォームのコードモジュールの適当な場所・・・
「検索フォームのコードモジュール」ってどこでしょうか?
よろしくお願いします。
No.1
- 回答日時:
こんにちは。
maruru01です。検索フォームのコードモジュールの適当な場所(一番下とか)に次の関数を自作します。
Private Sub myOpenReport(Shozoku As String)
Dim cond As String
If Me!年度.Value <> "" Then
cond = "(T_マスタテーブル.所属課 = '" & Shozoku & "') AND " & _
"(T_マスタテーブル.年度 = " & CLng(Me!年度.Value) & ")"
DoCmd.OpenReport "R_マスタ_一覧", acPreview, , cond
Else
MsgBox "年度を入力して下さい。"
End If
End Sub
各コマンドボタンのクリックイベントに以下のコードを記述します。
([cmd営業]ボタンの場合)
Private Sub cmd営業_Click()
myOpenReport "営業"
End Sub
いつもいつもお世話になります。
ちょっと描き方が悪かったようですね(--;
検索ボタンは「(ただの)検索」(←通常使う検索ボタンです。)「営業」「経理」・・・
とあり、「営業」を押した時は、検索フォームに入力された年度を検索しつつ、マスタの
「営業」を検索して、レポートに表示させたいのです。
ただ、所属の箇所に「営業」と入力しなくても、ボタンを押したら「営業」を検索したことと
同じ結果が出せるようにしたいのです。
また、レポートはどの所属を検索しても同じレポートを使おうと思っています。
(検索ごとに条件は変わるけど、レポートは変わらないということです。)
説明が下手ですいません。
よろしくお願いします。
# もし勘違いをしていたらすいません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBA チェックボックスの設定について 1 2022/10/24 10:27
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- Visual Basic(VBA) ワークブック内すべて検索 2 2022/12/20 20:13
- Access(アクセス) Access 複数条件検索の設定が上手く行きません 1 2022/07/22 20:37
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access レコードを追加できませ...
-
検索結果の列数を動的に変更したい
-
INSERT文で発行したオートナン...
-
Access2000での複合検索について
-
売価変更がある商品の売上金額
-
データベースの正規化について
-
ACCESS 複数テーブル・複数フィ...
-
データを削除しても表領域の使...
-
datapumpの実行方法について
-
Data Pump で大量データインポ...
-
count(1)とcount(*)の違い
-
truncate文で全テーブルを一気...
-
テーブルからのselectにおいて...
-
postgreSQLのint型は桁数指定が...
-
1つのテーブル・2つの列を結合...
-
処理速度の見積もり時間について。
-
CLOB型へのINSERT
-
テーブルのリンク(ACCESS)
-
sqlで質問です。 idに紐付くkbn...
-
Access2019でフォームから入力...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access レコードを追加できませ...
-
ACCESS 複数テーブル・複数フィ...
-
検索結果の列数を動的に変更したい
-
列が255以上のCSVファイルをAcc...
-
AccessのInsertクエリのあとつ...
-
【Access】外部結合を行う前に...
-
INSERT文で発行したオートナン...
-
複数あるAccessのテーブルを一...
-
複数テーブルをひとつのテーブ...
-
Accessで、マスター情報を参照...
-
Access2002 マスタテーブル変更...
-
AS/400のDBについて
-
ACCESSでの文字列の比較
-
コンボボックスの2段階絞込み
-
検索フォームで検索するものが...
-
Accessのテーブル内の文字の置...
-
売価変更がある商品の売上金額
-
データを削除しても表領域の使...
-
Viewにインデックスは張れ...
-
異なるスキーマからデータを抽...
おすすめ情報