con.Close();
cmd = new OleDbCommand(@"INSERT INTO tbl_allTransactions VALUES
(@transDate, @transType, @transDesc, @transAmount, @transCategory,
@transFreq, @transPayVia, @transPaid, @transToPay, @transNextPay,
@transStatus, @transMonth, @transWeek, @transYear, @c_name ,@transMode)", con);
cmd.Parameters.AddWithValue("@transDate", firstPay.ToShortDateString());
cmd.Parameters.AddWithValue("@transType", cbtransType.Text);
cmd.Parameters.AddWithValue("@transDesc", txtDesc.Text);
cmd.Parameters.AddWithValue("@transAmount", txtMoney.Text);
cmd.Parameters.AddWithValue("@transCategory", cbCategory.Text);
cmd.Parameters.AddWithValue("@transFreq", cbFreq.Text);
cmd.Parameters.AddWithValue("@transPayVia", cbPay.Text);
cmd.Parameters.AddWithValue("@transPaid", i);
cmd.Parameters.AddWithValue("@transToPay", txtpayments.Text);
if (i <= (totPayments - 1))
{
cmd.Parameters.AddWithValue("@transNextPay", nextPay.ToShortDateString());
}
if (i == totPayments)
{
cmd.Parameters.AddWithValue("@transNextPay", firstPay.ToShortDateString());
}
if (i <= (totPayments - 1))
{
transStatus = "Uncleared";
cmd.Parameters.AddWithValue("@transStatus", transStatus);
}
if (i == totPayments)
{
transStatus = "Cleared";
cmd.Parameters.AddWithValue("@transStatus", transStatus);
}
cmd.Parameters.AddWithValue("@transMonth", whichMonth);
cmd.Parameters.AddWithValue("@transWeek", whichWeek);
cmd.Parameters.AddWithValue("@transYear", whichYear);
cmd.Parameters.AddWithValue("@c_name", cName);
transMode = cbDuration.Text;
cmd.Parameters.AddWithValue("@transMode", transMode);
con.Open();
int j = Convert.ToInt32(cmd.ExecuteNonQuery());
if (j == 1)
{
j = 0;
// nextPay = firstPay = DateTime.Now;
}
con.Close();
答案 0 :(得分:0)
使用AddWithValue
表示参数值的数据类型由值本身确定。因此,例如,参数@transDate
的数据类型是字符串,而不是日期,因为您使用ToShortDateString()
转换。当然,这要求参数更新的字段是字符串而不是日期。
如果每个参数都更新兼容的字段类型,则需要检查另一个示例可能是参数@transAmount
。数据库字段是字符串吗?您传递文本框的Text属性,因此它应该是一个字符串。
还有另一个潜在的问题。您应该确保参数@transNextDay
和@transStatus
始终添加到集合中。当前代码表示可能未添加这些参数(i > totPayments)