アクセス初心者です。レコードでいっぱいのテーブルがあります。IDがnullまたは空であるかどうかを確認する関数を作成したいと思います。もしそうならxxxxxで更新したいです。id のチェックは、データベース内のすべてのテーブルに対して実行する必要があります。誰でもサンプルコードを提供できますか?
6741 次
3 に答える
1
Access SQL を使用してデータベース内のすべてのテーブルを検索できるかどうかはわかりません。代わりに、VBA を記述してテーブルをループ処理し、テーブルごとに SQL を生成することをお勧めします。次のようなもの:
update TABLE set FIELD = 'xxxxxx' where ID is null
于 2008-10-26T20:17:38.400 に答える
0
Nz() 関数を確認してください。指定したものに置き換えたときに、フィールドがnullでない限り、フィールドは変更されません。
テーブルの妥当な数とサイズについては、
- それらを開く
- 各フィールドで順番に並べ替える
- null 値を検査し、手動で置き換えます
ヌルがどこから来ているのかを見つけて止めるのは良い習慣です - フィールドにデフォルト値を与え、入力に Nz() を使用してください。そして、ネットをすり抜けるヌルをコードで処理します。
于 2008-11-05T16:23:49.083 に答える
-1
私はそれをUpdateFieldWhereNull関数と呼んでおり、それを呼び出すサブルーチンが示されています ( http://www.aislebyaisle.com/access/vba_backend_code.htmから適合) 。
DbPathパラメーターのすべてのテーブルを更新します (テストされていないため、注意して処理してください)。
Function UpdateFieldWhereNull(DbPath As String, fieldName as String, newFieldValue as String) As Boolean
'This links to all the tables that reside in DbPath,
' whether or not they already reside in this database.
'This works when linking to an Access .mdb file, not to ODBC.
'This keeps the same table name on the front end as on the back end.
Dim rs As Recordset
On Error Resume Next
'get tables in back end database
Set rs = CurrentDb.OpenRecordset("SELECT Name " & _
"FROM MSysObjects IN '" & DbPath & "' " & _
"WHERE Type=1 AND Flags=0")
If Err <> 0 Then Exit Function
'update field in tables
While Not rs.EOF
If DbPath <> Nz(DLookup("Database", "MSysObjects", "Name='" & rs!Name & "' And Type=6")) Then
'UPDATE the field with new value if null
DoCmd.RunSQL "UPDATE " & acTable & " SET [" & fieldName & "] = '" & newFieldValue & "' WHERE [" & fieldName & "] IS NULL"
End If
rs.MoveNext
Wend
rs.Close
UpdateFieldWhereNull = True
End Function
Sub CallUpdateFieldWhereNull()
Dim Result As Boolean
'Sample call:
Result = UpdateFieldWhereNull("C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb", "ID", "xxxxxx")
Debug.Print Result
End Sub
于 2008-10-26T22:19:58.967 に答える