这是我的代码,它首先将数据插入datagridview,然后插入数据库。
当我运行代码时,我收到错误
操作数类型碰撞位与日期
不兼容
任何人都可以帮助我吗?
提前致谢
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
答案 0 :(得分:2)
您插入日期的方式与插入其他内容的方式完全相同。问题是您没有插入Date
。您正在插入Boolean
。看看你的代码。这是您插入的值:
row.Cells("emboss_Date").Value = embossDate.Value.Date.ToString("dd/MM/yyyy")
这是一次平等比较。相等比较的结果始终为Boolean
,如果值相等则为True
,如果不相等则为False
。如果您要插入Date
,请提供Date
,而不是网格行中的值与String
之间的比较。
为什么你不仅仅为这个参数做了准备你正在为其他所有人做的事情?你清楚地认为你在那里取得了一些成就,但我可以向你保证,你并非如此。如果您尝试执行的操作是从DateTime
值中删除时间,则可以通过获取Date
属性来实现,而不是将Date
转换为{{1} }}