Access 2016 VBA按钮在表格中创建新字段

时间:2017-04-13 11:04:20

标签: vba ms-access

我正在尝试在Microsoft Access中创建一个考勤跟踪器。有一个名为cmdClassToRegister的按钮,它应该在表tblStudentData中创建一个新字段。但是,我无法实现这一点 - 我得到一个运行时错误13:类型不匹配。这是我到目前为止写的VBA代码:

    Private Sub cmdClassToRegister_Click()
Dim CurrentDate As String
CurrentDate = Date
DoCmd.OpenTable ("tblStudentData")
Dim NewColName As String
NewColName = ("Attendance" + Str(CurrentDate))
TableDef.CreateField (NewColName)

End Sub

它应该像这样工作: 单击该按钮时,它将获得今天的日期并存储它。然后它打开tblStudentData表并尝试编写一个新字段。 我看不出这段代码有什么问题,请记住我是Access(和VBA)的新手。请帮助您解决此错误以及我可能犯的任何其他错误。 谢谢:))

3 个答案:

答案 0 :(得分:1)

此代码将当前日期添加到列" RegDate"中。 对于日期和时间,请使用' Now'而不是'日期'

Sub AddDate()
    Dim rs As Recordset
    Set rs = CurrentDb.OpenRecordset("yourTblName")
    rs.AddNew
    'RegDate must be a column in your table (e.g. string)
    rs!RegDate = Date
    rs.Update
End Sub

答案 1 :(得分:1)

如果你想采用tabledef方法,这是正确的方法:

Private Sub cmdClassToRegister_Click()
    Dim CurrentDate As Date
    CurrentDate = Date
    Dim NewColName As String
    Dim db As Database
    Dim tdf As TableDef
    Set db = CurrentDb()
    Set tdf = db.TableDefs("tblStudentData")
    NewColName = ("Attendance" + Str(CurrentDate))
    tdf.Fields.Append tdf.CreateField (NewColName, dbText)
End Sub

您仍然需要修复代码中的现有错误(str(CurrentDate)无效,因为str需要一个数字而CurrentDate是一个日期)。我假设您要创建一个文本字段,因此dbText

答案 2 :(得分:0)

试试这个:

Dim tbl As TableDef
Dim db As Database
Set tbl = db.CreateTableDef([YOURTABLE])
tbl.Fields.Append tbl.CreateField([NEW FIELD NAME], [TYPE]) 

正如Nathan所提到的,请在网上查看TableDefs(例如MSN Dev Portal)。

当然:

NewColName = ("Attendance" + Str(CurrentDate))

应该是:

NewColName = ("Attendance" & Str(CurrentDate))