Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


189 / 2272 ツリー ←次へ | 前へ→

【12628】ユーザーフォームからレコードの検索抽出 rinrin 14/10/26(日) 19:46 質問[未読]
【12629】Re:ユーザーフォームからレコードの検索抽出 かるびの 14/10/26(日) 23:49 回答[未読]
【12631】Re:ユーザーフォームからレコードの検索抽出 rinrin 14/10/29(水) 20:53 お礼[未読]

【12628】ユーザーフォームからレコードの検索抽出
質問  rinrin  - 14/10/26(日) 19:46 -

引用なし
パスワード
   ”DB購買依頼一覧”フォームの”品名”をダブルクリックすると、、、”検索画面”フォームが立ち上げります。。。

そのテキストボックスにキーワードを入力すると、抽出データが反映されるというプログラムを構築したいのですが、、、」うまく書けません。。。


Option Compare Database
Option Explicit

Private Sub Form_Open(Cancel As Integer)
  DoCmd.MoveSize 5000, 2500, 8000, 3000
End Sub

Private Sub txt品名検索_AfterUpdate()
    Call CallPrivate3
End Sub

Private Sub CallPrivate3()
  Dim StrSQL As String
'サブフォームのレコードセットのSQL文を代入する
  Dim MyName As Variant
'アクティブコントロール名を歳入する変数
  Dim MyVariable As String
'フォーム上で取得した変数名
'DCount関数のレコード数を代入する変数
  
'アクティブなコントロール名を取得する
  MyName = Me.ActiveControl.Name
'初期化
  MyCount = 0
  
'SQL文の条件句の分岐条件をSELECT CASE文で対応して簡素化する
  Select Case MyName

    Case "txt品名検索"
      MyVariable = " WHERE 購買依頼一覧.品名 LIKE '*" & [Forms]![検索画面]![txt品名検索] & "*' ;"

      
''txt品目検索に該当するレコード数をカウントする
'    MyCount = DCount("品名", "購買依頼一覧", "品名 like '*" & [Forms]![検索画面]![txt品名検索] & "*'")
    
    Case "Cmd解除"
      MyVariable = " ;"
      
'全レコード数をカウントする
    MyCount = DCount("品名", "購買依頼一覧")
  End Select
  
'サブフォームのレコードソースに代入するSQL文
  StrSQL = "SELECT * FROM DB購買依頼一覧 " & MyVariable
  
  
こっからしたがわからない

  
'SQL文をサブフォームのレコードソースに代入する
  [Forms]![DB購買依頼一覧].Form.RecordSource = StrSQL

'サブフォームを再表示させる処理
  [Forms]![DB購買依頼一覧]![品名].Form.Requery
  
'レコードが0件のときと1件以上あるときの条件処理
  If MyCount = 0 toThen
    MsgBox ("該当するレコードはありません")
  Else
    MsgBox ("該当するレコードは、" & MyCount & "件です")
  End If
  
  Me.txt件数.Value = MyCount

End Sub


よろしくお願いします。。。

【12629】Re:ユーザーフォームからレコードの検索...
回答  かるびの  - 14/10/26(日) 23:49 -

引用なし
パスワード
   >”DB購買依頼一覧”フォームの”品名”をダブルクリックすると、、、”検索画面”フォームが立ち
>上げります。。。
>    Case "txt品名検索"
>      MyVariable = " WHERE 購買依頼一覧.品名 LIKE '*" & [Forms]![検索画面]![txt品名
>検索] & "*' ;"
 「品名」がフィールド名にもテキストボックス名にも使われており、わかりづらいので、
どちらかの名前を変えた方がいいですよ。


>    Case "txt品名検索"
>      MyVariable = " WHERE 購買依頼一覧.品名 LIKE '*" & [Forms]![検索画面]![txt品名
>検索] & "*' ;"
 テーブル名が間違っていますね。


>  [Forms]![DB購買依頼一覧].Form.RecordSource = StrSQL
 メインフォームからサブフォームのプロパティを設定する場合の構文は、
   Forms!メインフォーム名!サブフォームコントロール名.Form.プロパティ=値
です。
 なお、サブフォームコントロールというのは、
テキストボックスコントロールやチェックボックスコントロールの仲間であり、
デザインビューでメインフォームのプロパティシートを開いたとき、
ウィンドウのタイトルに「サブフォーム/サブレポート:××」と出るのがそれです。


> [Forms]![DB購買依頼一覧]![品名].Form.Requery
 リクエリは、
サブフォームコントロールに対して使うか、
又はフォームに対して使います。
 前者であれば、
  Forms!メインフォーム名!サブフォームコントロール名.Requery
ですし、後者であれば、
  Forms!メインフォーム名!サブフォームコントロール名.Form.Requery
です。
 どちらのコードでもサブフォームがリクエリされます。
 なお、これら両コードについて、
オブジェクトが違うということ以外に、どのような違いがあるのかは、
私にはわかりません。

【12631】Re:ユーザーフォームからレコードの検索...
お礼  rinrin  - 14/10/29(水) 20:53 -

引用なし
パスワード
   連絡遅くなって誠に申し訳ございませんでした。。。

できました。。。。。。。。^^ありがとうございました。。

▼かるびの さん:
>>”DB購買依頼一覧”フォームの”品名”をダブルクリックすると、、、”検索画面”フォームが立ち
>>上げります。。。
>>    Case "txt品名検索"
>>      MyVariable = " WHERE 購買依頼一覧.品名 LIKE '*" & [Forms]![検索画面]![txt品名
>>検索] & "*' ;"
> 「品名」がフィールド名にもテキストボックス名にも使われており、わかりづらいので、
>どちらかの名前を変えた方がいいですよ。
>
>
>>    Case "txt品名検索"
>>      MyVariable = " WHERE 購買依頼一覧.品名 LIKE '*" & [Forms]![検索画面]![txt品名
>>検索] & "*' ;"
> テーブル名が間違っていますね。
>
>
>>  [Forms]![DB購買依頼一覧].Form.RecordSource = StrSQL
> メインフォームからサブフォームのプロパティを設定する場合の構文は、
>   Forms!メインフォーム名!サブフォームコントロール名.Form.プロパティ=値
>です。
> なお、サブフォームコントロールというのは、
>テキストボックスコントロールやチェックボックスコントロールの仲間であり、
>デザインビューでメインフォームのプロパティシートを開いたとき、
>ウィンドウのタイトルに「サブフォーム/サブレポート:××」と出るのがそれです。
>
>
>> [Forms]![DB購買依頼一覧]![品名].Form.Requery
> リクエリは、
>サブフォームコントロールに対して使うか、
>又はフォームに対して使います。
> 前者であれば、
>  Forms!メインフォーム名!サブフォームコントロール名.Requery
>ですし、後者であれば、
>  Forms!メインフォーム名!サブフォームコントロール名.Form.Requery
>です。
> どちらのコードでもサブフォームがリクエリされます。
> なお、これら両コードについて、
>オブジェクトが違うということ以外に、どのような違いがあるのかは、
>私にはわかりません。

189 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078188
(SS)C-BOARD v3.8 is Free