非連結のフォームを使おう。連結フォーム?そりゃ使っちゃだめだよ。
サイトが引っ越しました。→https://scombu.com
約1秒後に自動的にリダイレクトします。切り替わらない場合はリンクをクリックしてください。
はい!タイトルはさておき、連結フォームは危険。いみわかんないw
Accessってなんだかなぁ~と思う今日この頃。
てなわけで非連結フォームの導入部分の記述をします。
いくつかやり方はあるらしいんだけど、
詳細部分あるボタンをクリックして
そのボタンから明細フォームを開くときに引数でキーを渡して
明細フォームではそのキーでSQL文発行して
各コンボボックスにデータをセットしするって感じです。
下の帳票フォーム部分の左にある小さなボタンを押して、明細用のフォームを引数IDを渡して
開きます。
Private Sub コマンド36_Click() DoCmd.OpenForm "フォーム6", , , , , , Me.ID End Sub
ボタンをおしたらこんな画面が開く。
フォームの読込イベントに以下の感じでSQLで入れてあげれば簡単。
Private Sub Form_Load() Me.txtID = OpenArgs Dim myCn As ADODB.Connection 'ADOコネクションオブジェクト Dim myRs As ADODB.Recordset 'ADOレコードセットオブジェクト Dim strSQL As String 'SQL文用文字列 '現在のデータベースへ接続 Set myCn = CurrentProject.Connection 'ADOレコードセットのインスタンス作成 Set myRs = New ADODB.Recordset myRs.CursorLocation = adUseClient 'SQL文 strSQL = "SELECT 商品マスター.ID, 商品マスター.商品番号, 商品マスター.大分類, 商品マスター.中分類, 商品マスター.小分類, 商品マスター.商品名, 商品マスター.商品説明1, 商品マスター.商品説明2" strSQL = strSQL & " FROM 商品マスター" strSQL = strSQL & " WHERE ID = " & OpenArgs & "" strSQL = strSQL & " ;" 'レコードセット取得・・・(※1) myRs.Open strSQL, myCn, adOpenKeyset, adLockReadOnly myRs.MoveFirst Me.cbItem = myRs.Fields("商品番号") Me.cbDai = myRs.Fields("大分類") Me.cbCyuu = myRs.Fields("中分類") Me.cbSyou = myRs.Fields("小分類") 'オブジェクトの開放 Set myRs = Nothing: Close Set myCn = Nothing: Close End Sub
あとは、ボタンをつけて、更新処理なり削除処理なり、何なりと実装しましょう。
個人的には連結フォームはどんな場面で使うのか思いつきません。
自分だけが使う画面ならいいけどその程度かなぁ・・・
Accessに明るい人は、連結フォーム使いがちだけど
自分は連結フォーム怖くてドキドキしちゃいます。ほぼ勝手にデータ更新しちゃうしねぇ~