日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
利用Excel輕松查詢數(shù)據(jù)庫表格(excel查詢表格數(shù)據(jù)庫數(shù)據(jù)庫數(shù)據(jù)庫)

隨著互聯(lián)網(wǎng)的高速發(fā)展,各種信息系統(tǒng)的數(shù)據(jù)量也在不斷增加。此時,如何高效地查詢所需數(shù)據(jù),成為一個極為重要的問題。當(dāng)今更受歡迎的數(shù)據(jù)庫軟件是MySQL,在其中,利用Excel處理數(shù)據(jù)查詢是一種常見的做法。在這篇文章中,我們將會介紹如何利用Excel輕松地查詢MySQL中的數(shù)據(jù)庫表格。

之一步:建立數(shù)據(jù)庫

我們將以XAMPP為例,介紹如何建立MySQL數(shù)據(jù)庫。首先下載并安裝XAMPP,打開xampp-control.exe。按照以下步驟建立數(shù)據(jù)庫:

1. 打開網(wǎng)頁:

http://localhost/phpmyadmin/

2. 點擊“新建”,創(chuàng)建一個新的數(shù)據(jù)庫。

3. 創(chuàng)建一個新的表格。

4. 在表格中創(chuàng)建若干個字段(如姓名、年齡等),并將數(shù)據(jù)填入。

第二步:連接數(shù)據(jù)庫

在Excel中,連接MySQL數(shù)據(jù)庫的前提是安裝MySQL的ODBC驅(qū)動程序。我們在這里以MySQL ODBC 8.0 Unicode Driver為例。請記住,在32位Excel中,只能選擇32位驅(qū)動程序;在64位Excel中,必須選擇64位驅(qū)動程序。

在連接之前,你需要獲取你的MySQL服務(wù)器地址、端口、用戶名以及密碼,以及你在之一步中所創(chuàng)建的數(shù)據(jù)庫名。連接步驟如下:

1. 打開Excel,點擊“數(shù)據(jù)”選項卡中的“從其他來源”、“從ODBC”選項。

2. 點擊“選項”,選擇“特定的D-S-N”。

3. 點擊“添加”,選擇ODBC數(shù)據(jù)源。

4. 在驅(qū)動程序列表中,選擇你安裝的MySQL ODBC驅(qū)動程序的版本,并點擊“完成”。

5. 在數(shù)據(jù)源名稱(DSN)中,填入自己定義的名稱,如“mysql_odbc”。

6. 填寫連接服務(wù)器的詳細(xì)信息,包括服務(wù)器名稱、端口號、數(shù)據(jù)庫名稱,以及認(rèn)證方式等。

7. 點擊“測試”進(jìn)行測試連接。

8. 如果成功連接,確認(rèn)所有信息都正確,然后點擊“確定”。Excel已經(jīng)連接到你的MySQL數(shù)據(jù)庫。

第三步:查詢數(shù)據(jù)庫表格

在Excel中,使用SQL查詢語言查詢MySQL數(shù)據(jù)庫非常容易。下面,我們將用SELECT語句查詢之一步建立的數(shù)據(jù)庫表格。

假設(shè)我們有如下一張表格:

![image.png](attachment:image.png)

我們想查詢年齡小于25歲的人的姓名和年齡,步驟如下:

1. 新建一個工作表,在A1單元格輸入如下的SQL查詢語句:

SELECT 姓名, 年齡 FROM people WHERE 年齡

2. 點擊右上角的查詢按鈕,Excel將向MySQL數(shù)據(jù)庫發(fā)送查詢請求,并返回結(jié)果。

![image-2.png](attachment:image-2.png)

通過這種方法,我們可以在Excel中輕松實現(xiàn)對MySQL數(shù)據(jù)庫的查詢功能。同時,根據(jù)具體需要,我們還可以利用Excel圖表功能,將查詢結(jié)果可視化,幫助我們更加清晰地理解并處理數(shù)據(jù)。

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù)!

如何利用EXCEL建立一個可查詢的數(shù)據(jù)庫

當(dāng)然可以 參考下面視頻里的模糊查詢功能,數(shù)據(jù)量不是旅配彎很大的話 用函數(shù)就可以,數(shù)據(jù)量大需要用VBA或者SQL 這的看拆悶具體表的結(jié)構(gòu)

【視頻教程】ExceL函數(shù)高級應(yīng)賣櫻用 多條件模糊搜索查詢系統(tǒng)系統(tǒng)

提供一個方法作參考敗攔槐,此方法一般適用于數(shù)據(jù)量不大的表格(在3000行內(nèi)效果比較好),如果數(shù)據(jù)量大的,要么直衡返接對商品名稱列進(jìn)行篩選,要么用VBA了,但VBA我不會^_^。

I2單元格輸入數(shù)組公式,輸入完成后不要察友直接回車,要按三鍵  CTRL+SHIFT+回車  然后右拉再下拉。

=INDEX(A:A,ALL(IF($A$2:$A$3000=$H$2,ROW($2:$3000),4^8),ROW(A1)))&””

我把文件傳上來,請點擊這回答右下角綠色的“點擊下載”按鈕,下載文件看看效果。

極其流行,同樣也是競爭力極其大的一種商業(yè)模改哪式。雖然國內(nèi)軟件開發(fā)公司都發(fā)展壯大起來了,但是各地軟件開發(fā)公司的實力及資質(zhì)仍然參差不齊。

今天給大家談?wù)刟pp開發(fā)有名的公司,軟件開發(fā)的公司有很多,但是實名的有多少呢?大家應(yīng)該都不清楚吧,放心!看完這篇文章你絕對清楚!

系統(tǒng)軟件開發(fā)有名的公司:

華盛恒輝:這家公司是國內(nèi)知名的軟件開發(fā)公司,公司成立十余年了,在軟件開發(fā)方面有很大的建樹,擁有齊全的技術(shù)團隊,所有的技術(shù)人員都是一線城市工作三年以上擁有豐富的開發(fā)經(jīng)驗,專門為企業(yè)打造品牌軟件,提供一站式軟件建設(shè)方案。非常不錯可以去試一試。

致力于為企業(yè)提供全面、系統(tǒng)的開發(fā)制作方案。在開發(fā)、建設(shè)到運營推廣領(lǐng)域擁有豐富經(jīng)驗,我們通過建立對目標(biāo)客戶和用戶行為的分析,整合高質(zhì)量設(shè)計和極其新技術(shù),為您打造創(chuàng)意十足、有價值的企業(yè)品牌中殲芹。

在軍工領(lǐng)域,合作客戶包括:中央軍委聯(lián)合參謀(原總參)、中央軍委后勤保障部(原總后)、中央軍委裝備發(fā)展部(原總裝)、裝備研究所、戰(zhàn)略支援、軍事科學(xué)院、研究所、航天科工集團、中國航天科技集團、中國船舶工業(yè)集團、中國船舶重工集團、之一研究所、訓(xùn)練器材所、裝備技術(shù)研究所等單位。

在民用領(lǐng)域,公司大力拓展民用市場,目前合作的客戶包括中國中鐵電氣化局集團、中國鐵道科學(xué)研究院、濟南機務(wù)段、東莞軌道交通公司、京港地鐵、中國國電集團、電力科學(xué)研究院、水利部、國家發(fā)改委、中信銀行、華為公司等大型客戶。

五木恒潤:這家公司也是實名的,也有自己的官網(wǎng),在行業(yè)內(nèi)也是屬于拔尖的以來開發(fā)公司,公司也有技術(shù)開發(fā)團隊和運營團隊,據(jù)說技術(shù)人員也是只招收3年以上開發(fā)經(jīng)驗的技術(shù),在實力這塊也是不用擔(dān)心。

五木恒潤擁有員工300多人,技術(shù)人員占90%以上,是一家專業(yè)的軍工信息化建設(shè)服務(wù)單位,為軍工單位提供完整的信息化解決方案。公司設(shè)有股東會、董事會、監(jiān)事會、工會等上層機構(gòu),同時設(shè)置總經(jīng)理職位,由總經(jīng)理管理公司的具體事務(wù)。公司下設(shè)有研發(fā)部、質(zhì)量部、市場部、財務(wù)部、人事部等機構(gòu)。公司下轄成都研發(fā)中心、西安賣畢研發(fā)中心、沈陽辦事處、天津辦事處等分支機構(gòu)。

盈軟科技:盈軟科技有限公司。公司提供:技術(shù)研發(fā)、技術(shù)服務(wù)、技術(shù)咨詢、成果:計算機軟硬件這家公司也是實力比較強的開發(fā)公司,公司的小程序開發(fā)只做定制版的,沒有模板開發(fā)。公司也有開發(fā)技術(shù)團隊,擁有豐富的開發(fā)經(jīng)驗。

欣蕓科技:杭州欣蕓網(wǎng)絡(luò)科技有限公司于2023年04月23日成立,提供:信息技術(shù)咨詢服務(wù);技術(shù)服務(wù)、技術(shù)開發(fā)、技術(shù)咨詢、技術(shù)交流、技術(shù)、技術(shù)推廣;軟件開發(fā);軟件外包服務(wù);網(wǎng)絡(luò)與信息安全軟件開發(fā);物聯(lián)網(wǎng)技術(shù)研發(fā);信息系統(tǒng)運行維護服務(wù);人工智能通用應(yīng)用系統(tǒng);信息系統(tǒng)集成服務(wù)。

上傳帶行列寬帆埋號的有數(shù)據(jù)示例的表格截圖,清楚說明已知條件,轎跡達(dá)成什么樣的結(jié)果,結(jié)果和已知條件有怎樣的

勾稽關(guān)系

,才能有針對慎螞性地給你準(zhǔn)確的答案。

這個要用access建立數(shù)據(jù)庫

如何更新Excel的數(shù)據(jù)庫查詢函數(shù)庫

更新一下之前寫的Excel的數(shù)據(jù)庫類,將其改成函數(shù)的形式,調(diào)用更簡單(省卻了生成類實例的步驟)?,F(xiàn)在這個代碼在工作中用了一年多,已經(jīng)比較健壯。若有問題,請留言指出或與我聯(lián)系。

這些代碼有如下優(yōu)勢:

?無需任何配置。在VBA中新建模塊,并晌兆嘩把代碼復(fù)制轉(zhuǎn)帖過去即可使用。

?有以下函數(shù):執(zhí)行數(shù)據(jù)庫語句、查詢數(shù)據(jù)庫、結(jié)果復(fù)制到單元格(Excel中最常用)、將Excel表格上傳到數(shù)據(jù)庫。基本覆蓋Excel中對數(shù)據(jù)庫的常用操作。

?會在立即窗口顯示數(shù)據(jù)庫錯誤信息,方便查錯。

?在數(shù)據(jù)庫連接字符串字典中配好數(shù)據(jù)庫連接信息后,數(shù)據(jù)庫訪問時可直接使用配好的鏈接字符串。

具體的函數(shù)用法已經(jīng)寫在下面代碼注釋里。簡單描述一下:

?dqQueryToArray(sql, connection_string) 查詢數(shù)據(jù)庫,返回一個二維數(shù)組

?dbQueryOne(sql, connection_string) 查詢數(shù)據(jù)庫,返回單個變量。

?dbQueryToCell(sql, range, connection_string, withHeader) 查詢數(shù)據(jù)庫后,將結(jié)果顯示在range開始的區(qū)域中;withHeader控制是否顯示列名。

?dbExec(sql, necction_string) 執(zhí)行數(shù)據(jù)庫語句;無返回值

?dbInsertRange(table, range, connection_string, is_empty) 將本Excel文件的range區(qū)域里的數(shù)據(jù)插入到數(shù)據(jù)庫的表table。其中is_empty控制在上傳數(shù)據(jù)前是否清空宴行table的原數(shù)據(jù)。

其它就看一下代碼吧:

‘ EXCEL的ADO數(shù)據(jù)庫操作函數(shù)庫

‘ 這些代碼應(yīng)該放在Excel的VBA模塊中,類模塊的名字為database,并以以下形式引用:

‘ res = dbQueryToArry(sql, connection_string)

‘ ‘ 返回sql的查詢結(jié)果,結(jié)果為一個二維數(shù)組

‘ res = dbQueryOne(sql, connection_string)

‘ ‘ 返回sql的查詢結(jié)果,但只返回之一個數(shù)據(jù)(相當(dāng)于數(shù)據(jù)庫查詢結(jié)果的左上角那個數(shù)據(jù))

‘ dbQueryToCell sql, save_to_range, connection_string, withHeader

‘ ‘ 將sql的查詢結(jié)果直接寫入到以save_to_range開頭的單元格區(qū)域中

‘ ‘ withHeader控制是否復(fù)制表頭,默認(rèn)為true(復(fù)制表頭)

‘ 其中參數(shù)sql為數(shù)據(jù)庫查詢語句,connection_string為數(shù)據(jù)庫連接字符猜掘串。

‘ 比如要連接SQL數(shù)據(jù)庫,并已經(jīng)設(shè)置ODBC,連接字符串為:

‘ “Provider=MSDASQL;DSN=odbc_name;UID=username;PWD=password;database=database_name;”

‘ 如果未設(shè)置ODBC,連接字符串為:

‘ “driver={SQL Server};server=service_name_or_ip;uid=username;pwd=password;database=database_name;”

‘ 其中最后面的database變量可省略。對于SQL Server,推薦使用后一種方法。

‘ 如果數(shù)據(jù)來源為Excel文件,connection_string參數(shù)可省略

‘ 其它功能:內(nèi)置數(shù)據(jù)庫的連接字符串、查詢存儲過程

‘ Author: ,v4

‘ url:

Private sqlDict As Object ‘ 緩存數(shù)據(jù)

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 = “”

‘ 在這里可以緩存一些常用的數(shù)據(jù)庫信息,這樣在查詢數(shù)據(jù)庫時可以直接調(diào)用

‘ 比如dbQueryToArry(sql, “this”)

With sqlDict

.Add “SQL服務(wù)器”, _

“Provider=MSDASQL;DSN=odbc_name;UID=username;PWD=password;database=database_name;”

.Add “SQL服務(wù)器(無需配置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

‘ 查詢數(shù)據(jù)庫,返回RecordSet對象

‘ sql: 數(shù)據(jù)庫查詢語句

‘ sqlConnectString: 數(shù)據(jù)庫連接信息,或者直接指定數(shù)據(jù)庫,比如”Wind”、”JYDB”等,

‘ 利用內(nèi)設(shè)的數(shù)據(jù)庫連接信息

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

‘ 查詢數(shù)據(jù)庫,返回一個數(shù)組

‘ sql: 數(shù)據(jù)庫查詢語句

‘ sqlConnectString: 數(shù)據(jù)庫連接信息,或者直接指定數(shù)據(jù)庫,比如”Wind”、”JYDB”等,

‘ 利用內(nèi)設(shè)的數(shù)據(jù)庫連接信息

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

‘ 查詢數(shù)據(jù)庫,返回單個數(shù)值

‘ sql: 數(shù)據(jù)庫查詢語句

‘ sqlConnectString: 數(shù)據(jù)庫連接信息,或者直接指定數(shù)據(jù)庫,比如”Wind”、”JYDB”等,

‘ 利用內(nèi)設(shè)的數(shù)據(jù)庫連接信息

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

‘ 查詢數(shù)據(jù)庫,返回單個數(shù)值

‘ sql: 數(shù)據(jù)庫查詢語句

‘ sqlConnectString: 數(shù)據(jù)庫連接信息,或者直接指定數(shù)據(jù)庫,比如”Wind”、”JYDB”等,

‘ 利用內(nèi)設(shè)的數(shù)據(jù)庫連接信息

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

‘ 執(zhí)行任意數(shù)據(jù)庫語句,無返回結(jié)果。如需返回結(jié)果,請使用Query、QueryOne、QueryToCell等函數(shù)

‘ sql: 數(shù)據(jù)庫查詢語句

‘ sqlConnectString: 數(shù)據(jù)庫連接信息,或者直接指定數(shù)據(jù)庫,比如”Wind”、”JYDB”等,利用內(nèi)設(shè)的數(shù)據(jù)庫連接信息

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

‘ 這個函數(shù)用來上傳一個Excel區(qū)域到數(shù)據(jù)庫,數(shù)據(jù)表必須事先建好,并且包括Excel區(qū)域的之一行

‘ Database.InsertRange(table, rng, sqlConnectString, isEmpty)

‘ table:Excel數(shù)據(jù)將上傳到這個表內(nèi)

‘ rng: 將被上傳的Excel區(qū)域

‘ sqlConnectString: 數(shù)據(jù)庫連接字符串

‘ isEmpty: 是否清空原有表格數(shù)據(jù)

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

‘ 首選根據(jù)isEmpty選項,刪除原表內(nèi)所有數(shù)據(jù)

For i = 1 To rng.Columns.Count

sqlHead = sqlHead & “,”

Next i

‘ 其次,依次拆入每行

‘ 目前每一行都需運行一個SQL語句,效率較低,如果數(shù)據(jù)量較大,可能會引起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

‘ 獲取存儲過程的參數(shù)定義

.Parameters.Refresh

‘ 如果存在輸出參數(shù),則刪除它,默認(rèn)之一個為輸出參數(shù)

On Error Resume Next

If returnPara Then .Parameters.Delete 0

‘ 設(shè)置輸入?yún)?shù)的值

If IsArray(para) Then

Dim i

For i = 0 To UBound(para)

.Parameters.Item(i).value = para(i)

Next i

End If

‘ 改變輸入?yún)?shù)大小

Dim tmpp

For Each tmpp In .Parameters

tmpp.Size = 255

Next tmpp

‘ 獲取參數(shù)返回值

Set dbQueryStoredProc = .Execute()

End With

errorhander:

DisplayError sql

End Function

Private Sub dbClose()

‘ 當(dāng)類被注銷時,斷開數(shù)據(jù)庫連接

On Error Resume Next

If cnn.State 0 Then cnn.Close

End Sub

‘ 連接數(shù)據(jù)庫

‘ 此處首先檢查cnn是否已經(jīng)連接到想要連接的數(shù)據(jù)庫,如果已經(jīng)連接,將不產(chǎn)生任何操作

‘ 本Database對象在對象存續(xù)過程中,不會主動斷開;

‘ 只有在對象注銷之時,才斷開數(shù)據(jù)庫,如需斷開數(shù)據(jù)庫連接,請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

‘ 顯示查詢數(shù)據(jù)庫過程中出現(xiàn)的錯誤信息,信息被顯示在立即窗口。

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的數(shù)據(jù)庫類,將其改成函數(shù)的形式,調(diào)用更簡單(省卻了生成類實例的步驟)?,F(xiàn)在這個代碼在工作中用了一年多,已經(jīng)比較健壯。若有問題,請留言指出或與我聯(lián)系。

  這些代碼有如下優(yōu)勢:

  無需任何配置。在VBA中新建模塊,并把代碼復(fù)制轉(zhuǎn)帖過去即可使用。

  有以下函數(shù):執(zhí)行數(shù)據(jù)庫語句、查詢數(shù)據(jù)庫、結(jié)果復(fù)制到單元格(Excel中最常用)、將Excel表格上傳到數(shù)州州橋據(jù)庫。基本覆蓋Excel中對數(shù)據(jù)庫的常用操作。

  會在立即窗口顯示數(shù)據(jù)庫錯誤信息,方便查錯。

  在數(shù)據(jù)庫連接字符串字典中配好數(shù)據(jù)庫連接信息后,數(shù)據(jù)庫訪問時可直接使用配好的鏈接字符串。

  具體的函數(shù)用法已經(jīng)寫在下面代碼注釋里。簡單描述一下:

  dqQueryToArray(sql, connection_string)查詢數(shù)據(jù)庫,返回一個二維數(shù)組

  dbQueryOne(sql, connection_string)查詢數(shù)據(jù)庫,返回單個變量。

  dbQueryToCell(sql, range, connection_string, withHeader)查詢數(shù)據(jù)庫后,將結(jié)果顯示在range開始的區(qū)域中;withHeader控制是否顯示列名。

  dbExec(sql, necction_string)執(zhí)行數(shù)據(jù)庫語句;無返回值

  dbInsertRange(table, range, connection_string, is_empty)將本Excel文件的range區(qū)域里的數(shù)據(jù)插入到數(shù)據(jù)庫的表table。其中is_empty控制在上傳數(shù)據(jù)前是否清空table的原數(shù)據(jù)。

  其它就看一下代碼吧:

  ’ EXCEL的ADO數(shù)據(jù)庫操作函數(shù)庫

‘ 這些代碼應(yīng)該放在Excel的VBA模塊中,類模塊的名字為database,并以以下形式引用:

‘ res = dbQueryToArry(sql, connection_string)

‘ ‘ 返回sql的查詢結(jié)果,結(jié)果為一個二維數(shù)組

‘ res = dbQueryOne(sql, connection_string)

‘ ‘ 返回sql的查詢結(jié)果,但只返回之一個數(shù)據(jù)(相當(dāng)于數(shù)據(jù)庫查詢結(jié)果的左上角那個數(shù)據(jù))

‘ dbQueryToCell sql, save_to_range, connection_string, withHeader

‘ ‘ 將冊猛sql的查詢結(jié)果直接寫入到以save_to_range開頭的單元格區(qū)域中

‘ ‘ withHeader控制是否復(fù)制表頭,默認(rèn)為true(復(fù)制表頭)

‘ 其中參數(shù)sql為數(shù)據(jù)庫查詢語句,connection_string為數(shù)據(jù)庫連接字符串。

‘ 比如要連接SQL數(shù)據(jù)庫,并已經(jīng)設(shè)置ODBC,連接字符串為:

‘ “Provider=MSDASQL;DSN=odbc_name;UID=username;PWD=password;database=database_name;”

‘ 如果未設(shè)置ODBC,連接字符串為:

‘ “driver={SQL Server};server=service_name_or_ip;uid=username;pwd=password;database=database_name;”

‘ 其中最后面的database變量可省略。對于SQL Server,推薦使用后一種方法。

‘ 如果數(shù)據(jù)來源為Excel文件,connection_string參數(shù)可省略

‘ 其它功能:內(nèi)置數(shù)據(jù)庫的連接字符串、查詢存儲過程

‘ Author: ,v4

‘ url:

Private sqlDict As Object’ 緩存數(shù)據(jù)

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 = “”

‘ 在這里可以緩存一些常用的數(shù)據(jù)庫信息跡慧,這樣在查詢數(shù)據(jù)庫時可以直接調(diào)用

‘ 比如dbQueryToArry(sql, “this”)

With sqlDict

.Add “SQL服務(wù)器”, _

“Provider=MSDASQL;DSN=odbc_name;UID=username;PWD=password;database=database_name;”

.Add “SQL服務(wù)器(無需配置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

‘ 查詢數(shù)據(jù)庫,返回RecordSet對象

‘ sql: 數(shù)據(jù)庫查詢語句

‘ sqlConnectString: 數(shù)據(jù)庫連接信息,或者直接指定數(shù)據(jù)庫,比如”Wind”、”JYDB”等,

‘ 利用內(nèi)設(shè)的數(shù)據(jù)庫連接信息

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

‘ 查詢數(shù)據(jù)庫,返回一個數(shù)組

‘ sql: 數(shù)據(jù)庫查詢語句

‘ sqlConnectString: 數(shù)據(jù)庫連接信息,或者直接指定數(shù)據(jù)庫,比如”Wind”、”JYDB”等,

‘ 利用內(nèi)設(shè)的數(shù)據(jù)庫連接信息

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

‘ 查詢數(shù)據(jù)庫,返回單個數(shù)值

‘ sql: 數(shù)據(jù)庫查詢語句

‘ sqlConnectString: 數(shù)據(jù)庫連接信息,或者直接指定數(shù)據(jù)庫,比如”Wind”、”JYDB”等,

‘ 利用內(nèi)設(shè)的數(shù)據(jù)庫連接信息

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

‘ 查詢數(shù)據(jù)庫,返回單個數(shù)值

‘ sql: 數(shù)據(jù)庫查詢語句

‘ sqlConnectString: 數(shù)據(jù)庫連接信息,或者直接指定數(shù)據(jù)庫,比如”Wind”、”JYDB”等,

‘ 利用內(nèi)設(shè)的數(shù)據(jù)庫連接信息

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

‘ 執(zhí)行任意數(shù)據(jù)庫語句,無返回結(jié)果。如需返回結(jié)果,請使用Query、QueryOne、QueryToCell等函數(shù)

‘ sql: 數(shù)據(jù)庫查詢語句

‘ sqlConnectString: 數(shù)據(jù)庫連接信息,或者直接指定數(shù)據(jù)庫,比如”Wind”、”JYDB”等,利用內(nèi)設(shè)的數(shù)據(jù)庫連接信息

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

‘ 這個函數(shù)用來上傳一個Excel區(qū)域到數(shù)據(jù)庫,數(shù)據(jù)表必須事先建好,并且包括Excel區(qū)域的之一行

‘ Database.InsertRange(table, rng, sqlConnectString, isEmpty)

‘ table:Excel數(shù)據(jù)將上傳到這個表內(nèi)

‘ rng: 將被上傳的Excel區(qū)域

‘ sqlConnectString: 數(shù)據(jù)庫連接字符串

‘ isEmpty: 是否清空原有表格數(shù)據(jù)

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

‘ 首選根據(jù)isEmpty選項,刪除原表內(nèi)所有數(shù)據(jù)

For i = 1 To rng.Columns.Count

sqlHead = sqlHead & “,”

Next i

‘ 其次,依次拆入每行

‘ 目前每一行都需運行一個SQL語句,效率較低,如果數(shù)據(jù)量較大,可能會引起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

‘ 獲取存儲過程的參數(shù)定義

.Parameters.Refresh

‘ 如果存在輸出參數(shù),則刪除它,默認(rèn)之一個為輸出參數(shù)

On Error Resume Next

If returnPara Then .Parameters.Delete 0

‘ 設(shè)置輸入?yún)?shù)的值

If IsArray(para) Then

Dim i

For i = 0 To UBound(para)

.Parameters.Item(i).value = para(i)

Next i

End If

‘ 改變輸入?yún)?shù)大小

Dim tmpp

For Each tmpp In .Parameters

tmpp.Size = 255

Next tmpp

‘ 獲取參數(shù)返回值

Set dbQueryStoredProc = .Execute()

End With

errorhander:

DisplayError sql

End Function

Private Sub dbClose()

‘ 當(dāng)類被注銷時,斷開數(shù)據(jù)庫連接

On Error Resume Next

If cnn.State 0 Then cnn.Close

End Sub

‘ 連接數(shù)據(jù)庫

‘ 此處首先檢查cnn是否已經(jīng)連接到想要連接的數(shù)據(jù)庫,如果已經(jīng)連接,將不產(chǎn)生任何操作

‘ 本Database對象在對象存續(xù)過程中,不會主動斷開;

‘ 只有在對象注銷之時,才斷開數(shù)據(jù)庫,如需斷開數(shù)據(jù)庫連接,請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

‘ 顯示查詢數(shù)據(jù)庫過程中出現(xiàn)的錯誤信息,信息被顯示在立即窗口。

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的數(shù)據(jù)庫類,將其改成函數(shù)的形式,調(diào)用更簡單(省卻了生成類實例的步驟)。無需任何配置。在VBA中新建模塊,并把代碼復(fù)制轉(zhuǎn)帖亮纖過去即可使用。

有以下函數(shù):執(zhí)行數(shù)據(jù)庫語句、查詢數(shù)據(jù)庫、結(jié)果復(fù)制到單元格(Excel中最常用)、將Excel表格上傳到數(shù)據(jù)庫。基本覆蓋Excel中對數(shù)據(jù)庫的常用操作。

會在立即窗口顯示數(shù)據(jù)庫錯誤信息,方便查錯。

在數(shù)據(jù)庫連接字符串字典中配好數(shù)據(jù)庫連接信息后,數(shù)據(jù)庫訪問時可直接使用配好余卜的鏈接字符串。

具體的函數(shù)用法已經(jīng)寫在下面代碼注釋里。簡單描述一下:

dqQueryToArray(sql, connection_string) 查詢數(shù)據(jù)庫,返回一個二維數(shù)組

dbQueryOne(sql, connection_string) 查詢數(shù)據(jù)庫,返回單個變量。

dbQueryToCell(sql, range, connection_string, withHeader) 查詢數(shù)據(jù)庫后,將結(jié)果顯示在range開始的區(qū)域中敬毀仿;withHeader控制是否顯示列名。

dbExec(sql, necction_string) 執(zhí)行數(shù)據(jù)庫語句;無返回值

dbInsertRange(table, range, connection_string, is_empty) 將本Excel文件的range區(qū)域里的數(shù)據(jù)插入到數(shù)據(jù)庫的表table。其中is_empty控制在上傳數(shù)據(jù)前是否清空table的原數(shù)據(jù)。

更新一下之前寫的Excel的數(shù)據(jù)庫類,將其改成函數(shù)的形式,調(diào)用更簡單(省卻了生成類實例的步驟)?,F(xiàn)在這個代碼在工作中用了一尺廳年多,已經(jīng)比較健壯。

無需任何配置。在VBA中新建模塊,并把代碼復(fù)制轉(zhuǎn)帖過去即可使用。

有以下函數(shù):執(zhí)行數(shù)據(jù)庫語句、查詢數(shù)據(jù)庫、結(jié)果復(fù)制到單元格(Excel中最常用)、將Excel表格上傳到數(shù)據(jù)庫?;靖采wExcel中對數(shù)據(jù)庫的常用操作。

會在立即窗口顯示數(shù)據(jù)庫錯誤信息和遲,方便查錯。

EXCEL數(shù)據(jù)查詢問題?

您可以使用以下VBA函數(shù)來實現(xiàn)在B2單元格輸入單日日期,或者一個日期范圍,sheet1的數(shù)據(jù)亮嘩跟著變化的功能:

vbnet

Sub UpdateData()

Dim ws As Worksheet

Dim lastRow As Long

Dim lastCol As Long

Dim i As Long

‘獲取當(dāng)前工作表

Set ws = ThisWorkbook.Worksheets(“Sheet1”)

‘獲取最后一行和最后一列

lastRow = ws.Cells(Rows.Count, “A”).End(xlUp).Row

lastCol = ws.Cells(Rows.Count, “A”).End(xlUp).Column

‘輸入單日日期

ws.Cells(1, 1).Value = “”

‘輸入日期范圍

ws.Cells(1, 2).Value = “”

ws.Cells(1, 3).Value = “”

ws.Cells(1, 4).Value = “”

‘更新數(shù)據(jù)

ws.Range(“B2”).Value = “”

‘循環(huán)遍歷罩慎所有行和列

For i = 2 To lastRow

If ws.Cells(i, 1).Value “” Then

ws.Cells(i, 1).Offset(0, 1).Value = ws.Cells(i, 1).Value

End If

Next i

End Sub

這個函數(shù)首先獲取當(dāng)前工作表,然后獲取最后一行和最后一列。接下來,它輸入單日日期,并指定日期范圍。最后,它更新B2單元格的值,并循環(huán)遍歷所有行和列,以便將日期物鍵敬范圍應(yīng)用到所有行和列。

要想動態(tài)刷新查詢范圍日期的話,升斗用VBA是可行的,如果你不想用VBA(就是你說的宏),那么就可用數(shù)據(jù)菜單下的“自吵腔磨其它來源”建立一個與數(shù)據(jù)庫工作薄的連接,這種需要懂一點SQL數(shù)據(jù)庫查詢語句。如果上面兩圓睜種都不適用的話,那么還有第三種,純函數(shù)公式法,只用函數(shù)公式查詢的話,需要保證你那個數(shù)據(jù)庫工作薄是打開狀態(tài)才可以鏈接到數(shù)據(jù)的。

你提問時說有什么函數(shù)可以解決,就是想問純公式法吧?這個不難的,就像同一個工作薄中查詢不同工作表的數(shù)據(jù)一樣。你在你的E列的公式上直接輸入查詢數(shù)據(jù)庫工作薄的公式就可以了。具體公式要知道數(shù)據(jù)庫工作薄的格式和內(nèi)容才能列出來。

下面這句例子是在E1引用數(shù)據(jù)庫工作薄A1的內(nèi)容。以這句為參考,相信你自己能寫出來對應(yīng)的查詢公式的:

(假設(shè)在同一個目錄下,而且文件名為數(shù)據(jù)庫,引用的是Sheet1這個工作表的A1)

E1公式:=’Sheet1′!G35關(guān)于excel查詢表格數(shù)據(jù)庫數(shù)據(jù)庫數(shù)據(jù)庫的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

創(chuàng)新互聯(lián)-老牌IDC、云計算及IT信息化服務(wù)領(lǐng)域的服務(wù)供應(yīng)商,業(yè)務(wù)涵蓋IDC(互聯(lián)網(wǎng)數(shù)據(jù)中心)服務(wù)、云計算服務(wù)、IT信息化、AI算力租賃平臺(智算云),軟件開發(fā),網(wǎng)站建設(shè),咨詢熱線:028-86922220


文章標(biāo)題:利用Excel輕松查詢數(shù)據(jù)庫表格(excel查詢表格數(shù)據(jù)庫數(shù)據(jù)庫數(shù)據(jù)庫)
當(dāng)前鏈接:http://www.5511xx.com/article/djedpii.html