Access コンボボックスの値が変わらない

あるコンボボックスから、値を変えて、その値によって、コンボボックスの中身が変わる仕組みを作成したが、前の情報がリフレッシュされなくて、コンボボックスの内容が変わらない。

Me.Recalc
Me.Refresh

VBAに最初に変化をさせいたコンボボックスに上記をいれたら解決した。

Access 文字列の検索

文字列キーを呼び出して、非連結のフォームにデータを呼び出すVBA

Private Sub outsourcing_no_AfterUpdate()

If DCount(“外注手配番号”, “dbo_outsourcing_running”, “外注手配番号='” & Me.outsourcing_no & “‘”) = 0 Then
MsgBox “外注手配番号の登録がありません。ご確認ください。”
outsourcing_no = Null
Me.call_HNO.SetFocus
Me.outsourcing_no.SetFocus
Else

Me.call_HNO = DLookup(“HNO”, “dbo_outsourcing_running”, “外注手配番号='” & Me.outsourcing_no & “‘”)
Me.call_手順 = DLookup(“手順”, “dbo_outsourcing_running”, “外注手配番号='” & Me.outsourcing_no & “‘”)
Me.call_品名コード = DLookup(“品名コード”, “dbo_outsourcing_running”, “外注手配番号='” & Me.outsourcing_no & “‘”)
Me.call_品名 = DLookup(“品名”, “dbo_outsourcing_running”, “外注手配番号='” & Me.outsourcing_no & “‘”)
Me.call_型式 = DLookup(“型式”, “dbo_outsourcing_running”, “外注手配番号='” & Me.outsourcing_no & “‘”)
Me.call_担当工程 = DLookup(“担当工程”, “dbo_outsourcing_running”, “外注手配番号='” & Me.outsourcing_no & “‘”)
Me.call_メーカー名 = DLookup(“メーカー名”, “dbo_outsourcing_running”, “外注手配番号='” & Me.outsourcing_no & “‘”)
Me.call_加工仕様 = DLookup(“加工仕様”, “dbo_outsourcing_running”, “外注手配番号='” & Me.outsourcing_no & “‘”)
Me.call_加工費 = DLookup(“加工費”, “dbo_outsourcing_running”, “外注手配番号='” & Me.outsourcing_no & “‘”)
Me.call_加工日数 = DLookup(“加工日数”, “dbo_outsourcing_running”, “外注手配番号='” & Me.outsourcing_no & “‘”)
Me.call_加工累計 = DLookup(“加工累計”, “dbo_outsourcing_running”, “外注手配番号='” & Me.outsourcing_no & “‘”)
Me.call_次工程 = DLookup(“次工程”, “dbo_outsourcing_running”, “外注手配番号='” & Me.outsourcing_no & “‘”)

Exit Sub
End If

End Sub

Access 検索して画面がのっぺら

検索して何も対処してないと、フォームがのっぺらぼうになる。
さらに、LIKE関数で曖昧だったりするとちょっとコツが必要。カンマとか、ダブルカンマとか

その対処方法。

Private Sub メーカー名検索_AfterUpdate()
Dim stCD As String
stCD = DCount(“*”, “dbo_mst_product”, “メーカー名 Like ‘*” & メーカー名検索 & “*'”)

If stCD = 0 Then
MsgBox “検索されたデータは存在しません。ご確認ください。”
メーカー名検索 = Null
Me.コード検索窓.SetFocus
Me.メーカー名検索.SetFocus
Exit Sub
Else
Me.RecordSource = “Select * From dbo_mst_product Where ” _
& “メーカー名 Like ‘*” & Me!メーカー名検索 & “*’ ” ‘”
メーカー名検索 = Null
End If

End Sub

Access 一覧表示フォームでの検索

抽出じゃなくて、そのレコードまで移動する場合の方法

Private Sub MNO検索_AfterUpdate()

DoCmd.GoToControl “txt_MNO”
DoCmd.FindRecord MNO検索

If InStr(Me!txt_MNO, MNO検索) = 0 Or Null Then
MsgBox “該当レコードはありません。”
End If

MNO検索 = Null
End Sub

ちなみにテキストのあいまい検索の場合は、

Private Sub メーカー名検索_AfterUpdate()
DoCmd.GoToControl “txt_メーカー名”
DoCmd.FindRecord “*” & メーカー名検索 & “*”

メーカー名検索 = Null
End Sub

レコードない場合の表示機能は調べる時間が無かった。

Access DLookup 数値型の複数検索

HNOとMNOの数値型の複数検索にて、非連結テキストボックスのフォームに代入。

Me.input_品名 = DLookup(“品名”, “dbo_mst_parts”, “HNO =” & Me!HNO検索 & “AND MNO=” & Me!input_MNO)
Me.input_品名コード = DLookup(“品名コード”, “dbo_mst_parts”, “HNO =” & Me!HNO検索 & “AND MNO=” & Me!input_MNO)
Me.input_型式 = DLookup(“型式”, “dbo_mst_parts”, “HNO =” & Me!HNO検索 & “AND MNO=” & Me!input_MNO)
Me.input_HNO = DLookup(“HNO”, “dbo_mst_parts”, “HNO =” & Me!HNO検索 & “AND MNO=” & Me!input_MNO)
Me.input_単価 = DLookup(“単価”, “dbo_mst_parts”, “HNO =” & Me!HNO検索 & “AND MNO=” & Me!input_MNO)

Access 検索してレコードに移動

いつもは、抽出して表示をしていましたが、帳票表示にて、検索してレコードに移動した方が前後の部分も見えていいかなって感じで設置した。

でも、抽出よりもちょっと時間がかかるかも。

Private Sub 品番検索_AfterUpdate()

‘先頭から検索
Me.Recordset.FindFirst “dbo_mst_parts.HNO LIKE ‘*” & Me.品番検索 & “*'”

If Me.Recordset.NoMatch = True Then
MsgBox “見つかりません。”, vbExclamation
End If

DoCmd.GoToControl “調整数”
品番検索 = Null

End Sub

Access テキストボックス検索 全文一致

テキストの場合の全文一致がなかなかできなかった。
結局は、Like関数を使っての”*”を無くせばいいだけだったようだ。

Me.RecordSource = “Select * From D部品在庫データ Where 品番号 Like ‘” & Me!品番号入力窓 & “‘”

Access 検索フォームによるレコード表示

フォームの非連結の名前検索テキストボックスに検索文字をいれると、そのデータが表示抽出されるようにする。

折り返す場合は、_をいれる。

Private Sub 名前検索_AfterUpdate()
Me.RecordSource = “Select * From スタッフデータ Where ” _
& “氏名 Like ‘*” & Me!名前検索 & “*’ ” ‘”
名前検索 = Null
End Sub

店名検索の場合。shopmstはテーブル名 店名フィールドを検索している。

Private Sub 店名検索_AfterUpdate()
Me.RecordSource = “Select * From shopmst Where 店名 Like ‘*” & Me!店名検索 & “*’ ”
店名検索 = Null
End Sub