日期在数据库中存储不正确

时间:2013-04-02 12:29:54

标签: c# asp.net ms-access

如果日期早于12,则以DD/MM/YYYY格式在文本框中输入日期时,它将存储为MM/DD/YYYY。我需要将它存储为打字。

protected void InsertButton_Click(object sender, EventArgs e)
{

    Int32 claim = (Int32)Session["Claim"];
    string claim1 = Convert.ToString(claim);
    Label4.Text = "Claim Number : " + (String)claim1;
    Label4.Visible = true;

    // declare variables to hold info enterend by user
    string expenseType;
    string purpose;
    decimal amount;
    DateTime date;
    Boolean receipts;

    //assign info entered to variables entered above
    expenseType = DropDownList1. Text;
    purpose = PurposeofExpenseTextBox.Text;
    amount = Convert.ToDecimal(AmountSpentTextBox.Text);
    date = Convert.ToDateTime(DatePurchasedTextBox.Text);
    receipts = CheckBox1.Checked;
    DateTime today = DateTime.Today;

    // create connection string "conn"
    string mapPath = Server.MapPath(".");
    string ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" +
       @"Data source= "*****";
    OleDbConnection conn = new OleDbConnection(ConnectionString);



    try
    {
        //create query to insert values into Expenses table   
        OleDbCommand cmd = new OleDbCommand("INSERT INTO Expenses (ExpenseType, PurposeofExpense, AmountSpent, DatePurchased, strEmpName, Receipts, EmployeeID, ExpNumber) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", conn);
        cmd.Parameters.Add("@ExpenseType", OleDbType.VarChar).Value = DropDownList1.Text;
        cmd.Parameters.Add("@PurposeofExpense", OleDbType.VarChar).Value = PurposeofExpenseTextBox.Text;
        cmd.Parameters.Add("@AmountSpent", OleDbType.VarChar).Value = AmountSpentTextBox.Text;
        cmd.Parameters.Add("@DatePurchased", OleDbType.VarChar).Value = DatePurchasedTextBox.Text;
        cmd.Parameters.Add("@strEmpName", OleDbType.VarChar).Value = (String)Session["New"];
        cmd.Parameters.Add("@Receipts", OleDbType.Boolean).Value = CheckBox1.Checked;
        cmd.Parameters.Add("@EmployeeID", OleDbType.VarChar).Value = (String)Session["Number"];
        cmd.Parameters.Add("@ExpNumber", OleDbType.VarChar).Value = (Int32)Session["Claim"];


        //open connection "conn"
        conn.Open();
        //execute insert query
        cmd.ExecuteNonQuery();

1 个答案:

答案 0 :(得分:2)

来自MSDN

  

日期值必须根据ODBC规范分隔   日期格式或由日期时间分隔符(“#”)分隔。除此以外,   Microsoft Access将该值视为算术表达式   不会发出警告或错误。例如,日期“3月5日,   1996年“必须表示为{d'1996-03-05'}或#03/05/1996#;   否则,如果仅提交03/05/1993,Microsoft Access将   将此评估为3除以5除以1996.此值向上舍入   到整数0,由于零日映射到1899-12-31,这是   使用的日期。管道符(|)不能用在日期值中,   即使用后面的引号括起来。

您需要在保存之前检查日期格式。使用一些面具。