大家好,今日讲解VBA数据库解决方案第19讲:如何在数据库中新建一个查询表,并在工作表中显示出来。关于Recorsset集合的一些操作讲解,在前几讲中讲了很多,这里提醒大家一点:任何对象都不是孤立存在的,要结合实际来理解。有朋友向我咨询一些概念的问题,在写这套资料时,我也同样要参考很多的资料,有时要对照着英语去理解一些概念,这时往往发现很多的概念在英语中和之前人们翻译是有是对不上的,所以理解起来很难.特别是现在的数据库讲解阶段,涉及到ADO、 RDO、连接、打开、引用,单纯的从概念上真的很难理解,这时我建议大家不要纠结于纯概念,要从实际出发,比如:一段代码就是一个连接,一个代码就是一个创建,这样有实际内容参考的去理解就可以了;再者,无论是什么途径,我们的目的是应用,只要我们能达到应用,就达到了我们的目的。很多写VBA的人都是专业人士,而我仅仅是根据多年的经验来写东西,会紧扣以实用为目的,目的是实用,下一个目的还是实用。
今日我们讲解如何从Recorsset记录集中根据某特定的条件形成一个数据库中新表。在前几讲的讲解中是把这些记录直接显示在工作表中,即显示在EXCEL文件中,今日的内容和前面的内容有所不同,是要形成一个表,然后再显示。
实例:我们还是利用之前的数据库,如下资料,把职务为普通员工的职工要重新建立一个查询表,最后再在工作表中显示出来.
随着讲解的深入,实际工作中经常会遇到的问题会逐渐的体现,大家要跟紧我,我们一起学习,这套教程和《VBA代码解决方案》不同,有些内容是连续的,需要读者慢慢的连续的去领会。
下面看看我们今日课题的代码:
Sub mynzCreateView()
Dim cnADO, rsADO As Object
Dim strPath, strSQL, strViewName As String
Set cnADO = CreateObject("ADODB.Connection")
strPath = ThisWorkbook.Path & "mydata2.accdb"
strViewName = "普通员工表"
cnADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath
Set rsADO = cnADO.OpenSchema(20, Array(Empty, Empty, strViewName, Empty))
If Not rsADO.EOF Then
MsgBox ("请注意:原有表将删除!")
strSQL = "DROP TABLE " & strViewName
cnADO.Execute strSQL
End If
strSQL = "CREATE VIEW " & strViewName _
& " AS SELECT * FROM 员工信息 " _
& "Where 职务= '员工'"
cnADO.Execute strSQL
MsgBox "查询表创建成功!