【发布时间】:2016-04-14 01:49:04
【问题描述】:
我想在访问数据库中插入空日期,如果用户选择支付选项作为现金,则 cheque_date 值应自动输入为空,如果用户不提供账单,则 bill_date 应在数据库中输入为空,我正在尝试执行此操作,但数据类型bill|_date 和 cheque_date im 使用蒙面文本框和 chequeno 的标准表达式不匹配异常即将到来。和账单号。我正在使用文本框(checkno 和 billno。它可以存储为空,唯一的问题是将空日期存储到 accessc 数据库中)
if (txtchequeno.Text == "")
{
cmd.Parameters.AddWithValue("@Cheque_No", cheque);
}
else
{
cmd.Parameters.AddWithValue("@Cheque_No", txtchequeno.Text);
}
DateTime chequeDate;
var value = (object)DBNull.Value;
if (DateTime.TryParseExact(txtmaskchequedate.Text, "dd/mm/yyyy", null, System.Globalization.DateTimeStyles.None, out chequeDate))
{
value = chequeDate;
}
cmd.Parameters.AddWithValue("@Cheque_Date", value);
if (txtbillno.Text == "")
{
cmd.Parameters.AddWithValue("@Bill_No", billno);
}
else
{
cmd.Parameters.AddWithValue("@Bill_No", txtbillno.Text);
}
DateTime billdate;
var value1 = (object)DBNull.Value;
if (DateTime.TryParseExact(txtmaskbilldate.Text, "dd/mm/yyyy", null, System.Globalization.DateTimeStyles.None, out billdate))
{
value1 = billdate;
}
cmd.Parameters.AddWithValue("@Bill_Date", value1);
我在这里更改了我的代码,但仍然显示相同的错误数据类型不匹配表达式仍未解决如何解决
【问题讨论】:
-
您在寻找DBNull.Value吗?顺便提一句。你的代码看起来很奇怪。例如,如果“Cheque_Date”确实是
Date列,则可能不允许您向其提供txtmaskchequedate.Text的内容,这是string,而不是DateTime。 -
yes dbnull.value only 但如果用户不输入任何内容,则 value 应该为 null
-
我更改我的代码 if (DateTime.Parse(txtmaskchequedate.Text)==null) { cmd.Parameters.AddWithValue("@Cheque_Date", DBNull.Value); } else { cmd.Parameters.AddWithValue("@Cheque_Date", txtmaskchequedate.Text); } 但它给我的 String 未被识别为有效的 DateTime 异常
-
该异常被抛出,因为
txtmaskchequedate.Text的内容无法解析为DateTime。顺便提一句。DateTime.Parse永远不会返回null。请参阅DateTime.TryParse,了解如何尝试解析可能代表DateTime的string。
标签: c# ms-access-2007