我正在尝试在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)的新手。请帮助您解决此错误以及我可能犯的任何其他错误。 谢谢:))
答案 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))