紙つぶて 細く永く

2014年6月以前の記事は旧Blog(OCN)からinportしたものそのままです。鋭意改善中です。<(_ _)>

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回終了します。