簡體   English   中英

數據類型不匹配條件表達式錯誤

[英]data type mismatch in criteria expression error

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();

使用AddWithValue意味着參數值的數據類型由值本身確定。 因此,例如,參數@transDate的數據類型是字符串,而不是日期,因為您使用ToShortDateString()轉換。 當然,這需要由參數更新的字段是字符串而不是日期。

您需要檢查每個參數是否都將更新兼容的字段類型,另一個示例可能是參數@transAmount 數據庫字段是字符串嗎? 您傳遞文本框的Text屬性,因此它應該是一個字符串。

還有另一個潛在的問題。 您應該確保將參數@transNextDay@transStatus始終添加到集合中。 當前代碼表示不添加這些參數的可能性(i > totPayments)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM