新建数据库怎么操作
系统数据库和用户数据库数据库有两种:系统数据库,另一种是需要用户创建的数据库,右键新建数据库(称之为用户数据库)创建数据库必须了解的概念要创建自己的数据库,首先要弄清楚两个文件:数据文件和日志文件。数...
2024.11.07【分享成果,随喜正能量】方向比速度重要,智慧比吃苦重要,学习比学历重要,机遇比关系重要,要什么比做什么重要!观念比能力重要,策划比实施重要,行动比承诺重要,选择比努力重要,感知比告知重要,创造比证明重要,尊重生命比别人看法重要.
《VBA数据库解决方案》教程是我推出第二套教程,目前已经是第一版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,教程第一版的修订内容主要是完成所有程序文件的32位和64位OFFICE系统测试。
这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是第19讲:如何在数据库中新建一个查询表
第十九讲 新建查询表,并在工作表中显示结果大家好,今日讲解VBA数据库解决方案第19讲:如何在数据库中新建一个查询表,并在工作表中显示出来。关于Recorsset集合的一些操作,在前几讲中讲了很多,这里提醒大家一点:任何对象都不是孤立存在的,要结合实际来理解。有朋友向我咨询一些概念的问题,在写这套资料时,我也同样要参考很多的资料,有时要对照着英语去理解一些概念,这时往往发现很多的概念在英语中和之前人们汉语翻译有时是对不上的。特别是现在的数据库讲解阶段,涉及到ADO、 RDO、连接、打开、引用,单纯的从概念上真的很难理解,这时我建议大家不要纠结于纯概念,要从实际出发,比如:一段代码就是一个连接,一个代码就是一个创建,这样有实际内容参考的去理解就可以了;再者,无论是什么途径,我们的目的是应用,只要我们能达到应用,就达到了我们的目的。很多写VBA的人都是专业人士,而我仅仅是根据多年的经验来写东西,会紧扣以实用为目的,目的是实用。
今日我们讲解如何从Recorsset记录集中根据某特定的条件形成一个数据库中新表。在前几讲的讲解中是把这些记录直接显示在工作表中,即显示在EXCEL文件中,今日的内容和前面的内容有所不同,是要形成一个表,然后再显示。
1 应用场景的具体分析实例:我们还是利用之前的数据库,如下资料,把职务为普通员工的职工要重新建立一个查询表,最后再在工作表中显示出来.
随着讲解的深入,实际工作中经常会遇到的问题会逐渐的体现,大家要跟紧我,我们一起学习,这套教程和《VBA代码解决方案》不同,有些内容是连续的,需要读者慢慢的连续的去领会。
2 新建查询表并回填工作表的代码及代码解读下面看看我们今日课题的代码:
Sub mynz_19() ‘第19讲:如何在数据库中新建一个查询表,并在工作表中显示出来
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 "查询表创建成功!", , "创建视图"
rsADO.Close
strSQL = "select * FROM 普通员工表"
rsADO.Open strSQL, cnADO, 1, 3
Sheets("19").select
Cells.ClearContents
For i = 0 To rsADO.Fields.Count - 1
Sheets("19").Cells(1, i + 1) = rsADO.Fields(i).Name
Next i
For i = 1 To rsADO.RecordCount
For j = 0 To rsADO.Fields.Count - 1
Sheets("19").Cells(i + 1, j + 1) = rsADO.Fields(j)
Next j
rsADO.MoveNext
Next i
rsADO.Close
cnADO.Close
Set rsADO = Nothing
Set cnADO = Nothing
End Sub
代码部分截图:
代码的讲解:
1) If Not rsADO.EOF Then
MsgBox ("请注意:原有表将删除!")
strSQL = "drop TABLE " & strViewName
cnADO.Execute strSQL
End If
以上代码判断是否存在这个表,如果存在,那么删除。
2) strSQL = "CREATE VIEW " & strViewName _
& " AS select * FROM 员工信息 " _
& "Where 职务= ‘员工‘"
cnADO.Execute strSQL
MsgBox "查询表创建成功!", , "创建视图"
rsADO.Close
上述代码创建了查询表,并弹出对话框通知用户。
这里用的CREATE VIEW 就是创建视图的意思:在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。SQL CREATE VIEW 语法CREATE VIEW view_name AS
select column_name(s)
FROM table_name
WHERE condition
注释:视图总是显示最近的数据。每当用户查询视图时,数据库引擎通过使用 SQL 语句来重建数据。
3) rsADO.Close
strSQL = "select * FROM 普通员工表"
rsADO.Open strSQL, cnADO, 1, 3
For i = 0 To rsADO.Fields.Count - 1
Sheets("Sheet1").Cells(1, i + 1) = rsADO.Fields(i).Name
Next i
For i = 1 To rsADO.RecordCount
For j = 0 To rsADO.Fields.Count - 1
Sheets("Sheet1").Cells(i + 1, j + 1) = rsADO.Fields(j)
Next j
rsADO.MoveNext
Next i
上述代码先关闭之前的rsADO,然后新建立一个查询的SQL,用于向工作表输出数据
4) rsADO.Close
cnADO.Close
Set rsADO = Nothing
Set cnADO = Nothing
最后关闭连接和释放内存。
特别注意点:在上述代码中要注意的是在新的记录集建立之前一定要关闭原先的记录集,但这个时候的数据库连接不用关闭,因为还是用的同一个数据库。好了,我们看看我们的运行结果:
看看数据库的表:
今日内容回向:
1 如何建立一些查询表?
2 查询表建立后输出的时候要注意什么?
本讲内容参考程序文件:VBA与数据库操作(第一册).xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中:
第7套教程(共三册):《VBA之EXCEL应用》:是对VBA基本的讲解
第1套教程(共三册):《VBA代码解决方案》:是入门后的提高教程
第4套教程(16G):VBA代码解决方案之视频(第一套的视频讲解)
第3套教程(共两册):《VBA数组与字典解决方案》:是对数组和字典的专题讲解
第2套教程(共两册):《VBA数据库解决方案》:是对数据库的专题讲解
第6套教程(共两册):《VBA信息获取与处理》:讲解VBA的网络及跨程序应用
第5套教程(共两册):VBA中类的解读和利用:类及接口技术的讲解
第8套教程(共三册):VBA之Word应用(最新教程):word中VBA的利用
上述教程的学习顺序:
① 713265或者743265。
② 78
系统数据库和用户数据库数据库有两种:系统数据库,另一种是需要用户创建的数据库,右键新建数据库(称之为用户数据库)创建数据库必须了解的概念要创建自己的数据库,首先要弄清楚两个文件:数据文件和日志文件。数...
2024.11.07上一篇文章讲解“数据库-连接数据库-使用配置文件”,本篇文章讲解“数据库-连接数据库+配置参数”。由于连接数据库文章篇幅过长,因此拆分成两篇文章说明。2. 方法配置1)动态定义连接信息我们可以在调用D...
2024.11.13概览最近开始在学习mysql相关知识,自己根据学到的知识点,根据自己的理解整理分享出来,本篇文章会分析下一个sql语句在mysql中的执行流程,包括sql的查询在mysql内部会怎么流转,sql语句的...
2024.11.15前言如果mysql数据库系统自带的mysql数据库被误删了,应该如何恢复?其实操作方法比较简答,今天用实验的方式分享一下1、实验环境信息实验环境信息:mysql版本5.7.27实验系统 centos ...
2024.11.07数据库简介数据库:顾名思义,就是数据的仓库,它是长期存储在计算机内,有组织的、可共享的数据的集合。数据库管理系统(DBMS: 用来对数据进行存储、管理等操作的软件)数据库分类数据库通常分为:层次式数据...
2024.11.15