随着科技的发展和生产方式的不断升级,数据库管理已经成为了现代化企业的重要组成部分。在管理数据库过程中,需要从中快速查询出需要的数据,以实现对数据的快速分析和处理。对于数据库初学者来说,常常会觉得查询数据库是一件困难而耗时的任务。但是,在Excel中利用查询表格进行数据库操作,却可以简便快捷地完成对数据的查询和分析。本文将介绍Excel利用查询表格进行数据库操作的方法。
创新互联公司是一家专注于做网站、成都网站建设与策划设计,瀍河网站建设哪家好?创新互联公司做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:瀍河等地区。瀍河做网站价格咨询:028-86922220
一、什么是查询表格
查询表格(PivotTable)是Excel中一种可自定义的数据表格,可以根据某些条件查找数据并摘要。查询表格提供了多种计算方式,如总数、平均值、更大值等,以从大量数据中提取信息和发现规律。
二、查询表格的应用场景
1、数据汇总:利用查询表格可以从多个数据源中收集数据来查找总和、平均值、数量等信息。
2、数据报表:通过查询表格,可以很方便地生成报表,例如销售报表、财务报表等。
3、数据分析:查询表格可以帮助我们从更细致的层面上分析数据。通过对数据进行筛选、排序、分类等处理,可以轻松地发现数据中的规律和趋势。
三、查询表格的使用方法
1、准备数据:先将数据库中需要查询的数据导出到Excel中。
2、创建查询表格:在Excel中点击“插入”选项卡上的“查询表格”按钮,然后选择需要查询的数据区域。
3、设置字段:将需要查询的数据字段拖到查询表格的“行”、“列”和“值”栏中。查询表格可依据字段进行分组、归类和汇总操作。
4、设置筛选:查询表格中还可以添加“筛选”功能,以帮助我们更精准地查询数据。
5、调整样式:查询表格支持格式化操作,可以通过调整字体、颜色、边框等方式来美化表格。
四、查询表格应用实例
假设有一个销售数据的数据库,其中包含日期、商品名称、销售额等字段信息。现在需要查询2023年1月至4月各月份的销售额及总销售额,可以采用以下步骤:
1、准备数据:将数据库中的销售数据导出到Excel中。
2、创建查询表格:在Excel中点击“插入”选项卡上的“查询表格”按钮,然后选择需要查询的数据区域。
3、设置字段:将“日期”、“销售额”字段分别拖入查询表格的“行”和“值”栏中。在“日期”字段中选中需要查询的月份(1月-4月),并将查询表格的计算方式设置为“总和”。
4、设置筛选:对“日期”字段添加“筛选器”功能,以方便地筛选出需要的资源。
5、调整样式:对查询表格进行格式化调整,例如修改字体、背景色等。
五、
在企业的数据分析和处理中,查询表格是一种简便快捷的数据查询和摘要工具。通过学习查询表格的基本使用方法,可以方便地对大量的数据进行筛选、排序和分析。同时,查询表格也能帮助我们快速生成报表、汇总数据,提高日常工作效率。因此,了解查询表格,并学会熟练使用它,对我们的工作和学习都具有很大的帮助。
相关问题拓展阅读:
你好,用下列函数可以实现Excel的查询功能,可以在一张工作表查询本工作表的数据,也可以是另一张工作表的数据,甚至可以是其他工作簿的数据(路径改变之后就不行了)。
在需要显示查询值的单元格中输入下列公式:
=if(iserror(vlookup(lookupvalue,findarea,column,0)),””,vlookup(lookupvalue,findarea,column,0))
解释:
lookupvalue需要查询的数据(目标值),也就是你要输入的姓名、性别等以用来查询值的那个单元格地址。
findarea即查询的数据来源区域,可是查询目标所在的整个工作表的地址。
column你需要查询的目标值所在的列,从finderea的列一列开始数,之一列为对应的column为1,第二列为2……
模糊查询,即忽略是否排慧蔽弯序对查询的影响(不要求查询区域事先排列)并昌。
整个函数组合的解释:
Vlookup函数一般是先输入目前闷标值再查询,当改变目标值之后会出错,即iserror,所以上面用的函数可以解释为:如果所查寻的目标值是错误的(即查不到),那么形式为空,如果不出错(可查到,即目标值存在),那么查询并显示该目标值。
以下 进销存 为数据库 查询 根据实际情况自己修改
Private Sub CommandButton1_Click()
Dim str$, icol As Byte
Dim rng As Range
Dim Arr, k%
str = “*” & & “*”
ReDim Arr(1 To 9, 1 To 1)
k = 0
With Sheets(“进销存”)
For Each rng In .Range(“D2”, ..End(3))
If rng(1, 2) Like str Then
仿稿如k = k + 1
ReDim Preserve Arr(1 To 9, 1 To k)
备启For icol = 1 To 9
Arr(icol, 敬陆k) = rng(1, icol)
Next
End If
Next
End With
Rows(“4:65536”).Delete
.Resize(k, 9) = Application.Transpose(Arr)
End Sub
Sub CommandButton1_Click()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim SQL$, DataSource$
Application.ScreenUpdating = False
DataSource = ActiveWorkbook.Path & “\” & ActiveWorkbook.Name
cn.Open “Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=’Excel 8.0;Imex=1′;Data Source=” & DataSource
SQL = “select * from where 物品名称 ='” & Sheets(“查询”).Range(“E1”) & “‘”
rs.Open SQL, cn ‘, adOpenKeyset, adLockOptimistic
Range(“A3”).CopyFromRecordset rs
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub
更新一下之前写的Excel的数据库类,将其改成函数的形式,调用更简单(省却了生成类实例的步骤)。现在这个代码在工作中用了一年多,已经比较健壮。若有问题,请留言指出或与我联系。
这些代码有如下优势:
•无需任何配置。在VBA中新建模块,并晌兆哗把代码复制转帖过去即可使用。
•有以下函数:执行数据库语句、查询数据库、结果复制到单元格(Excel中最常用)、将Excel表格上传到数据库。基本覆盖Excel中对数据库的常用操作。
•会在立即窗口显示数据库错误信息,方便查错。
•在数据库连接字符串字典中配好数据库连接信息后,数据库访问时可直接使用配好的链接字符串。
具体的函数用法已经写在下面代码注释里。简单描述一下:
•dqQueryToArray(sql, connection_string) 查询数据库,返回一个二维数组
•dbQueryOne(sql, connection_string) 查询数据库,返回单个变量。
•dbQueryToCell(sql, range, connection_string, withHeader) 查询数据库后,将结果显示在range开始的区域中;withHeader控制是否显示列名。
•dbExec(sql, necction_string) 执行数据库语句;无返回值
•dbInsertRange(table, range, connection_string, is_empty) 将本Excel文件的range区域里的数据插入到数据库的表table。其中is_empty控制在上传数据前是否清空宴行table的原数据。
其它就看一下代码吧:
‘ EXCEL的ADO数据库操作函数库
‘ 这些代码应该放在Excel的VBA模块中,类模块的名字为database,并以以下形式引用:
‘
‘ res = dbQueryToArry(sql, connection_string)
‘ ‘ 返回sql的查询结果,结果为一个二维数组
‘ res = dbQueryOne(sql, connection_string)
‘ ‘ 返回sql的查询结果,但只返回之一个数据(相当于数据库查询结果的左上角那个数据)
‘ dbQueryToCell sql, save_to_range, connection_string, withHeader
‘ ‘ 将sql的查询结果直接写入到以save_to_range开头的单元格区域中
‘ ‘ withHeader控制是否复制表头,默认为true(复制表头)
‘
‘ 其中参数sql为数据库查询语句,connection_string为数据库连接字符猜掘串。
‘
‘ 比如要连接SQL数据库,并已经设置ODBC,连接字符串为:
‘ “Provider=MSDASQL;DSN=odbc_name;UID=username;PWD=password;database=database_name;”
‘ 如果未设置ODBC,连接字符串为:
‘ “driver={SQL Server};server=service_name_or_ip;uid=username;pwd=password;database=database_name;”
‘ 其中最后面的database变量可省略。对于SQL Server,推荐使用后一种方法。
‘
‘ 如果数据来源为Excel文件,connection_string参数可省略
‘
‘ 其它功能:内置数据库的连接字符串、查询存储过程
‘
‘ Author: ,v4
‘ url:
Private sqlDict As Object ‘ 缓存数据
Private cnn As Object, rst As Object, lastConn As String
Private Sub dbInitialize()
If Not sqlDict Is Nothing Then Exit Sub
Set sqlDict = CreateObject(“scripting.Dictionary”)
lastConn = “”
‘ 在这里可以缓存一些常用的数据库信息,这样在查询数据库时可以直接调用
‘ 比如dbQueryToArry(sql, “this”)
With sqlDict
.Add “SQL服务器”, _
“Provider=MSDASQL;DSN=odbc_name;UID=username;PWD=password;database=database_name;”
.Add “SQL服务器(无需配置ODBC)”, _
“driver={SQL Server};server=ip;uid=username;pwd=password;database=database_name;”
.Add “this”, “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” & ThisWorkbook.FullName & _
“;Extended Properties=Excel ” & Application.Version & “;”
End With
End Sub
‘ 查询数据库,返回RecordSet对象
‘ sql: 数据库查询语句
‘ sqlConnectString: 数据库连接信息,或者直接指定数据库,比如”Wind”、”JYDB”等,
‘ 利用内设的数据库连接信息
Public Function dbQuery(sql As String, _
Optional ByVal sqlConnectString As String = “this”) As Object ‘ ADODB.Recordset
dbConnectSQL sqlConnectString
On Error GoTo errorhander
rst.Open sql, cnn
Set dbQuery = rst
errorhander:
dbDisplayError sql
End Function
‘ 查询数据库,返回一个数组
‘ sql: 数据库查询语句
‘ sqlConnectString: 数据库连接信息,或者直接指定数据库,比如”Wind”、”JYDB”等,
‘ 利用内设的数据库连接信息
Public Function dbQueryToArray(sql As String, _
Optional ByVal sqlConnectString As String = “this”)
dbConnectSQL sqlConnectString
On Error GoTo errorhander
rst.Open sql, cnn
dbQueryToArray = rst.GetRows()
errorhander:
DisplayError sql
End Function
‘ 查询数据库,返回单个数值
‘ sql: 数据库查询语句
‘ sqlConnectString: 数据库连接信息,或者直接指定数据库,比如”Wind”、”JYDB”等,
‘ 利用内设的数据库连接信息
Public Function dbQueryOne(sql As String, _
Optional ByVal sqlConnectString As String = “this”)
dbConnectSQL sqlConnectString
On Error GoTo errorhander
rst.Open sql, cnn
dbQueryOne = rst.Fields.Item(0).value
errorhander:
dbDisplayError sql
End Function
‘ 查询数据库,返回单个数值
‘ sql: 数据库查询语句
‘ sqlConnectString: 数据库连接信息,或者直接指定数据库,比如”Wind”、”JYDB”等,
‘ 利用内设的数据库连接信息
Public Function dbQueryToCell(sql$, Optional rng As Excel.Range, _
Optional ByVal sqlConnectString$ = “this”, _
Optional withHeader As Boolean = True)
On Error GoTo error_handler
dbConnectSQL sqlConnectString
rst.Open sql, cnn
Set rng = rng.Cells(1, 1)
If withHeader = True Then
Dim i As Long
For i = 0 To rst.Fields.Count – 1
rng.Offset(0, i).value = rst.Fields(i).Name
Next
rng.Offset(1, 0).CopyFromRecordset rst
Else
rng.CopyFromRecordset rst
End If
error_handler:
dbDisplayError sql
End Function
‘ 执行任意数据库语句,无返回结果。如需返回结果,请使用Query、QueryOne、QueryToCell等函数
‘ sql: 数据库查询语句
‘ sqlConnectString: 数据库连接信息,或者直接指定数据库,比如”Wind”、”JYDB”等,利用内设的数据库连接信息
Sub dbExec(ByVal sql As String, _
Optional ByVal sqlConnectString As String = “this”)
dbConnectSQL sqlConnectString
On Error GoTo errorhander
cnn.Execute sql
errorhander:
dbDisplayError sql
End Sub
‘ 这个函数用来上传一个Excel区域到数据库,数据表必须事先建好,并且包括Excel区域的之一行
‘ Database.InsertRange(table, rng, sqlConnectString, isEmpty)
‘ table:Excel数据将上传到这个表内
‘ rng: 将被上传的Excel区域
‘ sqlConnectString: 数据库连接字符串
‘ isEmpty: 是否清空原有表格数据
Public Function dbInsertRange(table$, rng As Excel.Range, Optional ByVal sqlConnectString$ = “this”, _
Optional isEmpty As Boolean = False)
dbConnectSQL sqlConnectString
On Error Resume Next
If isEmpty Then dbExec “delete from ” & table, sqlConnectString$
Dim r As Long, sqlHead$, i As Long
‘ 首选根据isEmpty选项,删除原表内所有数据
For i = 1 To rng.Columns.Count
sqlHead = sqlHead & “,”
Next i
‘ 其次,依次拆入每行
‘ 目前每一行都需运行一个SQL语句,效率较低,如果数据量较大,可能会引起Excel死机
sqlHead = “insert into ” & table & ” (” & mid(sqlHead, 2,) & “) values “
For r = 2 To rng.rows.Count
Dim sql$
sql = “”
For i = 1 To rng.Columns.Count
Dim v
v = rng.Cells(r, i).value()
If IsError(v) Then v = “”
If IsDate(v) Then
sql = sql & “,'” & Format(v, “yyyy-mm-dd”) & “‘”
ElseIf v “” And IsNumeric(v) Then
sql = sql & “,” & v
Else
sql = sql & “,'” & v & “‘”
End If
Next i
dbExec sqlHead & ” (” & mid(sql, 2,) & “)”, sqlConnectString$
Next r
End Function
‘ 查询存储过程,返回的是ADODB.RecordSet对象
Public Function dbQueryStoredProc(procName$, para, _
Optional ByVal sqlConnectString As String = “this”, _
Optional returnPara As Boolean = True) As Object ‘ADODB.Recordset
On Error GoTo errorhander
dbConnectSQL sqlConnectString
With com
.ActiveConnection = cnn
.CommandType = adCmdStoredProc
.CommandText = procName
‘ 获取存储过程的参数定义
.Parameters.Refresh
‘ 如果存在输出参数,则删除它,默认之一个为输出参数
On Error Resume Next
If returnPara Then .Parameters.Delete 0
‘ 设置输入参数的值
If IsArray(para) Then
Dim i
For i = 0 To UBound(para)
.Parameters.Item(i).value = para(i)
Next i
End If
‘ 改变输入参数大小
Dim tmpp
For Each tmpp In .Parameters
tmpp.Size = 255
Next tmpp
‘ 获取参数返回值
Set dbQueryStoredProc = .Execute()
End With
errorhander:
DisplayError sql
End Function
Private Sub dbClose()
‘ 当类被注销时,断开数据库连接
On Error Resume Next
If cnn.State 0 Then cnn.Close
End Sub
‘ 连接数据库
‘ 此处首先检查cnn是否已经连接到想要连接的数据库,如果已经连接,将不产生任何操作
‘ 本Database对象在对象存续过程中,不会主动断开;
‘ 只有在对象注销之时,才断开数据库,如需断开数据库连接,请set db = nothing
Private Function dbConnectSQL(ByVal sqlConnectString$) As String
On Error Resume Next
Call dbInitialize
If sqlDict.Exists(LCase(sqlConnectString)) Then
sqlConnectString = sqlDict.Item(LCase(sqlConnectString))
End If
If rst Is Nothing Then Set rst = CreateObject(“ADODB.Recordset”)
If cnn Is Nothing Then Set cnn = CreateObject(“ADODB.Connection”)
If cnn.State 1 Or lastCnn sqlConnectString Then
cnn.Close
Set cnn = Nothing
Set cnn = CreateObject(“ADODB.Connection”)
cnn.Open sqlConnectString
lastConn = sqlConnectString
End If
dbConnectSQL = sqlConnectString
End Function
‘ 显示查询数据库过程中出现的错误信息,信息被显示在立即窗口。
Private Sub dbDisplayError(sql$)
Dim e
If cnn.Errors.Count > 0 Then
Debug.Print cnn.Errors.Count & ” errors found when exec “”” & sql & “”””
For Each e In cnn.Errors
Debug.Print “Error info: ” & e.description & ” Source: ” & e.Source
Next e
End If
End Sub
更新一下之前写的Excel的数据库类,将其改成函数的形式,调用更简单(省却了生成类实例的步骤)。现在这个代码在工作中用了一年多,已经比较健壮。若有问题,请留言指出或与我联系。
这些代码有如下优势:
无需任何配置。在VBA中新建模块,并把代码复制转帖过去即可使用。
有以下函数:执行数据库语句、查询数据库、结果复制到单元格(Excel中最常用)、将Excel表格上传到数州州桥据库。基本覆盖Excel中对数据库的常用操作。
会在立即窗口显示数据库错误信息,方便查错。
在数据库连接字符串字典中配好数据库连接信息后,数据库访问时可直接使用配好的链接字符串。
具体的函数用法已经写在下面代码注释里。简单描述一下:
dqQueryToArray(sql, connection_string)查询数据库,返回一个二维数组
dbQueryOne(sql, connection_string)查询数据库,返回单个变量。
dbQueryToCell(sql, range, connection_string, withHeader)查询数据库后,将结果显示在range开始的区域中;withHeader控制是否显示列名。
dbExec(sql, necction_string)执行数据库语句;无返回值
dbInsertRange(table, range, connection_string, is_empty)将本Excel文件的range区域里的数据插入到数据库的表table。其中is_empty控制在上传数据前是否清空table的原数据。
其它就看一下代码吧:
’ EXCEL的ADO数据库操作函数库
‘ 这些代码应该放在Excel的VBA模块中,类模块的名字为database,并以以下形式引用:
‘
‘ res = dbQueryToArry(sql, connection_string)
‘ ‘ 返回sql的查询结果,结果为一个二维数组
‘ res = dbQueryOne(sql, connection_string)
‘ ‘ 返回sql的查询结果,但只返回之一个数据(相当于数据库查询结果的左上角那个数据)
‘ dbQueryToCell sql, save_to_range, connection_string, withHeader
‘ ‘ 将册猛sql的查询结果直接写入到以save_to_range开头的单元格区域中
‘ ‘ withHeader控制是否复制表头,默认为true(复制表头)
‘
‘ 其中参数sql为数据库查询语句,connection_string为数据库连接字符串。
‘
‘ 比如要连接SQL数据库,并已经设置ODBC,连接字符串为:
‘ “Provider=MSDASQL;DSN=odbc_name;UID=username;PWD=password;database=database_name;”
‘ 如果未设置ODBC,连接字符串为:
‘ “driver={SQL Server};server=service_name_or_ip;uid=username;pwd=password;database=database_name;”
‘ 其中最后面的database变量可省略。对于SQL Server,推荐使用后一种方法。
‘
‘ 如果数据来源为Excel文件,connection_string参数可省略
‘
‘ 其它功能:内置数据库的连接字符串、查询存储过程
‘
‘ Author: ,v4
‘ url:
Private sqlDict As Object’ 缓存数据
Private cnn As Object, rst As Object, lastConn As String
Private Sub dbInitialize()
If Not sqlDict Is Nothing Then Exit Sub
Set sqlDict = CreateObject(“scripting.Dictionary”)
lastConn = “”
‘ 在这里可以缓存一些常用的数据库信息迹慧,这样在查询数据库时可以直接调用
‘ 比如dbQueryToArry(sql, “this”)
With sqlDict
.Add “SQL服务器”, _
“Provider=MSDASQL;DSN=odbc_name;UID=username;PWD=password;database=database_name;”
.Add “SQL服务器(无需配置ODBC)”, _
“driver={SQL Server};server=ip;uid=username;pwd=password;database=database_name;”
.Add “this”, “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” & ThisWorkbook.FullName & _
“;Extended Properties=Excel ” & Application.Version & “;”
End With
End Sub
‘ 查询数据库,返回RecordSet对象
‘ sql: 数据库查询语句
‘ sqlConnectString: 数据库连接信息,或者直接指定数据库,比如”Wind”、”JYDB”等,
‘ 利用内设的数据库连接信息
Public Function dbQuery(sql As String, _
Optional ByVal sqlConnectString As String = “this”) As Object’ ADODB.Recordset
dbConnectSQL sqlConnectString
On Error GoTo errorhander
rst.Open sql, cnn
Set dbQuery = rst
errorhander:
dbDisplayError sql
End Function
‘ 查询数据库,返回一个数组
‘ sql: 数据库查询语句
‘ sqlConnectString: 数据库连接信息,或者直接指定数据库,比如”Wind”、”JYDB”等,
‘ 利用内设的数据库连接信息
Public Function dbQueryToArray(sql As String, _
Optional ByVal sqlConnectString As String = “this”)
dbConnectSQL sqlConnectString
On Error GoTo errorhander
rst.Open sql, cnn
dbQueryToArray = rst.GetRows()
errorhander:
DisplayError sql
End Function
‘ 查询数据库,返回单个数值
‘ sql: 数据库查询语句
‘ sqlConnectString: 数据库连接信息,或者直接指定数据库,比如”Wind”、”JYDB”等,
‘ 利用内设的数据库连接信息
Public Function dbQueryOne(sql As String, _
Optional ByVal sqlConnectString As String = “this”)
dbConnectSQL sqlConnectString
On Error GoTo errorhander
rst.Open sql, cnn
dbQueryOne = rst.Fields.Item(0).value
errorhander:
dbDisplayError sql
End Function
‘ 查询数据库,返回单个数值
‘ sql: 数据库查询语句
‘ sqlConnectString: 数据库连接信息,或者直接指定数据库,比如”Wind”、”JYDB”等,
‘ 利用内设的数据库连接信息
Public Function dbQueryToCell(sql$, Optional rng As Excel.Range, _
Optional ByVal sqlConnectString$ = “this”, _
Optional withHeader As Boolean = True)
On Error GoTo error_handler
dbConnectSQL sqlConnectString
rst.Open sql, cnn
Set rng = rng.Cells(1, 1)
If withHeader = True Then
Dim i As Long
For i = 0 To rst.Fields.Count – 1
rng.Offset(0, i).value = rst.Fields(i).Name
Next
rng.Offset(1, 0).CopyFromRecordset rst
Else
rng.CopyFromRecordset rst
End If
error_handler:
dbDisplayError sql
End Function
‘ 执行任意数据库语句,无返回结果。如需返回结果,请使用Query、QueryOne、QueryToCell等函数
‘ sql: 数据库查询语句
‘ sqlConnectString: 数据库连接信息,或者直接指定数据库,比如”Wind”、”JYDB”等,利用内设的数据库连接信息
Sub dbExec(ByVal sql As String, _
Optional ByVal sqlConnectString As String = “this”)
dbConnectSQL sqlConnectString
On Error GoTo errorhander
cnn.Execute sql
errorhander:
dbDisplayError sql
End Sub
‘ 这个函数用来上传一个Excel区域到数据库,数据表必须事先建好,并且包括Excel区域的之一行
‘ Database.InsertRange(table, rng, sqlConnectString, isEmpty)
‘ table:Excel数据将上传到这个表内
‘ rng: 将被上传的Excel区域
‘ sqlConnectString: 数据库连接字符串
‘ isEmpty: 是否清空原有表格数据
Public Function dbInsertRange(table$, rng As Excel.Range, Optional ByVal sqlConnectString$ = “this”, _
Optional isEmpty As Boolean = False)
dbConnectSQL sqlConnectString
On Error Resume Next
If isEmpty Then dbExec “delete from ” & table, sqlConnectString$
Dim r As Long, sqlHead$, i As Long
‘ 首选根据isEmpty选项,删除原表内所有数据
For i = 1 To rng.Columns.Count
sqlHead = sqlHead & “,”
Next i
‘ 其次,依次拆入每行
‘ 目前每一行都需运行一个SQL语句,效率较低,如果数据量较大,可能会引起Excel死机
sqlHead = “insert into ” & table & ” (” & mid(sqlHead, 2,) & “) values “
For r = 2 To rng.rows.Count
Dim sql$
sql = “”
For i = 1 To rng.Columns.Count
Dim v
v = rng.Cells(r, i).value()
If IsError(v) Then v = “”
If IsDate(v) Then
sql = sql & “,'” & Format(v, “yyyy-mm-dd”) & “‘”
ElseIf v “” And IsNumeric(v) Then
sql = sql & “,” & v
Else
sql = sql & “,'” & v & “‘”
End If
Next i
dbExec sqlHead & ” (” & mid(sql, 2,) & “)”, sqlConnectString$
Next r
End Function
‘ 查询存储过程,返回的是ADODB.RecordSet对象
Public Function dbQueryStoredProc(procName$, para, _
Optional ByVal sqlConnectString As String = “this”, _
Optional returnPara As Boolean = True) As Object’ADODB.Recordset
On Error GoTo errorhander
dbConnectSQL sqlConnectString
With com
.ActiveConnection = cnn
.CommandType = adCmdStoredProc
.CommandText = procName
‘ 获取存储过程的参数定义
.Parameters.Refresh
‘ 如果存在输出参数,则删除它,默认之一个为输出参数
On Error Resume Next
If returnPara Then .Parameters.Delete 0
‘ 设置输入参数的值
If IsArray(para) Then
Dim i
For i = 0 To UBound(para)
.Parameters.Item(i).value = para(i)
Next i
End If
‘ 改变输入参数大小
Dim tmpp
For Each tmpp In .Parameters
tmpp.Size = 255
Next tmpp
‘ 获取参数返回值
Set dbQueryStoredProc = .Execute()
End With
errorhander:
DisplayError sql
End Function
Private Sub dbClose()
‘ 当类被注销时,断开数据库连接
On Error Resume Next
If cnn.State 0 Then cnn.Close
End Sub
‘ 连接数据库
‘ 此处首先检查cnn是否已经连接到想要连接的数据库,如果已经连接,将不产生任何操作
‘ 本Database对象在对象存续过程中,不会主动断开;
‘ 只有在对象注销之时,才断开数据库,如需断开数据库连接,请set db = nothing
Private Function dbConnectSQL(ByVal sqlConnectString$) As String
On Error Resume Next
Call dbInitialize
If sqlDict.Exists(LCase(sqlConnectString)) Then
sqlConnectString = sqlDict.Item(LCase(sqlConnectString))
End If
If rst Is Nothing Then Set rst = CreateObject(“ADODB.Recordset”)
If cnn Is Nothing Then Set cnn = CreateObject(“ADODB.Connection”)
If cnn.State 1 Or lastCnn sqlConnectString Then
cnn.Close
Set cnn = Nothing
Set cnn = CreateObject(“ADODB.Connection”)
cnn.Open sqlConnectString
lastConn = sqlConnectString
End If
dbConnectSQL = sqlConnectString
End Function
‘ 显示查询数据库过程中出现的错误信息,信息被显示在立即窗口。
Private Sub dbDisplayError(sql$)
Dim e
If cnn.Errors.Count > 0 Then
Debug.Print cnn.Errors.Count & ” errors found when exec “”” & sql & “”””
For Each e In cnn.Errors
Debug.Print “Error info: ” & e.description & ” Source: ” & e.Source
Next e
End If
End Sub
更新一下之前写的Excel的数据库类,将其改成函数的形式,调用更简单(省却了生成类实例的步骤)。无需任何配置。在VBA中新建模块,并把代码复制转帖亮纤过去即可使用。
有以下函数:执行数据库语句、查询数据库、结果复制到单元格(Excel中最常用)、将Excel表格上传到数据库。基本覆盖Excel中对数据库的常用操作。
会在立即窗口显示数据库错误信息,方便查错。
在数据库连接字符串字典中配好数据库连接信息后,数据库访问时可直接使用配好余卜的链接字符串。
具体的函数用法已经写在下面代码注释里。简单描述一下:
dqQueryToArray(sql, connection_string) 查询数据库,返回一个二维数组
dbQueryOne(sql, connection_string) 查询数据库,返回单个变量。
dbQueryToCell(sql, range, connection_string, withHeader) 查询数据库后,将结果显示在range开始的区域中敬毁仿;withHeader控制是否显示列名。
dbExec(sql, necction_string) 执行数据库语句;无返回值
dbInsertRange(table, range, connection_string, is_empty) 将本Excel文件的range区域里的数据插入到数据库的表table。其中is_empty控制在上传数据前是否清空table的原数据。
更新一下之前写的Excel的数据库类,将其改成函数的形式,调用更简单(省却了生成类实例的步骤)。现在这个代码在工作中用了一尺厅年多,已经比较健壮。
无需任何配置。在VBA中新建模块,并把代码复制转帖过去即可使用。
有以下函数:执行数据库语句、查询数据库、结果复制到单元格(Excel中最常用)、将Excel表格上传到数据库。基本覆盖Excel中对数据库的常用操作。
会在立即窗口显示数据库错误信息和迟,方便查错。
excel查询表格数据库数据库数据库中的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于excel查询表格数据库数据库数据库中,Excel利用查询表格简易操作数据库,excel两个表格,数据库表与专门查询该数据库信息的表。在查询表中以多个项目进行查询符合条件的数据。,如何更新Excel的数据库查询函数库的信息别忘了在本站进行查找喔。
香港服务器选创新互联,2H2G首月10元开通。
创新互联(www.cdcxhl.com)互联网服务提供商,拥有超过10年的服务器租用、服务器托管、云服务器、虚拟主机、网站系统开发经验。专业提供云主机、虚拟主机、域名注册、VPS主机、云服务器、香港云服务器、免备案服务器等。
分享文章:Excel利用查询表格简易操作数据库(excel查询表格数据库数据库数据库中)
网站路径:http://www.36103.cn/qtweb/news34/8034.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联