2016-12-29 7 views
0

これは、最初にデータグリッドビューにデータを挿入してデータベースに挿入するコードです。vb.netを使用してSQL Serverに日付を挿入する方法

私は、コードを実行すると、私はエラー

オペランドタイプ衝突ビットを取得するには、誰も私を助けることができる日

と互換性がありませんか?事前に

おかげ

populate(txtRejectID.Text, comboBoxCardType.Text, txtEmbossName.Text, txt6CardNum.Text, txt4CardNum.Text, txtQuantity.Text, comboBoxErrorDesc.Text, embossDate.Text, txtStatus.Text) 

    For Each row As DataGridViewRow In DataGridView1.Rows 
      Dim query As String = "INSERT INTO dbo.RejectCard VALUES (@RejectID, @Card_Type, @Emboss_Name, @Card_Number, @Quantity, @Error_Description, @Emboss_Date, @Status)" 

     Using conn As New SqlConnection(connString) 
      Using cmd As New SqlCommand(query, conn) 

       cmd.Parameters.AddWithValue("@RejectID", row.Cells("rejectid").Value) 
       cmd.Parameters.AddWithValue("@Card_Type", row.Cells("cardtype").Value) 
       cmd.Parameters.AddWithValue("@Emboss_Name", row.Cells("embossname").Value) 
       cmd.Parameters.AddWithValue("@Card_Number", row.Cells("cardnumber").Value) 
       cmd.Parameters.AddWithValue("@Quantity", row.Cells("quantity").Value) 
       cmd.Parameters.AddWithValue("@Error_Description", row.Cells("errordescription").Value) 
       cmd.Parameters.AddWithValue("@Emboss_Date", row.Cells("emboss_Date").Value = embossDate.Value.Date.ToString("dd/MM/yyyy")) 
       cmd.Parameters.AddWithValue("@Status", row.Cells("status").Value) 

       Try 
        conn.Open() 
        cmd.Connection = conn 
        cmd.ExecuteNonQuery() 

       Catch ex As Exception 
        MessageBox.Show("Error while inserting record on table..." & ex.Message, "Insert Records") 
       Finally 
        conn.Close() 
       End Try 
      End Using 
     End Using 
    Next 

    MessageBox.Show("Records inserted.") 
End Sub 
+1

値リストと同じ順序の値を参照するInsertの列リストを参照します。しかし、それはベストプラクティスです。 –

+1

私はどこから始めるべきなのか苦労しています。なぜあなたはすべてのレコードに対して新しい接続を作成しますか?すべてのレコードに対して新しいコマンドを作成する必要はありません。 'ExecuteNonQuery'を呼び出すことに決めたら、接続とコマンドを1つ作成し、すべてのパラメータを追加し、接続を開き、次にループを開始する必要があります。ループでは、各パラメータの 'Value'を設定し、executeを呼び出します。さらにうまくいけば、 'DataTable'を作成してグリッドにバインドし、一つの' Update'呼び出しでロットを保存してください。 – jmcilhinney

+0

コメントありがとうございます。私はコーディングをここから参照して、それを私のプロジェクトに実装します。私はコーディングスキルを向上させます。ありがとう –

答えて

2

あなたは、日付にあなたが何かを挿入するとまったく同じように挿入します。問題は、Dateを挿入していないことです。 Booleanを挿入しています。あなたのコードを見てください。これは挿入した値です。

row.Cells("emboss_Date").Value = embossDate.Value.Date.ToString("dd/MM/yyyy") 

これは同等の比較です。等価比較の結果は、常にBooleanです(値が等しい場合はTrue、そうでない場合はFalse)。 Dateを挿入する場合は、Dateを入力し、グリッド行の値とStringの値を比較しないでください。

なぜ残りのすべてのために何をしているのか、そのパラメータのためにやっていないのですか?あなたは明らかにあなたが何かを達成していると思っていますが、私はあなたがあなたではないことを保証することができます。あなたがしようとしているものが、の値から時間を落とすのであれば、DateStringに変換するのではなく、Dateのプロパティを取得することによって行います。

関連する問題