2009-04-17 23 views
2

すべて、アクセスクエリエラー - Nullデータ型とバリアントデータ型 - このエラーを修正するにはどうすればよいですか?

このエラーは私を狂ったものにしています。私はそれを把握しようと2時間かかりました、そして/またはそれを運行なしで回避しようとしました。

"Variantデータ型ではない変数にNULL値を割り当てようとしました。" - tbl_parent_001が別の大きなテーブル(PARENTNAMEレコードを個片化するため)からして、グループを使用して作成された

SELECT tbl_budir_002.Location_Index, tbl_parent_001.NEWPARENTID 
INTO tbl_budir_003 
FROM (tbl_budir_002 
    LEFT JOIN qry_parent_003 
     ON tbl_budir_002.Location_Index = qry_parent_003.Location_Index) 
    LEFT JOIN tbl_parent_001 
     ON qry_parent_003.PARENTNAME = tbl_parent_001.PARENTNAME; 

私は思うの合併症は、この時点ででてくる:

は、ここに私のSQLです。私は手動でテーブルに移動し、フィールドautonumberとしてフィールドNEWPARENTIDを割り当てる必要があったので、PARENTNAMEレコードの主キーを与えることができました。今、私がクエリを実行すると、私は上記のエラーが発生します。私はそれが私の問題を引き起こしている自動番号だと思うが、私はクエリを使用して主キーを作成する他の方法を知らない。

私は現在のクエリ設定でエラーを軽減し、(2)テーブルのデザインビューで手動で入力するのではなく、プライマリキーを作成する方が良い方法を考えてください。あなたの問題はLEFT JOINかもしれように見えます

おかげで、 ノア

+1

バリアントデータ型はVBAにあり、データテーブルにはありません。つまり、SQLだけでなく、どこかでコードを実行する必要があります。明確にすることはできますか? –

答えて

0

。まだ存在しない表に挿入するため、アクセスは主キーとしてNEWPARENTID列を設定しようとしている可能性があります。 JOINというクエリを実行して、同じエラーが発生するかどうか確認してください。最初に手動でテーブルを作成してから、Accessが必要なものを推測する必要はありません。

0

OK、データベースでNULLを考慮する必要があります。それは難しいことではありませんが、時には迷惑になることがあります。暗黙のうちにヌルをテキストに変換することはできません。 nz - Null To Zeroを使用します。交換がテキストである場合は、「」を使用、などの下の数字は、あなたはまた、IsNullのを(使用することができます)が、それはあなたが条件付きステートメントを使用しなければならないほど便利ではありませんnz(myText,"") or nz(myNumber,0)

SELECT nz(tbl_budir_002.Location_Index,0), 
     nz(tbl_parent_001.NEWPARENTID ,0)... 

例えば0を使用する場合それを何かに設定してください。私はisnullを基準に使用し、他のすべてにはnzを使用します。

iif(isnull(tbl_budir_002.Location_Index),0,tbl_budir_002.Location_Index) 

楽しんでください。

4

ここにあるのはhttp://support.microsoft.com/kb/197587です。 Access 2000に加えて、少なくともKBの情報は、私の経験からAccess 2002に適用​​されます。回避策1と2を超えて、あなたの解決策がそれに耐えられるならば、私はNZ()内でオートナンバーフィールドをラッピングすることに成功しました。

+0

データベース内で列が 'not null'として定義されている場合、Access 97で同じ問題が発生し、フォーム内の' string'値を削除します。 Access 97では、文字列フィールドにバインドされた列が 'varchar([length])null'と宣言されている必要があります –

関連する問題