2011-12-20 9 views
1

これを数時間見てきましたが、データ型の不一致の原因を突き止めることはできませんでした。私は、Accessデータベースmsアクセス・インサート・エラー:条件式のデータ型の不一致

INSERT文にasp.netから挿入しようとしています: (CONCATのパラメータを持つ貧しい練習を無視する)

Dim BSSQL As String = "insert into bodyshop (startdate, enddate, frontbump, rearbump, touchup, other, vehicleid)" & _ 
     "values('" & StartDateBodyShopTXT.Text & "','" & FinishDateBodyShopTXT.Text & "','" & FrntBumpCHK.Checked & "','" & RearBumpCHK.Checked & "','" & TouchUpCHK.Checked & "','" & OtherTXT.Text & "','" & insertidvehicle.ToString() & "')" 
    Dim cmdinsertintoBS As New OleDbCommand(BSSQL, conn) 
    conn.Open() 
    cmdinsertintoBS.ExecuteNonQuery() 'error thrown here 
    conn.Close() 

ここではテーブルのスナップショットです:

enter image description here

はい/いいえフィールドのフォーマットが使用"真/偽"

答えて

2

チェックボックスの値の前後に一重引用符を使用しないでください。

Dim BSSQL As String = 
    "insert into bodyshop (startdate, enddate, frontbump, rearbump, touchup, other, vehicleid)" 
    & "values ('" & StartDateBodyShopTXT.Text & "','" & FinishDateBodyShopTXT.Text & "'," & _ 
    FrntBumpCHK.Checked & "," & RearBumpCHK.Checked & "," & TouchUpCHK.Checked & ",'" & _ 
    OtherTXT.Text & "','" & insertidvehicle.ToString() & "')" 
+1

...または@AVDが指摘するようにパラメータ化クエリを使用します。 –

2

です210ハードコードされたSQL文字列の代わりに。

Dim BSSQL As String = "insert into bodyshop (startdate, enddate, frontbump, rearbump, 
    touchup, other, vehicleid) values (@startdate, @enddate, @frontbump, @rearbump, 
             @touchup, @other, @vehicleid)" 
Dim cmdinsertintoBS As New OleDbCommand(BSSQL, conn) 
cmdinsertintoBS.Parameters.Add("@startdate",OleDbType.VarChar,20).Value=StartDateBodyShopTXT.Text 
... 
関連する問題