我正在以新手的身份进行Access项目,但遇到了一些问题(必须在VBA中全部完成)。简而言之,我必须在表单上显示查询结果。我的文本框很少,我需要显示一些信息。我知道我必须将RecordSource更改为窗体,并且必须为每个文本框设置RecordSet。这是我的代码,但是不起作用:
Private Sub Form_open(Cancel As Integer)
Dim strSQL As String, queryDef As DAO.queryDef
strSQL = " *SELECT etc...* "
CurrentDb.QueryDefs.Delete "Info"
Set queryDef = CurrentDb.CreateQueryDef("Info", strSQL)
Me.RecordSource = queryDef.OpenRecordset() '**error here type mismatch
如何将我的RecordSource更改为打开表单时创建的查询?
(已经与Me.RecordSet = strSQL
进行过尝试,但不能与INNER JOIN一起使用)
万分感谢!
答案 0 :(得分:1)
您只需混合使用表单记录源和表单记录集。
记录源splitWords[i].join("")
是一个字符串,其中包含表/查询名称或sql select语句。
return ${splitWords}yay
记录集是一个对象。因此,必须对其进行设置
${splitWords}yay
避免重复使用Me.RecordSource
,将其存储在变量中。
每次使用它时,都会创建一个数据库实例的副本(通常是Me.RecordSource = strSQL
),它将消耗不必要的资源。
有关该主题的一些有用链接:
CurrentDB.TableDefs vs db.TableDefs ... Object Invalid or Not Set Error
MS Access: Is there a significant overhead when using CurrentDB as opposed to DBEngine(0)(0)?
Set Me.RecordSet = queryDef.OpenRecordSet
或者仅使用记录源:
CurrentDb