Access 非連結ボックスの入力確認して、元に戻す。

簡単そうでなかなかできなかった案件。

Me.Undoをすれば戻にもどるとか、Me.テキストボックス.valuedefault すれば戻るとかあったけどできない。

結局スマートではないだろうが、下記の方法で切り抜けた。

(1)フォームにダミーの記憶するためのテキストボックスを準備
(2)対象の非連結テキストボックスにフォーカスが当たったら、ダミーのテキストボックスに値を退避
Private Sub input_MNO_GotFocus()
MNOD = input_MNO
End Sub

(3)
Private Sub input_MNO_AfterUpdate()

If MNOD = 0 Then

If MsgBox(“WCから他社に変更するとWCマスタデータも同時に削除されます。”, vbYesNo, “WC変更確認”) = vbYes Then

If DCount(“*”, “dbo_mst_maker”, “[MNO]=[input_MNO]”) = 0 Then
MsgBox “そのメーカー番号は存在しません。”
input_MNO = MNOD
Me.input_メーカー名 = DLookup(“メーカー名”, “dbo_mst_maker”, “MNO=” & Me.MNOD)
Me.input_メーカー名.SetFocus
Me.input_MNO.SetFocus
Else

Me.input_メーカー名 = DLookup(“メーカー名”, “dbo_mst_maker”, “MNO=” & Me.input_MNO)

End If
Else
input_MNO = MNOD  ※0以外でNOでキャンセルした時は、戻に戻すをやっている。
Exit Sub
End If

Else

If DCount(“*”, “dbo_mst_maker”, “[MNO]=[input_MNO]”) = 0 Then
MsgBox “そのメーカー番号は存在しません。”
input_MNO = Null
input_メーカー名 = Null
Me.input_メーカー名.SetFocus
Me.input_MNO.SetFocus
Else

Me.input_メーカー名 = DLookup(“メーカー名”, “dbo_mst_maker”, “MNO=” & Me.input_MNO)

End If
End If
On Error Resume Next

End Sub

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 ランタイム クエリ実行時に非表示

ACCESSをランタイム環境で動かす場合に、

・レコードの変更

・オブジェクトの削除

・アクションクエリ などを行うたびに確認メッセージが表示されてしまう問題を回避する方法。

作成環境でチェックを外しておいてもランタイム環境に持っていくと効かない。

以下のコードを実行させるようにしてやると、聞いてこなくなる。

Private Sub Form_Open(Cancel As Integer) ‘メインのフォームオープン時に、
Application.SetOption “Confirm Action Queries”, False ‘クエリの実行時の確認を外す
End Sub

Access CHrW 変な変数で?

stDocName = ChrW(25163) & ChrW(-28339) & ChrW(26085) & ChrW(20195) & ChrW(20837) & ChrW(-30500) & ChrW(21161)

て変な変数があって何が何だか???

デバッグのイミディエイトに突っ込めばわかるらしい。

?stDocName

でも
?ChrW(25163) & ChrW(-28339) & ChrW(26085) & ChrW(20195) & ChrW(20837) & ChrW(-30500) & ChrW(21161)

でもでる。