2016-05-24 11 views
-2

助けてください! 私は2つの基準で、一つの列を合計しようとするとエラーがあります:OLEDB合計エラー:条件式のデータ型の不一致。 VB.NET

Data type mismatch in criteria expression.

これは、SQLコードです:

1.ID

sql1 = "SELECT SUM(quantityofproduct) AS Expr1 FROM (SP001) where year = "2016" AND month = 1" 

4列があります。

2quantityofproduct

3.year

4month

SP001はタルベの名前です。

日付の列形式と& datetimepicker1.value/text &の条件で試しましたが、動作しませんでした。

ありがとうございました。フィールドのタイプはVARCHAR(30)であれば

+0

年と月が 'datetimepicker1'の年と月に等しい場合、' quantityofproduct'の合計を取得したい –

+0

年は数字フィールドですか?はいの場合、なぜその基準に文字列を使用しますか? – Steve

+0

はい年と月が例えば2016年1月(2016年1月)のquantityofproductの合計を取得したいと考えています – Ricsi

答えて

-1

することは、あなたが引用符「」このように使用することができます。

sql1 = "SELECT SUM(quantityofproduct) AS Expr1 FROM (SP001) where year = '2016' AND month = '1'" 

をしかし、私はあなたがIntegerにカラム年と月のタイプを変更してもパラメータを使用advoise次のようなSQLインジェクションを避けてください。

Dim query As String = "SELECT SUM(quantityofproduct) AS Expr1 FROM (SP001) " & 
         "where year = @year And month = @month" 
Dim cmd As New OleDbCommand(query, connection) 
cmd.Parameters.AddWithValue("@year", YearValue) 
cmd.Parameters.AddWithValue("@month", MonthValue) 
Dim sumQuantity As Int32 = Convert.ToInt32(cmd.ExecuteScalar()) 

YearValueとMonthValueは検索された年月の値です。

+0

私は試して、それは動作します! – Ricsi

+0

ありがとうございました! – Ricsi

+0

私はそれを聞いてうれしい!ありがとうございました:) –

関連する問題