当前位置:首页 » 编程语言 » vbaaccesssql

vbaaccesssql

发布时间: 2024-12-09 12:59:04

㈠ access2013 VBA中怎样运行sql语句

sql在vba里的运用比较专业需要认真的学习研究一下,给你详细一点的资料和一个实例

你自己学着模拟练习一下

一、简单的查询


1、建立查询

数据选项卡—现有连接—浏览更多或者按快捷键Alt+D+D+D

选择要查询的Excel文件和文件中的的工作表,就可以将相应工作表的数据取过来。表现形式可以是表,也可以是数据透视表等。

2、SQL查询语句

如果是挑选部分列数据,就需要用SQL语句(取所有数据也可以用SQL语句)。


建立查询时,选择工作表后不要点击“确定”按钮,而是先点击“属性”按钮,弹出窗口中选择“定义”选项卡,在命令文本框中输入SQL查询语句(原来的工作表名称,表示所有数据,可以认为是取所有数据的SQL的一种特殊写法):

Select字段列表from[工作表名$]

--其中字段列表就是需要选择的字段,数据源用工作表名称加“$“再用中括号括起来,例如:

selectprov_name,city_name,xs_mc,xs_codefrom[Sheet1$]

select*from[Sheet1$]--取所有数据


偶然发现,字段名不能用no,估计是保留字,如需要,用中括号括起来,例如:

select[no],prov_name,city_name,xs_mc,xs_codefrom[Sheet1$]

字段名中含有特殊字符的也要用中括号括起来,如/?空格等

Excel查询没有伪表概念,对于表达式的计算直接用select既可,例如

Select23+45--返回68

Selectdate()--返回当前日期

3、修改查询语句


方法:点击右键—弹出菜单—表格—编辑查询

通过修改SQL语句可以变更所取的数据,也可以将建立查询时的简单SQL语句改成复杂的SQL语句。


字段名更换:如果想换个字段名,用“as新字段名”既可,例如:

selectprov_nameas省,city_nameas城市,xs_mcas县市,xs_codeas编码from[Sheet1$]


非正常表格:数据区域(含字段名)不在第一行

需要在工作表名称后面指定数据范围,例如:

selectprov_name,city_name,xs_mc,xs_codefrom[Sheet1$B2:G2000]

或者,将数据块定义为一个名称,假设定义为mydata,SQL语句如下:

selectprov_name,city_name,xs_mc,xs_codefrommydata

注意:使用名称时没有$符号,也没有方括号了。

数据更新:数据源发生变化,需要更新数据,方法:点击右键—弹出菜单—刷新

意外:如果打开Excel文件后弹出不是选择工作表的窗口而是一个“数据连接属性”窗口,可以关闭这个窗口,然后将Excel应用极小化再极大化方式消除,或者在弹出选择文件的窗口时,退回上一级文件夹,删除那个Queries文件夹,就行了。

二、复杂的查询

1、多表联合

相同结构的多个表合并到一起,用union连接SQL语句,例如:

Select*from[财务部$]unionallSelect*from[市场部$]

Union是去重复的,即相同的记录保留一个(类似distinct),Unionall则是直接相加两个结果,不去重复。


增加一个部门字段可以将查询结果中的区分开来,以便知道数据来自哪个表。Union的三个一致,即:字段的数量、类型和顺序。例如:

Select“财务部”as部门,*from[财务部$]unionallSelect“市场部”as部门,*from[市场部$]

多表联合查询

Select*from[部门$]bm,[员工$]ygwherebm.部门编码=yg.部门编码跨工作簿查询果数据不仅来自不同的工作表,还来自不同的文件,一样可以用union联合,例如:

Select“分公司1”as公司,“财务部”as部门,*from[F:SQL之Excel应用分公司1.xlsx].[财务部$]unionall

Select“分公司1”as公司,“市场部”as部门,*from[F:SQL之Excel应用分公司1.xlsx].[市场部$]unionall

Select“分公司2”as公司,“财务部”as部门,*from[F:SQL之Excel应用分公司2.xlsx].[财务部$]unionall

Select“分公司2”as公司,“市场部”as部门,*from[F:SQL之Excel应用分公司2.xlsx].[市场部$]

因为SQL中已经指定了文件名和表名,所以建立连接时连接谁并不重要,这种情况下,建立连接的时候就连接自己,然后再改写SQL语句。

SubUsingSQL()
DimSqlAsString
DimjAsInteger
DimrAsInteger
DimCnnAsADODB.Connection
DimrsAsADODB.Recordset
WithSheet1
.Cells.Clear
SetCnn=NewADODB.Connection
WithCnn
.Provider="Microsoft.ACE.OLEDB.12.0"
.ConnectionString="ExtendedProperties=Excel12.0;"_
&"DataSource="&ThisWorkbook.Path&"数据.xlsx"
.Open
EndWith
Setrs=NewADODB.Recordset
Sql="Select*From[Sheet1$]"
rs.OpenSql,Cnn,adOpenKeyset,adLockOptimistic
Forj=0Tors.Fields.Count-1
.Cells(1,j+1)=rs.Fields(j).Name
Next
r=.Cells(.Rows.Count,1).End(xlUp).Row
.Range("A"&r+1).CopyFromRecordsetrs
EndWith
rs.Close
Cnn.Close
Setrs=Nothing
SetCnn=Nothing
EndSub

㈡ 请问各类数据统计分析和编程语言:Access, VBA, SQL, Python, SAS, Matlab, etc. 这些有什么区别和联系

首先你得对他们进行分类:
数据库:Access、SQL、Oracle
数据分析类型:SAS、Matlab、Python、VBA
流行编程软件:Python
其中作为数据库现在以Oracle和SQL最流行,仅仅是管理数据库而已
数据分析最老的是SAS,拥有大多的库和包
Matlab相当于一个大型的计算器,对于计算非常简单,也具备编程的效果,但是运行过慢
Python是现在主流的编程软件之一,属于综合型软件,数据分析、建站等都可以
VBA是VB衍生出来的软件,excel自带,具有VB的一些特性,实行软件化非常简单,同时也继承了运行速度慢的基因
不知道你要走哪一行,所以不知道你会用到哪一些

㈢ Access VBA中如何使用 SQL 语句。

提问里是一段打开ADO记录集对象的代码,并不完整且含有错误。下面提供一个完整一点的代码供参考:

PrivateSubCommand111_Click()
DimsqlAsString
'声明ADO记录集对象
DimrsAsADODB.Recordset
Setrs=NewADODB.Recordset'实例化记录集对象
'拼写SQL语句并赋值到变量
sql="SELECTDGZY.usenameFROMDGZYWHERE(((DGZY.usename)Like'张三'));"
'打开记录集
rs.Opensql,CurrentProject.Connection,adOpenKeyset,adLockOptimistic
'利用记录集对象进行所需的有关操作,代码略
EndSub

㈣ excel vba 使用sql语句查询access数据库时,如何知道没有查找到内容

Dim Rs As Recordset
strSQL = "SELECT DISTINCT 发站 FROM [LMSData2016.12$]"
Conn.Open strConn '打开数据库链接
Set Rst = Conn.Execute(strSQL)
If rs.RecordCount > 0 Then '这个就可以判断了,大于0的就是有数

热点内容
oracle分页sql怎么写 发布:2024-12-27 11:02:02 浏览:845
服务器如何远程集中管理 发布:2024-12-27 11:00:26 浏览:889
android解锁代码 发布:2024-12-27 10:58:25 浏览:739
linuxusb摄像头的驱动 发布:2024-12-27 10:58:13 浏览:5
斗罗电脑版服务器 发布:2024-12-27 10:57:26 浏览:32
linux添加日志服务器地址 发布:2024-12-27 10:52:35 浏览:563
dlink路由器初始密码怎么修改 发布:2024-12-27 10:49:56 浏览:213
java短信接口源码 发布:2024-12-27 10:49:05 浏览:441
米8安卓8刷安卓9怎么刷 发布:2024-12-27 10:49:04 浏览:454
阿里云服务器其他账号托管 发布:2024-12-27 10:37:22 浏览:722