5

全て、

このエラーは私を狂わせています。私はそれを理解したり、運が悪かったりするのに2時間費やしました。エラーは次のとおりです。

「Variant データ型ではない変数に NULL 値を代入しようとしました。」

ここに私のSQLがあります:

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;

この時点で問題が発生すると思います.tbl_parent_001は、別の大きなテーブルからgroup byによって作成されました(PARENTNAMEレコードを個別化するため)。手動でテーブルに移動し、フィールド NEWPARENTID をタイプ autonumber として割り当てて、PARENTNAME レコードに主キーを与える必要がありました。さて、クエリを実行すると、上記のエラーが発生します。問題を引き起こしているのは自動番号だと思いますが、クエリを使用して主キーを作成する他の方法はわかりません。

したがって、(1) 現在のクエリ設定でエラーを軽減すること、および (2) テーブルのデザイン ビューから手動で入力するのではなく、主キーを作成するより良い方法を見つけることの 2 つの点で助けが必要です。

ありがとう、ノア

4

5 に答える 5

4

何が起こっているかは次のとおりです: http://support.microsoft.com/kb/197587 . Access 2000 に加えて、KB の情報は少なくとも Access 2002 に適用されます。回避方法 1 および 2 を超えて、解決策が耐えられる場合、自動番号フィールドを NZ() でラップすることに成功しました。

于 2011-01-07T18:47:25.907 に答える
0

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

于 2009-04-17T21:51:07.860 に答える
0

OK、データベースでヌルを考慮する必要があります。難しいことではありませんが、面倒なこともあります。数値のように null を暗黙的にテキストに変換することはできません。nz - Null To Zero を使用します。置換がテキストの場合は "" を使用し、以下のような数値の場合は 0 を使用します。たとえば、nz(myText,"") or nz(myNumber,0)

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

IsNull() を使用することもできますが、条件ステートメントを使用して別のものに設定する必要があるため、便利ではありません。基準には isnull を使用し、それ以外には nz を使用します。

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

楽しむ。

于 2009-04-17T22:18:56.263 に答える