|
hatenaさん
お忙しい中いろいろ教えてくれてありがとうございます。。。。。。^^
あたしなりに必死に何とかして。。。ってがんばってはいるんですけど。。。。。。。;;
求める状態には至りません。。。。。。;;
サブフォームで抽出ができないんです。。。。。。;;
まだまだあきらめません。。。。。^^
経過報告させていただきます。。。。^^
今日までにあがいたソースコードです。。。。。^^
Dim stCri As String
Dim MyPublic As String
Dim MyPublic2 As String
Private Sub 購買依頼番号_AfterUpdate()
MyPublic2 = Me.購買依頼番号.Value
Call Call呼出
End Sub
Public Sub Call呼出()
On Error Resume Next
Dim Ctl As Variant
Dim stCri As String
'パブリック変数に選択したコンボBOXの名前を取得
MyPublic = Me.ActiveControl.Name
'このフォーム内のすべてのコントロールを検索
For Each Ctl In Me.Controls
With Ctl
If .ControlType = acComboBox And Ctl.Name <> MyPublic Then
'コントロールの種類がテキストボックスなら値をNULL(空)に設定
.Value = Null
End If
End With
Next Ctl
stCri = "" & "='" & MyPublic2 & "'"
Mypublic3 = " WHERE " & "='" & MyPublic2 & "'"
Me.購買実績一覧.Form.Filter = stCri
Me.購買実績一覧.Form.FilterOn = True
End Sub
Private Sub CmdCancel_Click()
Me.購買依頼番号.Value = ""
Me.購買発注番号.Value = ""
Me.受入番号.Value = ""
Me.整理番号.Value = ""
Me.見積番号.Value = ""
Me.原価センタ.Value = ""
Me.会社名.Value = ""
Me.担当者名.Value = ""
Me.年度 = ""
ComboBoxInit
Forms![Main購買実績]![購買実績一覧].SetFocus
Me.[購買実績一覧].Form.Filter = ""
Me.[購買実績一覧].Form.FilterOn = False
End Sub
Private Sub ComboBoxInit()
'コンボボックスの初期化
Dim Ctl As Control
For Each Ctl In Me.Controls
With Ctl
If .ControlType = acComboBox And _
.Name <> Me.ActiveControl.Name Then
'コンボボックスをNULL(空)に設定(アクティブコントロール以外)
.Value = Null
End If
End With
Next Ctl
End Sub
Public Function SetFilter()
'メインフォームのデザインビューでコンボボックスをすべて選択した状態で、「更新後処理」プロパティ欄に=SetFilterと設定
Dim stCri As String
ComboBoxInit
With Me.ActiveControl
stCri = .Name & .Value & "'"
End With
Me.購買実績一覧.Form.Filter = stCri
Me.購買実績一覧.Form.FilterOn = True
End Function
▼hatena さん:
>コード中のコンボボックス名とフィールド名が一致しないものがあるし、
>実際のクエリでどうなっているのか不明ですが、
>とりあえず抽出対象のフィールドのデータ型はすべてテキスト型のようなので、
>そうだとして回答します。
>
>メインフォームのモジュールは下記のようになります。
>
>Private Sub ComboBoxInit()
>'コンボボックスの初期化
> Dim Ctl As Controlt
>
> For Each Ctl In Me.Controls
> With Ctl
> If .ControlType = acComboBox And _
> .Name <> Me.ActiveControl.Name Then
>'コンボボックスをNULL(空)に設定(アクティブコントロール以外)
> .Value = Null
> End If
> End With
> Next Ctl
>
>End Sub
>
>Private Sub CmdCancel_Click()
> ComboBoxInit
> Me.[購買実績一覧].SetFocus
> Me.[購買実績一覧].Form.Filter = ""
> Me.[購買実績一覧].Form.FilterOn = False
>End Sub
>
>Public Finction SetFilter()
> Dim stCri As String
>
> ComboBoxInit
>
> With Me.AciveControl
> stCri = .Name & "='" & .Value & "'"
> End With
>
> Me.購買実績一覧.Form.Filter = stCri
> Me.購買実績一覧.Form.FilterOn = True
>End Finction
>
>
>メインフォームのデザインビューでコンボボックスを全て選択した状態で、
>「更新後処理」プロパティ欄に
>
>=SetFilter()
>
>と設定します。
>
>以上でどうでしょうか。
|
|