List 6-2 DataObj.CustomerコンポーネントのAddRecordメソッド
1: ' データベース接続文字列
2: Const g_DBConnection = _
"Driver=SQL Server;Server=(local);UID=sa;Database=businesssampleDB;"
3:
4: ' エラー処理関数群
5: Private Sub Chk_CUSTOMERNAME(ByRef CUSTOMERNAME As Variant)
6: ' 顧客名が正しいかどうか調べる
7: If IsNull(CUSTOMERNAME) Then
8: Err.Raise Errorcode.Err_NAMETOOLONG, App.Title, _
"顧客名に値が設定されていません"
9: End If
10: If Len(CUSTOMERNAME) > 64 Then
11: Err.Raise Errorcode.Err_NAMETOOLONG, App.Title, _
"顧客名は64文字以内でなければなりません"
12: End If
13: End Sub
14:
15: Private Sub Chk_YOMIGANA(ByRef YOMIGANA As Variant)
16: ' よみがなが正しいかどうかを調べる
17: If Len(YOMIGANA) > 80 Then
18: Err.Raise Errorcode.Err_YOMIGANATOOLONG, App.Title, _
"よみがなは80文字以内でなければなりません"
19: End If
20: End Sub
21:
22: Private Sub Chk_ZIP(ByRef ZIP As Variant)
23: ' 郵便番号が正しいかどうかを調べる
24: If Len(ZIP) > 10 Then
25: Err.Raise Errorcode.Err_ZIPTOOLONG, App.Title, _
"郵便番号は10文字以内でなければなりません"
26: End If
27: End Sub
28:
29: Private Sub Chk_ADDRESS(ByRef ADDRESS As Variant)
30: ' 住所が正しいかどうかを調べる
31: If Len(ADDRESS) > 255 Then
32: Err.Raise Errorcode.Err_ADDRESSTOOLONG, App.Title, _
"住所は255文字以内でなければなりません"
33: End If
34: End Sub
35:
36: Private Sub Chk_TELEPHONE(ByRef TELEPHONE As Variant)
37: ' 電話番号が正しいかどうかを調べる
38: If Len(TELEPHONE) > 32 Then
39: Err.Raise Errorcode.Err_TELEPHONETOOLONG, App.Title, _
"電話番号は32文字以内でなければなりません"
40: End If
41: End Sub
42:
43: Private Sub Chk_FAX(ByRef FAX As Variant)
44: ' FAX番号が正しいかどうかを調べる
45: If Len(FAX) > 32 Then
46: Err.Raise Errorcode.Err_FAXTOOLONG, App.Title, _
"FAX番号は32文字以内でなければなりません"
47: End If
48: End Sub
49:
50: Private Sub Chk_MEMO(ByRef MEMO As Variant)
51: ' 摘要が正しいかどうかを調べる
52: If Len(MEMO) > 80 Then
53: Err.Raise Errorcode.Err_MEMOTOOLONG, App.Title, _
"摘要は80文字以内でなければなりません"
54: End If
55: End Sub
56:
57: ' データ処理をする関数
58: Public Function AddRecord(ByVal CUSTOMERNAME As Variant, _
ByVal YOMIGANA As Variant, _
ByVal ZIP As Variant, _
ByVal ADDRESS As Variant, _
ByVal TELEPHONE As Variant, _
ByVal FAX As Variant, _
ByVal MEMO As Variant) As Long
59: ' 顧客情報テーブルに新しいレコードを加える
60: ' 【引数】
61: ' CUSTOMERNAME = 顧客名,YOMIGANA = 顧客名のよみがな
62: ' ZIP = 郵便番号, ADDRESS = 住所
63: ' TELEPHONE = 電話番号, FAX = FAX番号
64: ' MEMO = 摘要
65: ' 【戻り値】
66: ' 登録した顧客の顧客番号(顧客情報テーブルのIDフィールドの値)
67: Dim objContext As ObjectContext
68: Dim objRec As ADODB.Recordset
69: Dim userName As String, NowDate As Date
70:
71: ' オブジェクトコンテキストの取得
72: Set objContext = GetObjectContext()
73:
74: ' エラーハンドラの設定
75: On Error GoTo ErrHandle
76:
77: ' ユーザー名と現在の時刻を取得
78: userName = objContext.Security.GetOriginalCallerName()
79: NowDate = Now()
80:
81: ' 与えられた引数が正しいかどうかをチェック
82: Chk_CUSTOMERNAME CUSTOMERNAME
83: Chk_YOMIGANA YOMIGANA
84: Chk_ZIP ZIP
85: Chk_ADDRESS ADDRESS
86: Chk_TELEPHONE TELEPHONE
87: Chk_FAX FAX
88: Chk_MEMO MEMO
89:
90: ' データベースと接続して,書き込み可能なレコードセットを得る
91: Set objRec = CreateObject("ADODB.Recordset")
92: objRec.Open "顧客情報", g_DBConnection, adOpenKeyset, _
adLockPessimistic, adCmdTable
93:
94: ' 新しいレコードを追加
95: objRec.AddNew
96:
97: ' レコードにデータを設定
98: objRec.Fields("NAME").Value = CUSTOMERNAME
99: objRec.Fields("YOMIGANA").Value = YOMIGANA
100: objRec.Fields("ZIP").Value = ZIP
101: objRec.Fields("ADDRESS").Value = ADDRESS
102: objRec.Fields("TELEPHONE").Value = TELEPHONE
103: objRec.Fields("FAX").Value = FAX
104: objRec.Fields("MEMO").Value = MEMO
105: objRec.Fields("MADEUSER").Value = userName
106: objRec.Fields("MADEDATE").Value = NowDate
107: objRec.Fields("LASTUSER").Value = userName
108: objRec.Fields("LASTDATE").Value = NowDate
109: objRec.Fields("DELETEDFLAG").Value = 0
110:
111: ' データベースに反映
112: objRec.Update
113:
114: ' 作成した顧客情報の顧客番号を戻り値として設定する
115: AddRecord = objRec.Fields("ID").Value
116:
117: ' データベースとの接続を閉じてレコードセットを解放
118: objRec.Close
119: Set objRec = Nothing
120:
121: ' コミットする
122: objContext.SetComplete
123:
124: ' オブジェクトコンテキストの解放
125: Set objContext = Nothing
126:
127: Exit Function
128:
129: ErrHandle:
130: ' エラーハンドラ
131: objContext.SetAbort
132: Set objContext = Nothing
133: Set objRec = Nothing
134:
135: ' エラーの再発行
136: Err.Raise Err.Number, Err.Source, Err.Description, _
Err.HelpFile, Err.HelpContext
137:
138: End Function