(図はクリックすると拡大表示)
個人名登録フォームのプロパティを設定します。
「姓」「名」「部署」「役職」「備考」のプロパティを右図「ひらがな」にします。
そして「フリガナ」は同じく「半角カタカナ」にしておきます。
(チョット訂正 T_個人名テーブルのフィールド名「趣味」はいかにも趣味が悪いので、「備考」に変更しました)
*
そして「登録」ボタンプロパティを選択しクリックイベント
に下記コードを記載する。
(「'-----」はコメントアウトの印で「’」以下のコード実行を飛ばすという意味です、また「Dirty」は編集中という意味です。そして「Refresh」で確定します)
*
Private Sub 登録_Click()
DoCmd.SetWarnings False '--------[レコドの操作で警告が表示されるのを防ぎます]
個人名登録フォームのプロパティを設定します。
「姓」「名」「部署」「役職」「備考」のプロパティを右図「ひらがな」にします。
そして「フリガナ」は同じく「半角カタカナ」にしておきます。
(チョット訂正 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.Close
End Sub
*
個人名各レコードを入力し「登録」をクリックする。
随時見本としてのデータを入力/登録してみてください。
*
F_個人名フォームと同じようにオートフォームで「F_顧客登録」フォームを作成します。
右図のよう「新規」「登録_更新」「閉じる」ボタンを配置し、デザインを変更します。
注意点は左上部分に「顧客選択」コンボボックスを配置しました。
このコントロールは非連結(プロパティのコントロールソースになにも指定しない)でOKです。
そしてプロパティデータタグの値集合ソースに顧客テーブルを選択し、
「顧客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
抽出条件 = "個人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.Close
End Sub
*
個人名各レコードを入力し「登録」をクリックする。
随時見本としてのデータを入力/登録してみてください。
*
F_個人名フォームと同じようにオートフォームで「F_顧客登録」フォームを作成します。
右図のよう「新規」「登録_更新」「閉じる」ボタンを配置し、デザインを変更します。
注意点は左上部分に「顧客選択」コンボボックスを配置しました。
このコントロールは非連結(プロパティのコントロールソースになにも指定しない)でOKです。
そしてプロパティデータタグの値集合ソースに顧客テーブルを選択し、
「顧客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 '--------[レコドの操作で警告が表示されるのを防ぎます]
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
*
抽出条件 = "個人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回終了します。