在Microsoft Access数据库中插入当前日期?

时间:2018-06-20 01:30:32

标签: vb.net ms-access

当尝试使用DateString将日期添加到Microsoft Access数据库时,出现“标准表达式中的数据类型不匹配”错误。 documentation声明“ DateString以MM-dd-yyyy格式返回系统日期”。在访问数据库中,我将格式设置为“短日期”,它具有类似的输入掩码。

enter image description here

我怀疑此问题与日期有关,是因为使用此方法插入数据但放弃了日期,效果很好。下面是我的代码,如果有人对为什么会发生这种情况有任何想法,我将不胜感激。

    Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
    provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source ="
    'Change the following to your access database location
    dataFile = "C:\Users\Administrator\Documents\CampbellBonuses.accdb"
    connString = provider & dataFile
    myConnection.ConnectionString = connString

    myConnection.Open()
    Dim str As String
    str = "insert into EmployeeBonus ([EID], [IncentiveID], [ProcedureDate], [PatientFirstName], [PatientLastName], [PatientID]) values (?, ?, ?, ?, ?,?)"
    Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection)
    cmd.Parameters.Add(New OleDbParameter("EID", CType(ComboBox1.ValueMember, String)))
    cmd.Parameters.Add(New OleDbParameter("IncentiveID", CType(ComboBox2.ValueMember, String)))
    cmd.Parameters.Add(New OleDbParameter("ProcedureDate", DateString))
    cmd.Parameters.Add(New OleDbParameter("PatientFirstName", CType(txtPFname.Text, String)))
    cmd.Parameters.Add(New OleDbParameter("PatientLastName", CType(txtPLname.Text, String)))
    cmd.Parameters.Add(New OleDbParameter("PatientID", CType(TextBox1.Text, String)))
    Try
        cmd.ExecuteNonQuery()
        cmd.Dispose()
        myConnection.Close()
        'TextBox1.Clear()
        'TextBox2.Clear()
        'TextBox3.Clear()
        'TextBox4.Clear()
        'TextBox5.Clear()
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

End Sub

1 个答案:

答案 0 :(得分:3)

表中的格式不重要;它仅用于默认显示。

您可以让Access插入当前日期:

str = "insert into EmployeeBonus ([EID], [IncentiveID], [ProcedureDate], [PatientFirstName], [PatientLastName], [PatientID]) values (?, Date(), ?, ?, ?, ?)"

或者-如果是串联的话-为Access提供一个有效的字符串表达式作为日期:

DateString = DateTime.Today.ToString("'#'yyyy'/'MM'/'dd'#'");

编辑:

但是,正如Eric所述,将参数指定为DateTime并传递真实的日期值:

DateTime.Today