MS Access はコード内で null をサポートしているようですが、テーブルに null を直接入力する方法が今のところわかりません。フィールドに数値が入力されると、それを削除したりnullに設定したりすることはできないため、これは厄介です。通常、長さ 0 の文字列を許可することでこれが処理されますが、Access では、null と長さ 0 の文字列の XML エクスポートが異なる方法で処理されます。null は関連する XML タグを削除し、長さゼロの文字列は空のタグを送信します。
7 に答える
テーブル定義で「長さゼロの文字列を許可する」オプションを設定すると役立ちますか?空の文字列を強制的にNULLとして解釈する場合があります。
データセットビューでそれを行う必要があることについて話しているのですか?更新クエリでそれを行う必要がある場合は、次のように行うことができます。
UPDATE test SET test.test = Null;
ctrl-0 を押すとヌルが挿入されます。
すべての文字を削除することはできますが、Access は少し気まぐれです。フィールドに文字がない限り、バックスペースまたは削除を押しても機能しません。いくつかの文字を入力し、すべてを選択し、削除を押し、フォーカスを変更し、レコードを変更するのが最善だと思います。上記のすべての後、「is null」を探してクエリを実行すると、レコードが見つかります。
私は実際に素人がテーブルに直接エントリを行う方法を探しています。MSSQLでは、ctrl-0を押すだけで、nullが挿入されます。すべての文字を削除しても機能しないようです。nullの代わりに、空の文字列が残ります。これらは、エクスポートの目的でAccessによって同じように扱われることはありません。
最終的には、エクスポート中に使用するxsltファイルを作成して、空のタグを削除することになると思います。そうすれば、ユーザーは実際に違いを見分けることができません。
ただし、nullを入力できると便利です。
わかりました、これは簡単に解決できる問題ではないと思います。私の最初の質問は少し的外れでした。テーブルが最初に作成された方法と同様に、問題は含まれていますが、null にはそれほど問題はありません。xsd ファイルを使用して、エクスポートする予定のテーブルを作成する場合、Access の内部で何かが発生し、それらのフィールドがエディターで作成されたフィールドとは少し異なる方法で処理されます。
私が見つけた唯一の解決策は、テーブルに新しいフィールドを作成し、古いフィールドの名前を変更し、古いフィールドから新しいフィールドにデータをコピーして、古いフィールドを削除することでした。
これを行うと、ある時点でデータが含まれていた空白のフィールドが XML 出力に含まれなくなります。これはおそらく最善の方法ではなく、なぜそれが起こっているのか正確にはわかりませんが、少なくとも問題を解決することはできます.
列内のすべての文字を削除するだけで、列で許可されている場合、アクセスによって null 値が挿入されます。