
No.3ベストアンサー
- 回答日時:
No.2です。
> 現在[顧客マスタ]![顧客カナ]=[Forms]![顧客情報検索]![顧客カナ] と式を入れている
「顧客情報検索」フォームの「顧客カナ」コントロールの値であいまい検索をしたい、ということですね。
でしたら、以下のように変えれば可能になると思います。
現在:
[顧客マスタ]![顧客カナ]=[Forms]![顧客情報検索]![顧客カナ]
変更後:
[顧客マスタ]![顧客カナ] Like "*" & [Forms]![顧客情報検索]![顧客カナ] & "*"
これで、「顧客カナ」に入力した文字列を含むものを検索できます。
なお、「先頭一致/後方一致をユーザーが選択できるようにしたい」という場合は、
変更後:
[顧客マスタ]![顧客カナ] Like [Forms]![顧客情報検索]![顧客カナ]
としておいた上で、ユーザーに「*」を含めて入力してもらう、というのが、プログラムを
組む側としては一番簡単かと思います。
(「モリ」を含む場合は「*モリ*」、「モリ」で始まる場合は「モリ*」、「モリ」で終わる場合は
「*モリ」、「モリ」の完全一致の場合は「モリ」と、それぞれ入力してもらいます)
No.4
- 回答日時:
ANo.1 です。
ANo.2 さんの書かれたように、
>VBAのコードではなく、『マクロ』オブジェクトでの「フィルタの適用」アクションの引数についてのご質問、
ということだったのですね。
また、質問の趣旨も取り違えていました。
フィールド名をあいまい検索して、SQL文のWhere句に入れるものと思い込んでいました。
知識不足と思い込みで的外れの回答をしてしまったようです。
失礼しました。
その上、丁寧なお礼の言葉まで頂き恐縮です。
ANo.2 さんが質問を解決してくださったようなので、viva123 さんが解決したと
思われたら質問を締め切ってくださいますようお願いします。
(質問を締め切らないと、同じ疑問を持った方が同じ質問を投稿することになってしまいます。
また、回答をしようと思われた方がまだ解決していない質問としてこの質問を開いてしまいます。)
それでは、マクロ & VBA のお勉強を頑張ってください!!
こちらこそ質問の仕方がまずかったのです・・・
このサイトに質問したのは今回が初めてです
質問を締め切るということも気付いていなかったので助言助かりました。重ねて感謝です!また初歩的な質問をすると思いますが、これからもよろしくお願いいたします!
No.2
- 回答日時:
VBAのコードではなく、『マクロ』オブジェクトでの「フィルタの適用」アクションの引数についてのご質問、
ということでよろしいでしょうか。
でしたら、『Where条件式』には下記のように、対象フィールド名を角括弧([ ])で囲んで左辺に指定し、
「Like」を挟んで、右辺に検索したい文字列とワイルドカード文字「*」をダブルクォーテーション「" "」で
括って指定します。
フォームのコントロール名ではなく、レコードソースのテーブルやクエリのフィールド名を指定することに
注意してください。
(フィールド名とコントロール名が同じなら問題ありませんが)
a)『商品名』が「チョコ」を含むものを抽出
→「[商品名] Like "*チョコ*"」
b)『商品名』が「アップル」で始まるものを抽出
→「[商品名] Like "アップル*"」
c)『商品名』が「ケーキ」で終わるものを抽出
→「[商品名] Like "*ケーキ"」
d)『商品名』が「チョコ」か「ショコラ」を含むものを抽出
→「[商品名] Like "*チョコ*" Or [商品名] Like "*ショコラ*"」
e)『商品名』が「チョコ」を含み、「ケーキ」で終わらないものを抽出
→「[商品名] Like "*チョコ*" And [商品名] Not Like "*ケーキ"」
f)『商品名』が「レモン」を含み、『発売日』が空白(Null)のものを抽出
→「[商品名] Like "*レモン*" And [発売日] Is Null」
※矢印と括弧『→「 」』はWhere条件式への入力は無用です。括弧内の文字列だけを入力して下さい。
この回答への補足
早速の回答ありがとうございました。少し質問の記述が足りなかったようです・・・すみません
実は顧客検索をかけるフォームを作成し、そこで顧客名の一部を入力したら、該当者のデータを顧客マスターテーブルから表示するというものなのですが、マクロオブジェクトでのフィルタの実行のところでのwhere条件式"SQLステートメントのwhere句または式の入力"をするよう指示があります。現在[顧客マスタ]![顧客カナ]=[Forms]![顧客情報検索]![顧客カナ] と式を入れているのですがあいまい検索ができません。(フルで名前を入力すると検索できます。)どこにlikeを入れたらいいのでしょうか?フィールドで設定をしたいのです(入力値を限定できません。)マクロだけでは無理なのでしょうか?再度知恵をお借りできればと思います。よろしくお願いします
No.1
- 回答日時:
手順としては、
1. テーブルを指定する
2. 指定したテーブルのフィールド名の一覧を取得する
3. フォームで入力された文字列と、2.で取得したフィールド名の一覧を
あいまい検索で比較し、一致したものを取得
4. 3.で取得したフィールド名を変数などに格納する
5. 4.で格納した値をWhere句で使用する
となるでしょうかね。
参考URL) フィールド名一覧の取得
http://www.geocities.jp/cbc_vbnet/tips/Tabli_Fie …
を参考に、それらしいサンプルを書いてみました。
なお、DAOが無いと怒られる場合は、VBE (=コードビルダ)の
ツール -> 参照設定 で Microsoft DAO ... にチェックを入れれば良いはずです。
サンプルでは、text0, text1 という2つのテキストボックスがあり、
text0に適当な文字列を入力すると、text1にあいまい検索したフィールド名が表示される。
というものです。
(サンプルの[テーブル名]を書き換える必要があります。)
あとは、text1.Value を Where句で使用すればよいのではないでしょうか。
もちろん、text1.Value の代わりに別の変数にフィールド名を格納し、それを
使用してもOKです。
==== Sample Code ====
Dim DB As DAO.Database
Dim Tbf As DAO.TableDef
Private Sub Form_Close()
DB.Close
Set DB = Nothing
End Sub
Private Sub Form_Load()
Set DB = CurrentDb
Set Tbf = DB.TableDefs("[テーブル名]")
End Sub
Private Sub text0_Exit(Cancel As Integer)
Dim Fld As DAO.Field
For Each Fld In Tbf.Fields
'Debug.Print Fld.Name, 'フィールド名
'Debug.Print Fld.Type, 'データ型
'Debug.Print Fld.Size 'サイズ
If Fld.Name Like "*" + text0.Value + "*" Then
text1.Value = Fld.Name
End If
Next Fld
End Sub
==== end of Sample Code ====
回答ありがとうございました。
EXCELではVBAを組んだことがありましたが、ACCESSは全くこれからです。マクロオブジェクトだけでなくVBAも併用して使いたいと思っていますので、今回回答いただいた内容を学習していきたいと思っています。まだ現時点では回答の内容はハードルが高くて気が遠くなりましたが、がんばります!本当にありがとうございました。今後の参考にさせていただきたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Excel(エクセル) スプレッドシートのマクロで値の入力があるセルの範囲を指定する方法を教えて下さい 2 2022/04/05 17:29
- Access(アクセス) access フォーム 大分類、小分類 1 2022/08/11 18:03
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) Access VBAから使用したExcelプロセスを閉じる方法について 4 2022/06/08 17:50
このQ&Aを見た人はこんなQ&Aも見ています
-
access マクロでのフィルタの解除の方法
Access(アクセス)
-
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
-
4
アクセスVBAのMe!と[ ]
Access(アクセス)
-
5
Accessでフォームから別フォームのテキストボックスの値を設定する
Visual Basic(VBA)
-
6
アクセスのフィルタ nullについて。
その他(データベース)
-
7
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
8
Acccessで2つのテーブルから1つのフォームをつくりたい
Access(アクセス)
-
9
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
10
Access 同じデータをたくさんのレコード(同一列)に一度に入力するには
Access(アクセス)
-
11
アクセスのフォームで、文字を中央揃えにしたい
Access(アクセス)
-
12
フォームで入力しても反映されない
Access(アクセス)
-
13
Accessでデータシートに同じデータがいくつもでてしまいます。
その他(データベース)
-
14
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
15
ACCESSのクエリー抽出条件にIIFを使用して
Access(アクセス)
-
16
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
17
access テキストボックスの値取得
Access(アクセス)
-
18
アクセスのボタンから指定のワードファイルを開く
Access(アクセス)
-
19
ACCESSのフォームからデータの追加ができない
その他(データベース)
-
20
Accessで、フォームからフォームへ値を引き継ぐやり方
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
工事管理データベースで月締め...
-
ワードでの単純作業の効率化に...
-
エクセル マクロの記述をご教...
-
データベースの1要素に複数デー...
-
Access IF文でテーブルに存在し...
-
yymmddを用いた管理番号...
-
access フォーム間で情報が引...
-
SQL エクセルシート別の項目...
-
Accessのクエリについて
-
Accessについて教えて下さい。
-
Accessデータベースで行と列を...
-
SQL内でのデータコピー
-
複数のテーブルに対して・・・
-
Access 既に開いているフォー...
-
ACCESS2002で作る水商売用顧客...
-
Access2013で主IDを利用してテ...
-
Access フォームのデータがテー...
-
★Access2002★複数店舗の顧客管理
-
顧客IDを入力すると顧客名や住...
-
Access 縦(行)のデータを横(列)...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access VBAでクエリーのレコー...
-
データベースの1要素に複数デー...
-
ACCESS で マクロの中でフィ...
-
ワードでの単純作業の効率化に...
-
Access フォームのデータがテー...
-
(ACCESS)連番取得について
-
Access 既に開いているフォー...
-
Access IF文でテーブルに存在し...
-
Accessで名寄せグループの関係...
-
ADOでレコードを閉じるタイミン...
-
顧客ごとの情報を1レコードにする
-
Accessデータベースで行と列を...
-
Access クロス集計クエリについて
-
SQLの抽出方法に悩んでいます(...
-
サブフォームで自動採番
-
顧客・売上管理のツールをさが...
-
Access2013VBA 複数のテーブル...
-
ワードで保存するファイル名の...
-
Access2000 テーブルのデザイン...
-
顧客IDを入力すると顧客名や住...
おすすめ情報