• ベストアンサー

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

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

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

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

#1です。 それはおそらくリンクページに書かれている理由に該当するからではないかと思います。 >一意のインデックスを構成しているフィールド内に Null 値を含む、リンクされた ODBC テーブルを持っている。 であるとすれば、SQL ServerとAccessのNULLの差異の問題ではなく、両者を繋ぐODBCの仕様(SQL Serverのレコードをキーで特定するがNULLが含まれると特定できないからSQL Serverから何も返されず、#Deletedになる)ということになります。

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

その他の回答 (2)

  • KHSSSK
  • ベストアンサー率76% (13/17)
回答No.3

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)
回答No.1

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

j-unico
質問者

お礼

説明不足ですみません。 > ・SQL Serverのバージョン、Accessのバージョンは書く習慣にされるとよいと思います。 SQL Serverは2005です。 Accessは2003です。 > ・何をもって「挙動がおかしい」と判断されたのかが知りたいです。 フォームにサブフォームを貼り付けた画面でフォームでプルダウンで 選択、またはテキストボックスに入力して、サブフォームに移動したら フォームの値が全て「#Deleted」となってしまいました。 ※フォームは直接、テーブルのフィールドに結合しています。 私の認識では表示しているレコードを削除した際に「#Deleted」と 表示されると思っていますが間違っているでしょうか? ※テーブルを直接、開いて確認したらレコードは存在していました。 最初はリレーションの問題かと思ってリレーションを貼ったりして 色々と試してみましたが改善されませんでした。 プルダウンで選択した情報をフォームの各コントロールに代入 しているのでどの時に「#Deleted」が表示されてしまうのかを 確認したら空白(NULL)がある時に起きているのがわかりました。 それでNULL値を空文字("")にして再度、実行したら解消されたので AccessとSQL Serverで違いがあるのかと思って投稿しました。 理解していただけましたでしょうか? 再度、宜しくお願いします。

関連するQ&A