2012-05-10 12 views
1

私はMS Access用のSQLコードを書いています。クエリがパラメータ値を要求するのはなぜですか?

12345を除くすべての値はtext(VARCHAR)です。

INSERT INTO TABLE 
VALUES (12345, 'Mary', 'Jones', '123 George St', 'Canberra', 'ACT', '1000', '0298754689') 

と私はそれを実行したとき、それはすべてのテキストフィールドのパラメータを求めています。

これをどのように克服する必要がありますか?

ありがとうございました

+1

あなたはすべてのパラメータの値を提供していますか? – Maddy

+0

合計で9個のパラメータが必要ですが、8個のパラメータだけを挿入する必要があります。 しかし最後のパラメータもNULLではありません – user1355061

+0

挿入する構文には9個の値(すべて)が必要ですが、8個しか渡していないのでエラーになります – Maddy

答えて

3

正確にエラーメッセージは何ですか?

INSERT INTO TABLE 
VALUES (12345, 'Mary', 'Jones', '123 George St', 'Canberra', 'ACT', '1000', '0298754689') 

入力した値の数が表のフィールドの数と等しい場合にのみ、正常に実行されます。フィールド名は指定しないでください。

しかし、値の数がテーブルのフィールドの数と等しくない場合は、値を入力する特定のフィールド名を指定する必要があります。

INSERT INTO table (field1,field2,field3,field4,field5,field6,field7,field8) 
VALUES (12345, 'Mary', 'Jones', '123 George St', 'Canberra', 'ACT', '1000', '0298754689') 

あなたは9つのフィールドを持っていて、その後、第九フィールドを含むあなたの第九フィールドは、おそらく固有の番号が、その後自動インクリメントするように設定している場合、それはNULLに設定するか、したくない、あなたはフィールド名を入れて持っていけない場合。

+1

+1合意されています。 。しかし、常にフィールド(列)名を含める方が安全だと思います。 – Fionnuala

+0

あなたは値がどこに入っているか知っている方法で安全ですが、フィールドの順番が分かればOKです。 – maSTAShuFu

0

クエリ上のあなたの列の名前を指定する必要があります:あなたが唯一の8の値を挿入すると、あなたのINSERT文で必要な

INSERT INTO TABLE (col1, col2, clo3, .., col8)VALUES 
(12345, 'Mary', 'Jones', '123 George St', 'Canberra', 'ACT', '1000', '0298754689') 
+2

いいえ、そうではありません。値の数が列の数と等しく、値の順序が正しい限り、クエリは機能します。 – Fionnuala

0

小さな変更を。テーブルには9つの値があります。それは

INSERT INTO TABLE 
VALUES (null,12345, 'Mary', 'Jones', '123 George St', 'Canberra', 'ACT', '1000', '0298754689') 

よりも第1列の場合の文よりも、あなたのテーブルに最後の列に値を挿入されていない前提で

この

INSERT INTO TABLE 
VALUES (12345, 'Mary', 'Jones', '123 George St', 'Canberra', 'ACT', '1000', '0298754689',null) 

ようにする必要があり単純ではnullを置きますたとえば、挿入していないn番目の位置。

INSERT INTO TABLE 
VALUES (12345, 'Mary', null, 'Jones', '123 George St', 'Canberra', 'ACT', '1000', '0298754689') 
関連する問題