忙しい現代人の腰&肩のお悩み対策!

始めまして、今アクセスを使って顧客管理を作成しています。

フォームで検索を出来るようにしたいのですが、ひとつの検索ボタンで、検索方法が、お客様コード・お客様名(漢字・ふりがな)・電話番号が検索できるやり方がしりたいです。
よろしくお願いします。

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

A 回答 (4件)

うっかり。

No1の訂正です。テーブルのフィールドの名前を以下のように
してください。No1の回答の最初の部分です。

テーブルの名前を
tbl顧客
とします。フィールドは、

お客様コード(主キー)  テキスト型
お客様名         テキスト型
ふりがな         テキスト型
住所           テキスト型
電話番号         テキスト型
年令           テキスト型

など、としておきます。
    • good
    • 4

>(1)に関しては、全てです。




一般的な表形式の提案をしてみます。サブシート形式も
同じことではありますが。なお、単票形式はあれこれと
面倒なのでここでは割愛しておきます。(と言うよりも
回答が長くなるので。)


テーブルの名前を
tbl顧客
とします。フィールドは、

顧客ID(主キー) テキスト型
顧客名      テキスト型
ふりがな     テキスト型
住所       テキスト型
電話番号     テキスト型
年令       テキスト型

など、としておきます。

(1)
フォームの新規作成から「オートフォーム表形式」を選択し、
「基になるテーブルまたはクエリの選択」で、「tbl顧客」
を選択し、OKとします。出来たフォームを仮に「F顧客名簿」
とします。

(2)
出来たフォームをデザインビューで開き、詳細のところに
マウスのカーソルを当て、十字になったら右クリックして
下に3cmくらい下げます。残ったラベルも全て選択して
詳細にくっつけ保存します。
次に、フォームにコンボボックスを一つ、テキストボックスを
一つ、ボタンを二つ設定します。それぞれのプロパティから
名前を以下のようにします。

コンボボックス     cmb検索設定
テキストボックス    tx検索キーワード
ボタン         cmd検索     (標題を検索)
ボタン         cmd全件表示   (標題を全件表示)

(3)
コンボボックスのプロパティを開き、「値集合タイプ」を
「値リスト」にし、そこに
"お客様コード";"お客様名";"電話番号";"ふりがな"
を貼り付けてください。右クリックからズームを選択して
貼り付けてOKとしてもいいです。

(4)
次に、ボタンの「cmd検索」のプロパティからクリック時の
イベントを選択し、右端をクリックし、「コードビルダ」を選択し
コード表を以下のように設定してください。

Private Sub cmd検索_Click()
  If Me!cmb検索設定 = "" Then Exit Sub
  If Me!tx検索キーワード = "" Then Exit Sub
  Select Case Me!cmb検索設定
  Case "お客様コード"
    'あいまい検索をするなら以下を
    Me.Filter = "お客様コード Like ""*" & Me!tx検索キーワード & "*"""
    '完全一致ならば以下
    'Me.Filter = "お客様コード = "" & Me!tx検索キーワード & """
    Me.FilterOn = True
  Case "お客様名"
    Me.Filter = "お客様名 Like ""*" & Me!tx検索キーワード & "*"""
    Me.FilterOn = True
  Case "電話番号"
    Me.Filter = "電話番号 Like ""*" & Me!tx検索キーワード & "*"""
    Me.FilterOn = True
  Case "ふりがな"
    Me.Filter = "ふりがな Like ""*" & Me!tx検索キーワード & "*"""
    Me.FilterOn = True
  Case Else
    Me.FilterOn = False
    Exit Sub
  End Select
End Sub

(5)
次に、ボタンの「cmd全件表示」のクリック時のイベントを
以下のように設定してください。

Private Sub cmd全件表示_Click()
  Me.FilterOn = False
End Sub


(6) 操作方法
コンボオックスで検索対象のフィールドを選択し、
テキストボックスの「tx検索キーワード」に入力
してボタンを押して検索します。

たとえば、「お客様コード」を検索する場合、
「お客様コード」が、ABC123BBAなどのような
場合、「あいまい検索」で行なうと、
テキストボックスに「ABC」と入れると「お客様コード」に
「ABC」が含まれるレコードを抽出します。もちろん、
「123」あるいは「C123BB」。
その他のフィールドの検索についても同じです。

(7)
その他、(5)の操作はフィルタを解除して全件を表示する
イベントです。


なお、「FilterOn」 や 「あいまい検索」については
ネットやヘルプで確認しください。
わからないところがあれば、補足してください。
    • good
    • 2

日にちがたっていますが、解決しましたか。


もし、解決していないのであれば、

(1)
検索フォームは、単票フォーム、帳票フォーム、
サブフォームを持つ、のどれでしょうか。


(2)
>お客様コード・お客様名(漢字・ふりがな)・電話番号

のなかで、お客様名(漢字・ふりがな)はテーブルには
漢字で書いたフィールドと、ふりがなのフィールドは
別々にあるということでいいですか。つまり

お客様コード
お客様名
ふりがな
電話番号


住所


などのフィールドがあると考えていいでしょうか。

この回答への補足

piroin654様

回答ありがとうございます。
他の作業をしていたのでまだ解決していなかったので助かります。

(1)に関しては、全てです。
(2)そのとおりです。

よろしくお願いします。

補足日時:2012/07/25 20:31
    • good
    • 1

一つではできるのでしょうか コードのみ 名前のみ


クエリでの条件の与え方だと思いますが
選択クエリは分かるでしょうか
クエリ上で条件の設定はできるでしょうか

この回答への補足

回答ありがとうございます。

>クエリ上で条件の設定はできるでしょうか

なんとかわかりそうですが。。。

補足日時:2012/07/13 15:50
    • good
    • 4

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

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

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

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

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

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のフォーム上で複数検索したい項目がある場合どうすればいいですか?

(1)部品ID
(2)日付
(3)入庫か出庫 
以上3つを検索したいのですがどうすればいいでしょうか?

(1)の部品IDはリストBOXの一覧から選択し、選択したものをテキストBOXに表示させるという形で作成しました。
(2)の日付はテキストBOXに手入力という形です。
(3)の入庫か出庫はコンボBOXで選択するという形です。

検索ボタンを作成してクエリの更新をかけて表示したいと思うのですが、3つの条件のうちその時により、全ての検索条件を入力しなくても1つでも条件を入力するとその条件が表示させるようにさせたいのです。

あと、何も条件を入力せず、検索ボタンを押すと全てのデータが表示させれるようにもしたいのです。

どのようなコードを記述すればいいでしょうか?
よろしくおねがいします

Aベストアンサー

>”このオブジェクトに値を代入することはできません”と表示され・・
失礼しました。フィルターのセットで最後が足りませんでした。あと[このオブジェクトに値を代入・・]のメッセージは抽出等で間違った指定方法をしているという事なのですが・・。
多分日付の抽出の仕方だと思いますので日付抽出のセットを少し変えましたのでメインフォーム上のボタンCmd1のクリック時のイベントを下記に変更してみてください。

Private Sub Cmd1_Click()
Dim MyCriteria As String

MyCriteria = "日付 ="
If IsNull(Text2) Then
MyCriteria = MyCriteria & True
ElseIf Not IsNull(Text2) Then
MyCriteria = MyCriteria & "#" & Me!Text2 & "#"
Else
End If

strfilter = MyCriteria
strfilter = strfilter & " And 部品ID Like '*" & Me.Text1.Value & "*' And 区分 Like '*" & Me.Cmb1.Value & "*'"

Forms!フォーム名!サブフォーム名.Form.Filter = strfilter
Forms!フォーム名!サブフォーム名.Form.FilterOn = True
Forms!フォーム名!サブフォーム名.Requery

End Sub

メインフォーム上のテキストボックスやコンボの値をサブフォームのフィルターに代入するときはMe!Text1の指定で良さそうなので上記でサブフォームにフィルターをかけられます。(試したらフィルターかけられました。)
これでどうでしょう。

>”このオブジェクトに値を代入することはできません”と表示され・・
失礼しました。フィルターのセットで最後が足りませんでした。あと[このオブジェクトに値を代入・・]のメッセージは抽出等で間違った指定方法をしているという事なのですが・・。
多分日付の抽出の仕方だと思いますので日付抽出のセットを少し変えましたのでメインフォーム上のボタンCmd1のクリック時のイベントを下記に変更してみてください。

Private Sub Cmd1_Click()
Dim MyCriteria As String

MyCriteria = "日付 ="
If IsNull(T...続きを読む

QAccessVBAを使用して、DB内を検索する画面を作成したいのですが。

Accessのヴァージョンは2000以降です。
フォーム上で、テキストボックスに入力して、検索ボタンを押すと、検索結果が表示される物を作りたいのです。

SQLの知識はあるので、SQL文は記述できるのですが、どうすれば検索結果が表示されるのかわかりません。

検索ボタンをクリックしたときにどういう処理をするのか、また、検索結果画面はどのように作っておけばよいのか等、少しでも多くのご回答をいただきたいです。

本やサイトも色々見たのですが、見あたりませんでした。
そのようなサイトがありましたら是非教えていただけると助かります。

お忙しい中申し訳ありませんが、本当に困っています。
よろしくお願いいたします。

Aベストアンサー

VBAはやっぱり知っておいた方がよろしいかと思います。
と言っても、下記の例ではほんのちょっとだけですけど。
ほとんど中身はSQLです。
応用するにはさらに知らねばならないでしょう。

まず、テーブルは「テーブル1」と言う名前で項目「氏名」と「体重」だけ作ります。
フォームは「表形式」を選択し基になるテーブルに「テーブル1」を選択し作成してください。
フォーム名は「フォーム1」で保存してください。

できたフォーム1に「氏名選択」という名前でテキスト入力フィールドを作成してください。
さらに検索ボタンを作成し、「検索」と言う名前で保存。
プロパティ-の「クリック時」で下↓のボタンを押し「イベントプロシージャ」を選択。
右端の「・・・」を選択するとVBAを記述できる画面が出てきます。
そこに下記内容を記述

Private Sub 検索_Click()
Forms![フォーム1].RecordSource = "SELECT * FROM [テーブル1] where forms![フォーム1]![氏名選択] = [テーブル1]![氏名]"
End Sub

VBAはやっぱり知っておいた方がよろしいかと思います。
と言っても、下記の例ではほんのちょっとだけですけど。
ほとんど中身はSQLです。
応用するにはさらに知らねばならないでしょう。

まず、テーブルは「テーブル1」と言う名前で項目「氏名」と「体重」だけ作ります。
フォームは「表形式」を選択し基になるテーブルに「テーブル1」を選択し作成してください。
フォーム名は「フォーム1」で保存してください。

できたフォーム1に「氏名選択」という名前でテキスト入力フィールドを作成してください...続きを読む

QAccess、検索用フォームでのあいまいな検索

現在、Accessでデータベース作成をしています。

テーブル:  ・テーブルA
         ・テーブルB
         (A・B間にリレーションシップ設定)

クエリ    ・検索クエリ(テーブルA・テーブルBを元に作成)

フォーム   ・検索用フォーム(デザインビューでフォーム作成より)
         ・検索結果フォーム(検索クエリを元に作成)

また、以下のような設定を入力しました。

「検索クエリ」の抽出欄
 Like "*" & [Forms]![検索用フォーム]![検索したい名前] & "*"・・(1)
 ※検索したい項目、すべての抽出欄に設定済

「検索用フォーム」
 検索実行ボタンを作成し、マクロを設定
 ・フォームを開く→「検索結果フォーム」
 ・フィルタ→「検索クエリ」

上記の設定により、検索用フォームに検索文字を入力することで、その結果を「検索結果フォーム」に反映することができました。
ただ、テーブルAが元になっている項目の抽出欄のみに(1)を入力すると、うまくいくのですが、テーブルBが元になっている項目欄にも
(1)を入力しようとすると、検索用フォームからうまく検索することができなくなります。

2つのテーブルを元にしたクエリからは、検索用フォームをつかった複数のOR検索はできないのでしょうか??

ご存知の方、ぜひ教えてください。
よろしくお願いいたします。

現在、Accessでデータベース作成をしています。

テーブル:  ・テーブルA
         ・テーブルB
         (A・B間にリレーションシップ設定)

クエリ    ・検索クエリ(テーブルA・テーブルBを元に作成)

フォーム   ・検索用フォーム(デザインビューでフォーム作成より)
         ・検索結果フォーム(検索クエリを元に作成)

また、以下のような設定を入力しました。

「検索クエリ」の抽出欄
 Like "*" & [Forms]![検索用フォーム]![検索した...続きを読む

Aベストアンサー

>「Forms!検索用フォーム!検索したい名前」というタイトルの
>メッセージボックスが出る
これはそこに書いてあるものがAccessにとって不明なものだから
値の入力を要求してきているのです

検索用フォームは開いていますか?
フォームやテキストボックスの名前は間違っていませんか?

テーブルを結合したクエリであることとは全く関係ありません

QAccessで別テーブルの値をフォームに表示したい

初めてのAccessで分からない事があり質問させてください。

<会社テーブル>
会社ID
会社名
住所

<社員テーブル>
会社ID
社員名
ソート番号

*1社に対し複数の社員レコードが存在

以上のようなテーブルがあるとします

現在「会社テーブル」を表形式で一覧表示しています
会社ID,会社名、住所とフィールドが並んでいるのですが、その後ろに「社員テーブル」のソート番号が一番若い社員名を表示したいと考えています(現状は番号関係なく表示させる方法すら分かりません)

色々いじくりまわしたのですが、初めてAccessをさわる事もあってよくわかりません

リレーション等でひっぱってくる事ができるのでしょうか?

どなたか教えて頂けませんでしょうか

何卒よろしくお願い致します

PS.Access2013で作成中です

Aベストアンサー

単純にテーブル[会社]のみでフォームを作成し、社員表示用テキストボックスを追加。そして、そのプロパティを表示し

コントロールソース=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/HA001228825.aspx

DLookup()については、マイクロソフトの解説を参照されてください。

【DLookup()の限界を破るにはVBAで同じ関数を作るしかない】

マイクロソフトの解説を読めば判りますが、ORDER BY 節を指定する引数が用意されていません。ですから、どうしても、"社員ソートクエリ"を作成するという手間が必要となります。そこで、SQL文を引数とするDBLookup()をVBAで書けば、その手間を省けるという算段になります。この辺りは、好みと趣味の問題。どっちでも良いと思います。そういうお断りをした上で DBLookup()を紹介しておきます。なお、ADOは、つぎのように参照設定しないと利用できません。

http://www.happy2-island.com/access/gogo03/capter00307.shtml

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

単純にテーブル[会社]のみでフォームを作成し、社員表示用テキストボックスを追加。そして、そのプロパティを表示し

コントロールソース=DBLookup("SELECT 社員名 FROM 社員 WHERE 会社ID=" & [会社ID] & " ORDER BY ソート番号")

これは、以下の標準モジュールに登録したユーザ関数 DBLookup()を使っています。これで、クエリを用意しなくても目的を達成できます。

さて、かかるユーザ関数を標準ライブラリに登録したくない場合、

1、"社員ソートクエリ"を作成します。

SELECT 社員.会社ID, 社員.社員名
FR...続きを読む

QAccessで検索画面を作る方法

Accessで簡単な検索ができる画面を作りたいのですが
大まかにどのような画面を作成すればいいのかわかりません。

例えば得意先コードを入力すると得意先名がでるような
画面を作りたいのですが・・・
得意先コードと得意先名がのったテーブルとクエリを1つ作成しました。
その後はどうしたらいいのかわかりません。
フォームで検索できるようにしたいのです。
よろしくお願いします!!

Aベストアンサー

専門家ではないので、一般人の私のやり方で恐縮です。
手順は次の通り。

(1)パラメータクエリを作成する
(2)マクロを作成する
(3)オートフォームでフォームを作成する
(4)コマンドボタンを配置し、クリック時イベントにマクロを登録する

これで開くたびに検索ができるかと思います

[手順]
(1)パラメータクエリを作成する
作成しておいたクエリをデザインビューで開く

検索条件に [得意先コードを入力して下さい] と入力する
[](角カッコ)がポイントです

名前をつけて保存する
(ここでは仮に"Q_得意先検索"とします)

(2)マクロを作成する
マクロオブジェクトに切り替えます

[新規作成]を選択します

アクションリストの中から[閉じる]を選択します

アクションの引数の[オブジェクトの種類]から[クエリ]を選択します

[オブジェクト名]から[Q_得意先検索]を選択します

名前をつけて保存します
(ここでは仮に"M_検索"とします)

(3)オートフォームでフォームを作成します
フォームオブジェクトに切り替えます

[新規作成]を選択します

ウィンドウから[オートフォーム:○○形式]を選択します
(ここは自由に選んでください)

[元になるテーブルまたはクエリ]から[Q_得意先検索]を選択する

名前をつけて保存する
(ここでは仮に"F_検索"とします)

(4)コマンドボタンを配置し、クリック時イベントにマクロを登録する
デザインビューに切り替えます

領域を広げてコマンドボタンを作成します
(ツールボックスを表示させておいて下さい)

コマンドボタンを右クリックして[プロパティ]を選択する

[イベント]タブに切り替えて[クリック時]から[M_検索]を選択する

上書き保存する




これで実行すると、パラメータクエリが働くので検索ができるかと思います。
オートフォームでは、テキストボックス等の大きさがばらばらになるので調整をすると良いと思います。

専門家ではないので、一般人の私のやり方で恐縮です。
手順は次の通り。

(1)パラメータクエリを作成する
(2)マクロを作成する
(3)オートフォームでフォームを作成する
(4)コマンドボタンを配置し、クリック時イベントにマクロを登録する

これで開くたびに検索ができるかと思います

[手順]
(1)パラメータクエリを作成する
作成しておいたクエリをデザインビューで開く

検索条件に [得意先コードを入力して下さい] と入力する
[](角カッコ)がポイントです

名前をつけて保存する
(ここ...続きを読む

QAccessで検索フォームを作成したい。

Access2000でDBをつくりました。

そのデータから検索をして、抽出をしたいのです。
検索条件をいれるデータはこれ、と決まっていればパラメータークエリでもつくればいいのですが、どれでも検索条件にするようにしたい、と使用者から頼まれました。
入力方法としては単票フォームを開き、検索したい項目に、検索条件をいれると抽出される、というようなものです。
検索したい項目は日付かもしれないし、名前かもしれない、はたまた会社名かもしれない、とバラバラなのです。
その項目毎にパラメータクエリをつくるのもちょっと・・・と思うので。
何かいい方法はありますでしょうか?

よろしくお願いします。

Aベストアンサー

こんにちは。maruru01です。
まず最初に、抽出するフィールドは、[一覧]テーブルの全フィールドではないのですか? もし全フィールドなら、"SELECT * FROM 一覧 WHERE ・・・"としましょう。
さて、一応上のように全フィールドを抽出するとすると
intKen = CLng(Me!検索値)
SQL = "SELECT * FROM 一覧 WHERE Date_year = " & intKen
DoCmd.RunSQL SQL
となります。
KODAMARさんのコードでは、
"の位置がおかしい
SELECTやFROMの前後に半角スペースがあるか
SQLステートメントの文末がおかしい(最後の"がないなど)
文末の「;」は不要
などの問題点があります。
とりあえず、改行などは考えずに作りましょう。
ちなみに、テーブルは[一覧]しか使用しないので、テーブル名を省略してもかまいません。
またSELECT句で一部のフィールドのみ抽出する場合は、
SQL = "SELECT Date_year, Date_month, Date_day FROM ・・・"
という風に記述して下さい。
では。

こんにちは。maruru01です。
まず最初に、抽出するフィールドは、[一覧]テーブルの全フィールドではないのですか? もし全フィールドなら、"SELECT * FROM 一覧 WHERE ・・・"としましょう。
さて、一応上のように全フィールドを抽出するとすると
intKen = CLng(Me!検索値)
SQL = "SELECT * FROM 一覧 WHERE Date_year = " & intKen
DoCmd.RunSQL SQL
となります。
KODAMARさんのコードでは、
"の位置がおかしい
SELECTやFROMの前後に半角スペースがあるか
SQLステートメントの文末がおかしい(最後の"...続きを読む

Qクエリーの結果をフォームに表示させたい(Access2000)

access初心者で、初歩的なことだと思うのですが教えていただけますでしょうか。

顧客情報テーブルを全件表示・入力・変更するフォームAがあります。
日付期間内検索、名前検索などいくつか条件絞込みのためのフォームBがあります。

やりたいこと
フォームBで指定した期間などで、検索結果をフォームAに表示させたいです。

←→現在はフォームBの検索クエリーごとに、実際は検索条件ごとにフォームAをコピーし、フォームのプロパティのレコードソースにて制御しています。

よろしくおねがいします。

Aベストアンサー

でしたらフォームB(条件設定画面かな?)にコマンドボタンでも作成し
クリック時イベントなどに
if currentproject.allforms("フォームA").isloaded = false then
docmd.openform "フォームA" '開いてなかったら開く
end if
Forms!フォームA.recordsource = "SELECT 顧客情報TBL.* FROM 顧客情報TBL WHERE [顧客情報TBL].[利用予定日] Between " & [Forms]![条件設定画面]![コンボ12] & " And " & [Forms]![条件設定画面]![コンボ14] & " ORDER BY [顧客情報TBL].[利用予定日] DESC;"
のようにレコードソースを変更するか、

フォームA自体には抽出条件を設定しないひな形フォームとして作成しておきます。
dim sFilter as string
if currentproject.allforms("フォームA").isloaded = false then
docmd.openform "フォームA" '開いてなかったら開く
end if
sFilter = ・・・・sFilterに条件を書き込むのですが具体例が挙げられません
sFilter の作り方は前回回答のVBAコードを参照してください。
debug.print sFilter 'イミディエイトウィンドウで正しくできているか確認
Forms!フォームA.filter = sFilter
Forms!フォームA.filteron = true
のような流れになります。べた打ちなので間違っているかも。

でしたらフォームB(条件設定画面かな?)にコマンドボタンでも作成し
クリック時イベントなどに
if currentproject.allforms("フォームA").isloaded = false then
docmd.openform "フォームA" '開いてなかったら開く
end if
Forms!フォームA.recordsource = "SELECT 顧客情報TBL.* FROM 顧客情報TBL WHERE [顧客情報TBL].[利用予定日] Between " & [Forms]![条件設定画面]![コンボ12] & " And " & [Forms]![条件設定画面]![コンボ14] & " ORDER BY [顧客情報TBL].[利用予定日] DESC;"
のようにレコード...続きを読む

QアクセスVBAのMe!と[ ]

基本的なことですみません。

アクセスのイベントプロシージャで、Me!ってありますけど、これはどういう意味なんでしょうか?

また、Me!の後に、Me!.~~と書く場合と、Me!.[~~]と書く場合がありますが、どこが違うのでしょうか?

Aベストアンサー

>プロシージャ内で[]を使う場合は、そのフォーム外のオブジェクトを使う場合と考えてよろしいでしょうか?
別のオブジェクトを使う場合だけではありません。
Hensu = Me![Text1]のようにHensuという変数に自身のTest1の値を代入する場合のように。
[]で括られているのがオブジェクト名やコントロール名だよという事。
クエリの抽出条件に存在しない[?]とすれば?というコントロール等が参照できないので?というダイアログが表示されるように?というオブジェクトやコントロールは何?と聞いてくるように。
>フォーム内のオブジェクトの場合はあくまでMe!で良いのでしょうか
Forms.[フォーム名]![コントロール名]やForms![フォーム名]![コントロール名]が構文。
アクティブなフォームが自分自身ならForms![フォーム名]の変わりにMeでもOKですという事。

と言う解釈の方が良いと思います。

QACCESS フォームで抽出したデータのみをレポートで表示したい

初歩的な質問だとは思いますが、どうしてもできないので教えてください。

フォームで抽出条件をメインフォーム抽出結果をサブフォームに表示するフォームを作成しました。
このサブフォームで抽出したものだけをボタンをクリックするとレポート表示するように作りたいのですができません。

どうすればいいでしょうか?

Aベストアンサー

>レポートのプレビューで出力ボタンを作成したのですが、全てのデータが表示されます。
レポートのプレビューで出力ボタンを作成??意味が不明ですが。
>抽出条件を入力しても同じです。
レポートのレコードソースは抽出条件が入っているのでしょうか?抽出条件がなければ全レコード出力されてしまいます。
抽出条件はどのように入れてあるのでしょうか。
レポートのプロパティでレコードソースの右のボタンをクリックするとSQLステートメントが開きますので抽出条件のフィールドの抽出条件に
=[Forms]![メインフォーム名]![抽出条件のコントロール名]
と記述してください。(メインフォーム名・抽出条件のコントロール名は実際の名前に変えてください)
メインフォームにレポートを出力するボタンを作りそのレポートを設定すれば出来ます。


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

人気Q&Aランキング