sql - 如何使用 VBA 或宏更新具有 Access 窗体的表?

标签 sql forms ms-access insert vba

我正在尽最大努力构建我的第一个数据库,但我遇到了一个我无法找到答案的问题。我是这个论坛的新手,正在编写任何类型的代码,所以请保持温柔。

当在表单内的列表框中双击学生姓名时,我试图在表格中创建新记录。

我想从 = lstStudent 中获取第一个 (StudentID) 列值的列表框

我想从中获取第二个 (CourseID) 列值的组合框:cboCourseID

我想从中获取第三(NoteID)列值的文本框 = txtCourseNoteID

正在所需表中创建新记录,没有不正确的代码错误,但没有值传递到字段。正在创建自动编号 (AttendanceID),但其他列为空白。这是我的代码:

  Private Sub lstStudent_DblClick(Cancel As Integer)
     CurrentDb.Execute "INSERT INTO tblAttendance (StudentID, CourseID, NoteID) VALUES ('me.lstStudent','me.cboCourseID','me.txtCourseNoteID')" 
End Sub

字段已填充,所以这不是问题所在。目标字段的格式是正确的,我想不出任何其他方式。

最佳答案

The new record is being created in the desired table and there are no incorrect code errors but there are no values being carried across to the fields. The autonumber is being created (AttendanceID) but the other columns are blank.

使用此 INSERT 语句,您将在新行中为这 3 个字段提供文本值 ...

INSERT INTO tblAttendance (StudentID, CourseID, NoteID)
VALUES ('me.lstStudent','me.cboCourseID','me.txtCourseNoteID')

但是 StudentIDCourseIDNoteID 是数字字段,因此不接受这些文本值。在那种情况下,数据库引擎无法插入任何内容。您仍会添加一个新行(在 AttendanceID 中具有新的自动编号值),但其他字段为空。

如果您在 .Execute 中包含 dbFailOnError 选项,Access 将通知您有关该问题(错误 #3464,“标准表达式中的数据类型不匹配” ) 并中止插入 --- 不会添加新行 ...

CurrentDb.Execute "INSERT INTO tblAttendance (StudentID, CourseID, NoteID) VALUES ('me.lstStudent','me.cboCourseID','me.txtCourseNoteID')", dbFailOnError

使用类似于@HarveyFrench 建议的方法,但从 VALUES 列表中删除单引号 ...

Dim strInsert As String
strInsert = "INSERT INTO tblAttendance (StudentID, CourseID, NoteID)" & vbCrLf & _
    "VALUES (" & Me.lstStudent.Value & "," & Me.cboCourseID.Value & "," & _
    Me.txtCourseNoteID.Value & ");"
Debug.Print strInsert ' <- view this in Immediate window; Ctl+g will take you there
CurrentDb.Execute strInsert, dbFailOnError

根据您告诉我们的内容,我认为这会奏效,但我不确定这是实现您目标的最佳方式。您可以打开 DAO.Recordset 并在其中添加新行。或者,如果您可以使用绑定(bind)表单,Access 将自动负责存储新行……而无需编写代码。

关于sql - 如何使用 VBA 或宏更新具有 Access 窗体的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33054705/

相关文章:

sql - 使用 IN 搜索列

sql - 为什么我收到 "The log file for database ' tempdb' 已满”

sql - 如何在 Delphi 中查找与特定格式匹配的 Access 数据库中所有表的列表

forms - 迭代动态嵌套表单控件 Angular 2

javascript - 表单验证返回引用错误

sql - BigQuery 比较日期

python - 无法在 Flask 中使用 FormData() 和 jQuery 处理文件上传

c# - AUTOINCREMENT 不适用于 OleDbCommand

ms-access - UTF-8 编码的 MS Access 表

ms-access - 在 MS Access 中创建存储过程?