<Access Form OpenArg引数でセット位置を渡す>
(検索フォームで選択した番号を使用する その2) どうも、三流プログラマーのKen3です。 今回は、 フォーム間のデータのやり取りで、 前回の続きで、開いた別フォームからデータを受け取りたい、 そんな感じの処理を書きたいと思います。 サンプルファイルは、 http://www.ken3.org/vba/lzh/vba090.lzh にdb090.mdb(Access2000版)が保存されています。/* * 1.今回のキッカケ */
掲示板に下記の質問をもらいました。 --------------- In message "[BBS :142] Accessでのパラメータ引渡し方法", Yoshi さん wrote... >投稿時間:2003/06/18(Wed) 17:25 > >おなまえ:Yoshi >タイトル:Accessでのパラメータ引渡し方法 >URL : >コメント: > >こんにちは。はじめて書き込みます。 >現在「顧客画面」と「顧客番号検索画面」というものがあります。 >「顧客画面」は、KEYである顧客番号とその他情報を登録、修正、削 >除する画面です。 >「顧客番号検索画面」は、「顧客画面」の顧客番号の検索機能です >。 >つまり、「顧客画面」で登録されている顧客情報を変更する場合 >現在データベースに登録されている顧客番号を一覧(顧客番号検索画 >面)表示させ選択された顧客番号を「顧客画面」に戻すといった方法 >を教えてください。 >すいません、わかりずらいと思うので簡単な図を書きます。 > >1顧客画面 ← 顧客情報の一部の修正を行いたいためこの画面を >開く > >2顧客番号横の検索ボタンを押下 ← 顧客番号がすぐにわからな >いため検索画面を開く > >3顧客番号検索画面が開く ← リストボックスで作成した一覧を >表示 > >4リストボックスの対象行を選択 > >5顧客画面 ← 選択された顧客番号を表示させる --------------- そんな質問に対して、 前回の [No.89 Access 検索フォームで選択した番号を使用する その1] http://www.ken3.org/backno/backno_vba18.html#89 では、 顧客画面の該当レコードへデータを移動する。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 方法、
Private Sub btn選択_Click() Dim LNG顧客番号 As Long '番号選択のチェック If IsNull(Me![lst顧客番号]) Then '何も選択されていないか?チェック MsgBox "顧客番号を選択してください" Exit Sub '関数を抜ける End If '番号をローカル変数に保存する LNG顧客番号 = Me![lst顧客番号] Debug.Print LNG顧客番号 'テバックで表示 'フォームを閉じる DoCmd.Close 'レコードを移動する DoCmd.GoToControl "顧客番号" '顧客番号フィールドにコントロールを移動 DoCmd.FindRecord LNG顧客番号 '選択された番号のレコードに移動 ' End Sub |
Private Sub btn選択_Click() '番号選択のチェック If IsNull(Me![lst顧客番号]) Then '何も選択されていないか?チェック MsgBox "顧客番号を選択してください" Exit Sub '関数を抜ける End If '番号を親フォームに保存する Forms!顧客画面!顧客番号 = Me!lst顧客番号 '↑↑↑ 'ここを印刷画面に変えて Forms!顧客データ印刷!顧客番号 = Me!lst顧客番号 'フォームを閉じる DoCmd.Close End Sub |
Private Sub btn開始番号検索_Click() Dim stDocName As String Dim stLinkCriteria As String stDocName = "顧客番号検索画面" DoCmd.OpenForm stDocName, , , stLinkCriteria, , , "顧客データ印刷/txtSTART" End Sub |
Private Sub btn終了番号検索_Click() Dim stDocName As String Dim stLinkCriteria As String stDocName = "顧客番号検索画面" DoCmd.OpenForm stDocName, , , stLinkCriteria, , , "顧客データ印刷/txtEND" End Sub |
Private Sub btnキャンセル_Click() 'フォームを閉じる DoCmd.Close End Sub |
Private Sub btn選択_Click() '番号選択のチェック If IsNull(Me![lst顧客番号]) Then '何も選択されていないか?チェック MsgBox "顧客番号を選択してください" Exit Sub '関数を抜ける End If '変換場所の判断 Dim n As Integer '/の位置判断 Dim strSETFORM As String 'フォーム名 Dim strSETCONTROL As String 'セットするコントロール名 n = InStr(Me.OpenArgs, "/") If n <> 0 Then 'スラッシュの位置によって処理する strSETFORM = Left(Me.OpenArgs, n - 1) '左から/の前まで strSETCONTROL = Mid(Me.OpenArgs, n + 1) '/の次から最後まで '顧客番号を指定フォームのコントロールにセット Forms(strSETFORM).Controls(strSETCONTROL) = Me![lst顧客番号] Else '下記、普通は通らないエラー処理 MsgBox "パラメータエラー、プログラム管理者にお伝えください" End If 'フォームを閉じる DoCmd.Close End Sub |
Private Sub lst顧客番号_DblClick(Cancel As Integer) 'リストボックスをダブルクリックしたら Call btn選択_Click 'と、選択ボタンの処理を呼ぶ End Sub |
ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
気になったジャンル↓を選択してください。 人気記事(来場者が多いTOP3): Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など 開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う] 仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力] ※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。 |
Blogとリンク:[三流君の作業日記]/
[VBAやASPのサンプルコード]/
広告-[通販人気商品の足跡]