• ベストアンサー

ACCESS2000のテーブルのNULL

教えてください!! ACCESS2000のテーブルにある、フィールドのデータの中にある”NULL”を数字に置き換える方法を教えてください。置き換えるのは、いくつもNULLがあっても一つでいいのですが・・・。 よろしく、お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tomo-yuki
  • ベストアンサー率39% (11/28)
回答No.3

No.1で回答させていただいたものです。 前述のプロシージャの以下の部分は使えないでしょうか? (テーブル名と数値の部分を書き直しています。) 使えない場合は、その理由を挙げていただけるとありがたいです。 Set rst = CurrentDb.OpenRecordset(対象テーブル名) Do Until rst.EOF rst.Edit For idx = 0 To rst.Fields.Count - 1 If (IsNull(rst.Fields(idx).Value)) Then rst.Fields(idx).Value = 任意の数字 End If Next idx rst.Update rst.MoveNext Loop rst.Close

Fujjy
質問者

お礼

ありがとうございます。InStr()とFindFirstを使って作りました。ものすごーーーく時間がかかりますけど・・・(笑)

その他の回答 (2)

  • muran
  • ベストアンサー率31% (12/38)
回答No.2

Fujjyさんがプログラム上で行うのか、データベースウィンドウで手作業で実行するのかわからないのですが、 数字に置き換えるテーブルに対して、 更新クエリを実行させればいいと思います。 置き換えたいフィールドがNULLのもの、とWHERE句に入れれば・・・。 SQL文の例: UPDATE テーブル名 SET フィールド名 = 0    ←置き換えたい数字を右辺に。 WHERE フィールド名 IS NULL

Fujjy
質問者

補足

説明不足でした。NULLのあるフィールドを検索してきて、プログラムで任意の数字に置き換えます。お世話になります。

  • tomo-yuki
  • ベストアンサー率39% (11/28)
回答No.1

> 置き換えるのは、いくつもNULLがあっても一つでいいのですが・・・。 がどういう意味かがわからないので的外れな回答かもしれませんが、 システムオブジェクトを除く全てのテーブルのデータにある Null を置換するとしたら、こういう風にします。(あくまで私であれば、ですが) Sub replaceNull2Number() Dim tbldf As TableDef Dim rst As Recordset Dim idx As Integer Dim num As Integer num = 0 For Each tbldf In CurrentDb.TableDefs If (Left$(tbldf.Name, 4) <> "MSys") Then Set rst = CurrentDb.OpenRecordset(tbldf.Name) Do Until rst.EOF rst.Edit For idx = 0 To rst.Fields.Count - 1 If (IsNull(rst.Fields(idx).Value)) Then rst.Fields(idx).Value = num End If Next idx rst.Update rst.MoveNext Loop rst.Close End If Next End Sub

Fujjy
質問者

補足

すみません、説明不足でした。データからNULLのフィールドを検索してきて、そのNULLに任意の数値をいれます。という意味なんです・・・。説明下手ですみません。

関連するQ&A