2017-05-15 6 views
-1

私のinsert into文が新しい行を作成しています。私はif文のせいだと思う。内にあるデータ[Blanco]Insert Into文が新しい行を作成するのはなぜですか?

Dim blanco = "Ja" 
Dim blanco1 = "Nee" 

With cmd 
    .CommandText = "INSERT INTO Workflow ([DossierPad]) VALUES ('" + Mid(stukjes(0), 1, 58) + "')" 
    .ExecuteNonQuery() 
    .CommandText = "INSERT INTO Data ([DossierPad], [Tif], [Grootte]) VALUES ('" + Mid(stukjes(0), 1, 58) + "','" + Mid(stukjes(0), 59, 71) + "','" + stukjes(2) + "')" 
    .ExecuteNonQuery() 
    If stukjes(2) < 20000 Then 
     .CommandText = "INSERT INTO Data ([Blanco]) VALUES ('" + blanco + "')" 
     .ExecuteNonQuery() 
    Else 
     .CommandText = "INSERT INTO Data ([Blanco]) VALUES ('" + blanco1 + "')" 
     .ExecuteNonQuery() 
    End If 
End With 

挿入し、文は私のデータベースに新しい行を作成した場合:ここで

は、私のコードの例です。あなたは、データベースが新しい行を作成しますが、同じ行の範囲内である必要があります見ての通り

enter image description here

:ここ

は、私が何かを挿入しようとするたびに、何が起こるかの写真です。

+1

多分あなたはSQLについて何かを読んでください。この言語にはいくつかのキーワードしかありませんが、それらを知っておく必要があります。 – muffi

+2

なぜINSERT文がレコードを挿入するのに驚くでしょうか?レコードを更新する場合は、 'UPDATE'ステートメントを使います。これはSQLの基本的な基本ですので、初心者向けのチュートリアルなどを実際に行う必要があります。 https://www.w3schools.com/SQl/default。asp – jmcilhinney

+0

まだ空の行にInsert文が挿入されると思っていました。 @jmcilhinney –

答えて

1

これは正常です。 SQL Syntaxについてはあまり読んでいないと思います。

は、新しい行をデータベースに追加するために使用されます。

更新はデータの変更に使用されます。

"INSERT INTO Data ([DossierPad], [Tif], [Grootte]) VALUES ('" + Mid(stukjes(0), 1, 58) + "','" + Mid(stukjes(0), 59, 71) + "','" + stukjes(2) + "')" 

をそして、あなたは実行します:あなたのコードで

あなたが最初に行う

"INSERT INTO Data ([Blanco]) VALUES ('" + blanco + "')" 
        .ExecuteNonQuery() 

は、したがって、あなたは、2つの挿入を持っています。

あなたはちょうどあなたが更新声明必要ブランコを変更する場合:DossierPadはUNIQUEある場合アッバスはこれが唯一の良い習慣です指摘したように

  • If stukjes(2) < 20000 Then 
        .CommandText = "UPDATE Data SET Blanco = '" & blanco & "' WHERE DossierPad = '" & Mid(stukjes(0), 1, 58) & "'" 
        .ExecuteNonQuery() 
    Else 
        .CommandText = "UPDATE Data SET Blanco = '" & blanco1 & "' WHERE DossierPad = '" & Mid(stukjes(0), 1, 58) & "'" 
        .ExecuteNonQuery() 
    End If 
    

    注意を

  • それ以外の場合は、主キーを使用して間違って更新しないようにしてください行
+0

私はあなたの答えが好きですが、テーブルの複数の行に同じ 'DossierPad'があるとどうなりますか?このようなフィールドは識別子として使用しないでください。 – Abbas

+0

@Abbasはい私は完全に同意するが、彼のスクリーンショットで私は見ていない**プライマリキー**フィールド:/そう、不十分な構造のデータベースで多くを行うことはできません – Mederic

+1

@Abbasはそれについて小さなノートを追加;) – Mederic

1

INSERTステートメントを実行してワークフローとデータテーブルに新しい行を作成した後で、If-Elseステートメント内でINSERTを再度使用しています。論理的には、新しい行が再び作成されます。

既存の行を更新するには、UPDATEキーワードを使用する必要があります。更新クエリの構文は次のとおりです。

UPDATE table 
SET column1 = expression1, 
    column2 = expression2, 
    ... 
[WHERE conditions]; 

これにより、最初のINSERTクエリに値が挿入されていないのはなぜですか?

関連する問題