| Access Tips by pPoy |
| Module | テーブル内のNull値を全て0に置き換える関数 (Ac97,Ac2000,Ac2002) |
Accessのクエリー内で、フィールドの値を元に計算する場合、 Null値のあるフィールドを含んだ計算結果は、全てNullとなってしまい、正しい結果が得られません。 (Excelの場合は、空白若しくは未入力のセルを含む計算は、その部分を0と見なして計算します。) Excel からインポートしたデータには注意が必要です。 また、メインフレームなどのデータを落として Access で加工する場合も同様です。 これは、更新クエリーを使用することによって、0に変換することができます。 但し、項目 (フィールド) 数が多い場合は、 それぞれに更新クエリーを実行しなければいけないので結構面倒です。 これは、VBA を使用して、一気に Null 値を零に変換する関数です。 以下の関数を標準モジュールに貼り付けてください。 |
|||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
1.DAO 使用の場合 ≪DAOnullToZero(テーブル名) ≫
Function DAOnullToZero(tblName) As Boolean
' DAO を使用して、データの中のNull値を全て0に変換する
' 2001/10/20 pPoy
On Error GoTo Err_DAOnullToZero
Dim rst As DAO.Recordset
Dim fldValue As Variant
Dim cnt As Long
Set rst = CurrentDb.OpenRecordset(tblName)
Do Until rst.EOF
For cnt = 0 To rst.Fields.count - 1
If cnt = 0 Then GoTo fldnext
fldValue = Nz(rst(cnt), 0)
rst.Edit
rst(cnt) = fldValue
rst.Update
fldnext:
Next cnt
rst.MoveNext
Loop
rst.Close
DAOnullToZero = True
DAOnullToZero_Exit:
Exit Function
Err_DAOnullToZero:
DAOnullToZero = False
Resume DAOnullToZero_Exit
End Function
| |||||||||||
2.ADO 使用の場合 ≪ADOnullToZero(テーブル名) ≫
Function ADOnullToZero(tblName) As Boolean
' ADO を使用して、データの中のNull値を全て0に変換する
' 2001/10/20 pPoy
On Error GoTo Err_ADOnullToZero
Dim rst As New ADODB.Recordset
Dim fldValue As Variant
Dim cnt As Long
rst.Open tblName, CurrentProject.Connection, , adLockOptimistic
Do Until rst.EOF
For cnt = 0 To rst.Fields.count - 1
If cnt = 0 Then GoTo fldnext
fldValue = Nz(rst(cnt), 0)
rst(cnt) = fldValue
rst.Update
fldnext:
Next cnt
rst.MoveNext
Loop
rst.Close
ADOnullToZero = True
ADOnullToZero_Exit:
Exit Function
Err_ADOnullToZero:
ADOnullToZero = False
Resume ADOnullToZero_Exit
End Function
| |||||||||||
☆ 感想をお知らせください (直接ブラウザから送信致します。メールアカウントは不要です。)
form mail はこちら
Copyright(C) pPoy 2001