日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

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

新聞中心

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

隨著科技的發(fā)展和生產(chǎn)方式的不斷升級,數(shù)據(jù)庫管理已經(jīng)成為了現(xiàn)代化企業(yè)的重要組成部分。在管理數(shù)據(jù)庫過程中,需要從中快速查詢出需要的數(shù)據(jù),以實(shí)現(xiàn)對數(shù)據(jù)的快速分析和處理。對于數(shù)據(jù)庫初學(xué)者來說,常常會覺得查詢數(shù)據(jù)庫是一件困難而耗時(shí)的任務(wù)。但是,在Excel中利用查詢表格進(jìn)行數(shù)據(jù)庫操作,卻可以簡便快捷地完成對數(shù)據(jù)的查詢和分析。本文將介紹Excel利用查詢表格進(jìn)行數(shù)據(jù)庫操作的方法。

創(chuàng)新互聯(lián)公司是一家專注于做網(wǎng)站、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),瀍河網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:瀍河等地區(qū)。瀍河做網(wǎng)站價(jià)格咨詢:028-86922220

一、什么是查詢表格

查詢表格(PivotTable)是Excel中一種可自定義的數(shù)據(jù)表格,可以根據(jù)某些條件查找數(shù)據(jù)并摘要。查詢表格提供了多種計(jì)算方式,如總數(shù)、平均值、更大值等,以從大量數(shù)據(jù)中提取信息和發(fā)現(xiàn)規(guī)律。

二、查詢表格的應(yīng)用場景

1、數(shù)據(jù)匯總:利用查詢表格可以從多個(gè)數(shù)據(jù)源中收集數(shù)據(jù)來查找總和、平均值、數(shù)量等信息。

2、數(shù)據(jù)報(bào)表:通過查詢表格,可以很方便地生成報(bào)表,例如銷售報(bào)表、財(cái)務(wù)報(bào)表等。

3、數(shù)據(jù)分析:查詢表格可以幫助我們從更細(xì)致的層面上分析數(shù)據(jù)。通過對數(shù)據(jù)進(jìn)行篩選、排序、分類等處理,可以輕松地發(fā)現(xiàn)數(shù)據(jù)中的規(guī)律和趨勢。

三、查詢表格的使用方法

1、準(zhǔn)備數(shù)據(jù):先將數(shù)據(jù)庫中需要查詢的數(shù)據(jù)導(dǎo)出到Excel中。

2、創(chuàng)建查詢表格:在Excel中點(diǎn)擊“插入”選項(xiàng)卡上的“查詢表格”按鈕,然后選擇需要查詢的數(shù)據(jù)區(qū)域。

3、設(shè)置字段:將需要查詢的數(shù)據(jù)字段拖到查詢表格的“行”、“列”和“值”欄中。查詢表格可依據(jù)字段進(jìn)行分組、歸類和匯總操作。

4、設(shè)置篩選:查詢表格中還可以添加“篩選”功能,以幫助我們更精準(zhǔn)地查詢數(shù)據(jù)。

5、調(diào)整樣式:查詢表格支持格式化操作,可以通過調(diào)整字體、顏色、邊框等方式來美化表格。

四、查詢表格應(yīng)用實(shí)例

假設(shè)有一個(gè)銷售數(shù)據(jù)的數(shù)據(jù)庫,其中包含日期、商品名稱、銷售額等字段信息?,F(xiàn)在需要查詢2023年1月至4月各月份的銷售額及總銷售額,可以采用以下步驟:

1、準(zhǔn)備數(shù)據(jù):將數(shù)據(jù)庫中的銷售數(shù)據(jù)導(dǎo)出到Excel中。

2、創(chuàng)建查詢表格:在Excel中點(diǎn)擊“插入”選項(xiàng)卡上的“查詢表格”按鈕,然后選擇需要查詢的數(shù)據(jù)區(qū)域。

3、設(shè)置字段:將“日期”、“銷售額”字段分別拖入查詢表格的“行”和“值”欄中。在“日期”字段中選中需要查詢的月份(1月-4月),并將查詢表格的計(jì)算方式設(shè)置為“總和”。

4、設(shè)置篩選:對“日期”字段添加“篩選器”功能,以方便地篩選出需要的資源。

5、調(diào)整樣式:對查詢表格進(jìn)行格式化調(diào)整,例如修改字體、背景色等。

五、

在企業(yè)的數(shù)據(jù)分析和處理中,查詢表格是一種簡便快捷的數(shù)據(jù)查詢和摘要工具。通過學(xué)習(xí)查詢表格的基本使用方法,可以方便地對大量的數(shù)據(jù)進(jìn)行篩選、排序和分析。同時(shí),查詢表格也能幫助我們快速生成報(bào)表、匯總數(shù)據(jù),提高日常工作效率。因此,了解查詢表格,并學(xué)會熟練使用它,對我們的工作和學(xué)習(xí)都具有很大的幫助。

相關(guān)問題拓展閱讀:

  • excel兩個(gè)表格,數(shù)據(jù)庫表與專門查詢該數(shù)據(jù)庫信息的表。在查詢表中以多個(gè)項(xiàng)目進(jìn)行查詢符合條件的數(shù)據(jù)。
  • 如何更新Excel的數(shù)據(jù)庫查詢函數(shù)庫

excel兩個(gè)表格,數(shù)據(jù)庫表與專門查詢該數(shù)據(jù)庫信息的表。在查詢表中以多個(gè)項(xiàng)目進(jìn)行查詢符合條件的數(shù)據(jù)。

你好,用下列函數(shù)可以實(shí)現(xiàn)Excel的查詢功能,可以在一張工作表查詢本工作表的數(shù)據(jù),也可以是另一張工作表的數(shù)據(jù),甚至可以是其他工作簿的數(shù)據(jù)(路徑改變之后就不行了)。

在需要顯示查詢值的單元格中輸入下列公式:

=if(iserror(vlookup(lookupvalue,findarea,column,0)),””,vlookup(lookupvalue,findarea,column,0))

解釋:

lookupvalue需要查詢的數(shù)據(jù)(目標(biāo)值),也就是你要輸入的姓名、性別等以用來查詢值的那個(gè)單元格地址。

findarea即查詢的數(shù)據(jù)來源區(qū)域,可是查詢目標(biāo)所在的整個(gè)工作表的地址。

column你需要查詢的目標(biāo)值所在的列,從finderea的列一列開始數(shù),之一列為對應(yīng)的column為1,第二列為2……

模糊查詢,即忽略是否排慧蔽彎序?qū)Σ樵兊挠绊懀ú灰蟛樵儏^(qū)域事先排列)并昌。

整個(gè)函數(shù)組合的解釋:

Vlookup函數(shù)一般是先輸入目前悶標(biāo)值再查詢,當(dāng)改變目標(biāo)值之后會出錯(cuò),即iserror,所以上面用的函數(shù)可以解釋為:如果所查尋的目標(biāo)值是錯(cuò)誤的(即查不到),那么形式為空,如果不出錯(cuò)(可查到,即目標(biāo)值存在),那么查詢并顯示該目標(biāo)值。

以下 進(jìn)銷存 為數(shù)據(jù)庫  查詢   根據(jù)實(shí)際情況自己修改

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(“進(jìn)銷存”)

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的數(shù)據(jù)庫查詢函數(shù)庫

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

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

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

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

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

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

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

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

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

?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é)果為一個(gè)二維數(shù)組

‘ res = dbQueryOne(sql, connection_string)

‘ ‘ 返回sql的查詢結(jié)果,但只返回之一個(gè)數(shù)據(jù)(相當(dāng)于數(shù)據(jù)庫查詢結(jié)果的左上角那個(gè)數(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ù)庫時(shí)可以直接調(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ù)庫,返回一個(gè)數(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ù)庫,返回單個(gè)數(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ù)庫,返回單個(gè)數(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

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

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

‘ table:Excel數(shù)據(jù)將上傳到這個(gè)表內(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選項(xiàng),刪除原表內(nèi)所有數(shù)據(jù)

For i = 1 To rng.Columns.Count

sqlHead = sqlHead & “,”

Next i

‘ 其次,依次拆入每行

‘ 目前每一行都需運(yùn)行一個(gè)SQL語句,效率較低,如果數(shù)據(jù)量較大,可能會引起Excel死機(jī)

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)之一個(gè)為輸出參數(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í),斷開數(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ù)過程中,不會主動(dòng)斷開;

‘ 只有在對象注銷之時(shí),才斷開數(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)的錯(cuò)誤信息,信息被顯示在立即窗口。

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)用更簡單(省卻了生成類實(shí)例的步驟)。現(xiàn)在這個(gè)代碼在工作中用了一年多,已經(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ù)庫錯(cuò)誤信息,方便查錯(cuò)。

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

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

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

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

  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é)果為一個(gè)二維數(shù)組

‘ res = dbQueryOne(sql, connection_string)

‘ ‘ 返回sql的查詢結(jié)果,但只返回之一個(gè)數(shù)據(jù)(相當(dāng)于數(shù)據(jù)庫查詢結(jié)果的左上角那個(gè)數(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ù)庫時(shí)可以直接調(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ù)庫,返回一個(gè)數(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ù)庫,返回單個(gè)數(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ù)庫,返回單個(gè)數(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

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

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

‘ table:Excel數(shù)據(jù)將上傳到這個(gè)表內(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選項(xiàng),刪除原表內(nèi)所有數(shù)據(jù)

For i = 1 To rng.Columns.Count

sqlHead = sqlHead & “,”

Next i

‘ 其次,依次拆入每行

‘ 目前每一行都需運(yùn)行一個(gè)SQL語句,效率較低,如果數(shù)據(jù)量較大,可能會引起Excel死機(jī)

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)之一個(gè)為輸出參數(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í),斷開數(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ù)過程中,不會主動(dòng)斷開;

‘ 只有在對象注銷之時(shí),才斷開數(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)的錯(cuò)誤信息,信息被顯示在立即窗口。

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

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

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

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

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

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

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

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)用更簡單(省卻了生成類實(shí)例的步驟)?,F(xiàn)在這個(gè)代碼在工作中用了一尺廳年多,已經(jīng)比較健壯。

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

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

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

excel查詢表格數(shù)據(jù)庫數(shù)據(jù)庫數(shù)據(jù)庫中的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于excel查詢表格數(shù)據(jù)庫數(shù)據(jù)庫數(shù)據(jù)庫中,Excel利用查詢表格簡易操作數(shù)據(jù)庫,excel兩個(gè)表格,數(shù)據(jù)庫表與專門查詢該數(shù)據(jù)庫信息的表。在查詢表中以多個(gè)項(xiàng)目進(jìn)行查詢符合條件的數(shù)據(jù)。,如何更新Excel的數(shù)據(jù)庫查詢函數(shù)庫的信息別忘了在本站進(jìn)行查找喔。

香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。


分享名稱:Excel利用查詢表格簡易操作數(shù)據(jù)庫(excel查詢表格數(shù)據(jù)庫數(shù)據(jù)庫數(shù)據(jù)庫中)
URL鏈接:http://www.dlmjj.cn/article/djdsegc.html