【发布时间】:2012-07-05 17:11:50
【问题描述】:
我的应用程序的某些功能存在一些问题。有一个特定的实例,我在表单上有一个“待定类”的实例供管理员查看。表单中填充了与此待定课程相关联的学生。在他们的成绩完成后,我在页脚有一个按钮,可以从我的“待定”表中删除该课程并将成绩添加到所有学生。这行得通。 但是,我想在从待处理中删除之前将这个待处理的课程(它只有课程名称、日期和教师)复制到已完成的课程表中。由于除了主键(类号)之外没有关于该类的数据在整个表单中保留,因此我无法将该行的其他字段(类名、日期)填充到我已完成的类表中。
我正在尝试在 VBA 中执行“SELECT INTO”操作来获取这些值。事情是这样的:
dim cname as String
dim classdate as Date
dim pid as integer
dim teacher as String
dim qry as String
pid = [Forms]![frmClasses]![txtID]
qry = "Select className INTO cname FROM tblPending WHERE tblPending.id = " & " ' " & pid & " ' " & ";"
db.execute qry
debug.print qry
debug.print cname
从这里开始,我对其他变量执行相同的操作,构建我的 INSERT 查询并执行它。问题是——我的选择不起作用。 Debug.print 显示局部变量从未从 SELECT INTO 语句初始化。有什么想法吗?
【问题讨论】:
-
这是一个生成表查询,我想你想要一个追加查询。我真的不认为你的身份证是文字。如果 pid 为空(空),那么 [Forms]![frmClasses]![txtID] 似乎很可能是空的。尝试使用 Me 关键字,看看它提供了哪些控件名称——Me。会调出智能感知。
-
在这种情况下我不能使用 Me 关键字。我没有使用参数打开表单,而是使用前一个表单中的字段。带有 txtID 的字段(带有相关类 ID 的文本框)位于前一个表单中。此外,这部分正在按预期工作。打印出来的查询是“Select ClassName INTO cName FROM tblPending WHERe tblPending.id = '17';”我还尝试删除 id 条件周围的单引号,因为它是一个整数,但它没有任何区别。
-
根据我从上一个表单中所做的选择,我得到了正确的对应类 ID
-
SELECT INTO 创建一个表,你想要的是 INSERT INTO,它附加到一个表中。另外,添加
db.execute qry, dbFailOnerror- 如果表存在,您的查询将失败,否则您不会收到警告。 -
在 MS Access 中,您可以使用
DLookup()来“选择变量” office.microsoft.com/en-us/access-help/… 您可能会发现其他有用的“域函数”:DMin();最大(); DAvg();等