- ベストアンサー
AccessのNULL値とSQL ServerのNULL値で違いはありますか?
SQL ServerのテーブルをAccessにODBCでリンクを貼っています。 AccessでSQL ServerのNULL項目を表示した際に挙動がおかしくなったので… そこでSQL ServerのテーブルのNULL値を空文字("")にしたら正常になりました。 AccessのNULL値とSQL ServerのNULL値で違いはありますか? ご存知の方がいましたらご教授お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 それはおそらくリンクページに書かれている理由に該当するからではないかと思います。 >一意のインデックスを構成しているフィールド内に Null 値を含む、リンクされた ODBC テーブルを持っている。 であるとすれば、SQL ServerとAccessのNULLの差異の問題ではなく、両者を繋ぐODBCの仕様(SQL Serverのレコードをキーで特定するがNULLが含まれると特定できないからSQL Serverから何も返されず、#Deletedになる)ということになります。
その他の回答 (2)
- KHSSSK
- ベストアンサー率76% (13/17)
SQL2005+Access2003でやっています。 例えば取引先テーブルに住所1と住所2のフィールドがあったとします。 Accessのテーブルの場合 SELECT 住所1+住所2 AS アドレス とした場合、住所2がNULLのときでも住所1のみが表示されますが、SQLの場合はNULLになってしまいます。 SQLのテーブルの場合 SELECT 住所1+ISNULL(住所2,"") AS アドレス とします。したがって、SQLとAccessのNULLの取扱には注意が必要と思われます。
- jamshid6
- ベストアンサー率88% (591/669)
・SQL Serverのバージョン、Accessのバージョンは書く習慣にされるとよいと思います。 ・何をもって「挙動がおかしい」と判断されたのかが知りたいです。
お礼
説明不足ですみません。 > ・SQL Serverのバージョン、Accessのバージョンは書く習慣にされるとよいと思います。 SQL Serverは2005です。 Accessは2003です。 > ・何をもって「挙動がおかしい」と判断されたのかが知りたいです。 フォームにサブフォームを貼り付けた画面でフォームでプルダウンで 選択、またはテキストボックスに入力して、サブフォームに移動したら フォームの値が全て「#Deleted」となってしまいました。 ※フォームは直接、テーブルのフィールドに結合しています。 私の認識では表示しているレコードを削除した際に「#Deleted」と 表示されると思っていますが間違っているでしょうか? ※テーブルを直接、開いて確認したらレコードは存在していました。 最初はリレーションの問題かと思ってリレーションを貼ったりして 色々と試してみましたが改善されませんでした。 プルダウンで選択した情報をフォームの各コントロールに代入 しているのでどの時に「#Deleted」が表示されてしまうのかを 確認したら空白(NULL)がある時に起きているのがわかりました。 それでNULL値を空文字("")にして再度、実行したら解消されたので AccessとSQL Serverで違いがあるのかと思って投稿しました。 理解していただけましたでしょうか? 再度、宜しくお願いします。