紙つぶて 細く永く

右の「読者になる」ボタンをクリックし読者なっていただくと記事更新時にお知らせが届きます。

}

Access悪戦苦闘 第8回

Access悪戦苦闘 第8回です。Access記事は下記に移動しました。
(図はクリックすると拡大表示)
Photo
個人名登録フォームのプロパティを設定します。
「姓」「名」「部署」「役職」「備考」のプロパティを右図「
ひらがな」にします。
そして「フリガナ」は同じく「半角カタカナ」にしておきます。
(チョット訂正 T_個人名テーブルのフィールド名「趣味」はいかにも趣味が悪いので、「備考」に変更しました)

そして「登録」ボタンプロパティを選択しクリックイベント
に下記コードを記載する。
(「'-----」はコメントアウトの印で「’」以下のコード実行を飛ばすという意味です、また「Dirty」は編集中という意味です。そして「Refresh」で確定します)

Private Sub 登録_Click()
    DoCmd.SetWarnings False    '--------[レコドの操作で警告が表示されるのを防ぎます]
    Dim 抽出条件 As String     '--------[変数:抽出条件の形式を宣言します]
    抽出条件 = "個人ID = " & 個人ID
    If Dirty Then
        Select Case MsgBox("登録でいいですか?", vbYesNoCancel)   '----[メッセージボックスの表示]
        Case vbYes    '--------D
            Refresh
            DoCmd.RunSQL "Insert into 個人名テーブル Select * from W_個人名テーブル Where " & 抽出条件
        '--------[抽出条件にあうレコードを「個人名テーブル」に代入する]
            DoCmd.RunSQL "Delete * from W_個人名テーブル Where " & 抽出条件
        '--------[抽出条件にあうレコードを「W_個人名テーブル」から削除する]
            MsgBox "登録しました"
        Case vbNo
            Undo '編集を破棄
            DoCmd.Close    '----[フォームを閉じる]
        Case vbCancel
            '何もしない
        End Select
    End If
    DoCmd.SetWarnings True    '--------[警告の表示を復活させる]
    DoCmd.CloseF__3
End Sub

個人名各レコードを入力し「登録」をクリックする。
随時見本としてのデータを入力/登録してみてください。

F_個人名フォームと同じようにオートフォームで「F_顧客登録」フォームを作成します。
右図のよう「新規」「登録_更新」「閉じる」ボタンを配置し、
デザインを変更します。
注意点は左上部分に「顧客選択」コンボボックスを配置しました。
このコントロールは非連結(プロパティのコントロールソースになにも指定しない)でOKです。Juusyonyuuryoku_6
そしてプロパティデータタグの値集合ソースに顧客テーブルを選択し、
  「顧客ID」「会社名」「ヨミガナ」(非表示)を指定します。(詳細は該当箇所で後述)

また、コントロール「取引形態」はコンボボックスにします。
プロパティ設定でデータタグの中「
値集合タイプ」を値リストに、そして「値集合ソース」を「販売;仕入;その他」とします。

「F_顧客登録」フォームで「住所入力支援」を作成します。
フォームのデザイン画面で「郵便番号」のプロパティからその他タグを選択し
「住所入力支援」(右図)の右にあるクエリビルダをクリックします。
次の画面で郵便番号が入るコントロール(ここでは「郵便番号」)を決定します。
「次へ」で今回は「都道府県と住所の2分割」にチェックを入れ、「都道府県」「住所」のコントロールを決定 これで「住所入力支援」完成です。

次に「新規」と「登録_更新」ボタンのクリックプロシージャプロパティを以下に設定します。

Private Sub 新規_Click()
    Dim ID As Single
    If 顧客ID = 0 Then
        ID = DCount("[顧客ID]", "[顧客テーブル]")
        If ID = 0 Then
            顧客ID = 1  '-----データレコードを最初に作成するときのみ
        Else
            顧客ID = DMax("[顧客ID]", "[顧客テーブル]") + 1
      ’W_顧客テーブルの「顧客ID」は「オートナンバー」ではないので
     ’顧客テーブルの最大顧客IDに+1をして顧客IDを決定します。
     ’オートナンバーと違い削除しても番号が欠番になりません
        End If
    End If
End Sub

Private Sub 登録_更新_Click()
    DoCmd.SetWarnings False  '--------[レコドの操作で警告が表示されるのを防ぎます]
    Dim 抽出条件 As String   '--------[変数:抽出条件の形式を宣言します]
    抽出条件 = "個人ID = " & Me.個人ID
    If Dirty Then
        Select Case MsgBox("登録でいいですか?", vbYesNoCancel)   '----[メッセージボックスの表示]
        Case vbYes    '--------D
      Refresh   '--------[編集を確定させる]
            DoCmd.RunSQL "Insert into 個人名テーブル Select * from W_顧客テーブル Where " & 抽出条件
  '--------[抽出条件にあうレコードを「顧客テーブル」に代入する]
            DoCmd.RunSQL "Delete * from W_顧客テーブル Where " & 抽出条件 
  '--------[抽出条件にあうレコードを「W_顧客テーブル」から削除する]
            MsgBox "登録しました"
        Case vbNo
            Undo '編集を破棄
            DoCmd.Close  '----[フォームを閉じる]
        Case vbCancel
            '何もしない
        End Select
    End If
    DoCmd.SetWarnings True    '--------[警告の表示を復活させる]
End Sub
疲れた・・第8回終了します。