みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

AccessのNULL値とSQL ServerのNULL値で違いはありますか?

SQL ServerのテーブルをAccessにODBCでリンクを貼っています。
AccessでSQL ServerのNULL項目を表示した際に挙動がおかしくなったので…
そこでSQL ServerのテーブルのNULL値を空文字("")にしたら正常になりました。
AccessのNULL値とSQL ServerのNULL値で違いはありますか?
ご存知の方がいましたらご教授お願いします。

投稿日時 - 2009-04-23 19:09:47

QNo.4903281

暇なときに回答ください

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

#1です。
それはおそらくリンクページに書かれている理由に該当するからではないかと思います。
>一意のインデックスを構成しているフィールド内に Null 値を含む、リンクされた ODBC テーブルを持っている。

であるとすれば、SQL ServerとAccessのNULLの差異の問題ではなく、両者を繋ぐODBCの仕様(SQL Serverのレコードをキーで特定するがNULLが含まれると特定できないからSQL Serverから何も返されず、#Deletedになる)ということになります。

参考URL:http://support.microsoft.com/kb/128809/ja

投稿日時 - 2009-04-24 13:41:49

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

SQL2005+Access2003でやっています。
例えば取引先テーブルに住所1と住所2のフィールドがあったとします。
Accessのテーブルの場合 SELECT 住所1+住所2 AS アドレス とした場合、住所2がNULLのときでも住所1のみが表示されますが、SQLの場合はNULLになってしまいます。
SQLのテーブルの場合 SELECT 住所1+ISNULL(住所2,"") AS アドレス
とします。したがって、SQLとAccessのNULLの取扱には注意が必要と思われます。

投稿日時 - 2009-04-24 16:28:33

ANo.1

・SQL Serverのバージョン、Accessのバージョンは書く習慣にされるとよいと思います。
・何をもって「挙動がおかしい」と判断されたのかが知りたいです。

投稿日時 - 2009-04-24 00:28:57

お礼

説明不足ですみません。

> ・SQL Serverのバージョン、Accessのバージョンは書く習慣にされるとよいと思います。
SQL Serverは2005です。
Accessは2003です。

> ・何をもって「挙動がおかしい」と判断されたのかが知りたいです。
フォームにサブフォームを貼り付けた画面でフォームでプルダウンで
選択、またはテキストボックスに入力して、サブフォームに移動したら
フォームの値が全て「#Deleted」となってしまいました。
※フォームは直接、テーブルのフィールドに結合しています。

私の認識では表示しているレコードを削除した際に「#Deleted」と
表示されると思っていますが間違っているでしょうか?
※テーブルを直接、開いて確認したらレコードは存在していました。

最初はリレーションの問題かと思ってリレーションを貼ったりして
色々と試してみましたが改善されませんでした。

プルダウンで選択した情報をフォームの各コントロールに代入
しているのでどの時に「#Deleted」が表示されてしまうのかを
確認したら空白(NULL)がある時に起きているのがわかりました。

それでNULL値を空文字("")にして再度、実行したら解消されたので
AccessとSQL Serverで違いがあるのかと思って投稿しました。

理解していただけましたでしょうか?
再度、宜しくお願いします。

投稿日時 - 2009-04-24 11:15:34

あなたにオススメの質問