Select(從數(shù)據(jù)庫中檢索數(shù)據(jù))

字號(hào):

SQL語言中,最根本,最常用,但也最難全懂的——Select語句。在說明Select的語法時(shí),我一直想把它的語法還是像以前說明的那樣,寫成中文的形式,不過最后還是決定,先把原來的英文語法寫在這里吧:
    SELECT select_list
    [ INTO new_table ]
    FROM table_source
    [ WHERE search_condition ]
    [ GROUP BY group_by_expression ]
    [ HAVING search_condition ]
    [ ORDER BY order_expression [ ASC | DESC ] ]
    如果要改為之前我的那種說明方式,考試大提示: 可以理解為:
    Select 列名1,列名2,……
    [Into 新表格名]
    From 表格名
    [Where {條件}]
    [Group By 組合列名1,組合列名2,……]
    [Having {組合條件}]
    [Order By 排序列名1,排序列名2,…… [Asc|Desc]]
    其中[]是非必需要的,而今天我們第一步先來給出一個(gè)最最簡單的應(yīng)用例子,這個(gè)例子不包含所有的[]的項(xiàng)目,其功能是在Excel表格中,列出數(shù)據(jù)庫里明細(xì)表的所有內(nèi)容。其中要用到的CopyFromRecordset,大家可以參考一下VBA幫助或本站的文章:http://www.examda.com
    為了方便大家以后運(yùn)行代碼,在http://www.examda.com上傳了一個(gè)示例文件,其中包含三個(gè)文件,數(shù)據(jù)庫文件——進(jìn)銷存表.mdb與Excel文件——進(jìn)銷存表.xls就是保存數(shù)據(jù)的文件,而主文件.xls就是主程序文件,以后大家的代碼可以添加在這個(gè)文件的新模塊里,然后再運(yùn)行程序代碼。
    Sub 進(jìn)銷存表數(shù)據(jù)庫中讀取明細(xì)表的數(shù)據(jù)()
    Dim conn As ADODB.Connection
    Dim WN As String
    Dim TableName As String
    Dim sSql As String
    Dim xSh As Worksheet
    Dim sRan As Range
    Dim ColNum As Integer
    Dim ii As Integer
    WN = "進(jìn)銷存表.mdb"
    TableName = "明細(xì)表"
    '需要寫入的工作表名稱
    Set xSh = ThisWorkbook.Worksheets("明細(xì)表")
    '標(biāo)題開始單元格
    Set sRan = xSh.Range("A1")
    '標(biāo)題列數(shù)
    ColNum = 5
    Set conn = New ADODB.Connection
    conn.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;" & _
     "Data Source=" & ThisWorkbook.Path & "\" & WN
    conn.Open
    If conn.State = adStateOpen Then
    sSql = "Select "
    For ii = 1 To ColNum
     sSql = sSql & sRan.Offset(0, ii - 1).Value & ","
    Next
    sSql = Left(sSql, Len(sSql) - 1) & " From " & TableName
    sRan.Offset(1, 0).CopyFromRecordset conn.Execute(sSql)
    MsgBox "成功讀取“" & TableName & "”中的記錄!", , "http://examda.com"
    conn.Close
    End If
    Set conn = Nothing
    End Sub
    同樣,我們也給一段讀取進(jìn)銷存表.xls中明細(xì)表里數(shù)據(jù)的程序,代碼如下:
    Sub 進(jìn)銷存表文件中讀取明細(xì)表的數(shù)據(jù)()
    Dim conn As ADODB.Connection
    Dim WN As String
    Dim TableName As String
    Dim sSql As String
    Dim xSh As Worksheet
    Dim sRan As Range
    Dim ColNum As Integer
    Dim ii As Integer
    WN = "進(jìn)銷存表.xls"
    TableName = "明細(xì)表"
    '需要寫入的工作表名稱
    Set xSh = ThisWorkbook.Worksheets("明細(xì)表")
    '標(biāo)題開始單元格
    Set sRan = xSh.Range("A1")
    '標(biāo)題列數(shù)
    ColNum = 5
    Set conn = New ADODB.Connection
    conn.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;" &"Extended Properties=Excel 8.0;" &"Data Source=" & ThisWorkbook.Path & "\" & WN
    conn.Open
    If conn.State = adStateOpen Then
    sSql = "Select "
    For ii = 1 To ColNum
     sSql = sSql & sRan.Offset(0, ii - 1).Value & ","
    Next
    sSql = Left(sSql, Len(sSql) - 1) & " From [" & TableName & "$]"
    sRan.Offset(1, 0).CopyFromRecordset conn.Execute(sSql)
    MsgBox "成功讀取“" & TableName & "”中的記錄!", , "http://examda.com"
    conn.Close
    End If
    Set conn = Nothing
    End Sub
    通過兩個(gè)程序,我們已可以初步了解Select,接下來的幾篇文章,我們將一個(gè)個(gè)介紹[]中的每一個(gè)參數(shù),而現(xiàn)在你要做的,就是復(fù)制上面的程序,動(dòng)手學(xué)習(xí)一下吧*^_^*。SQL與Excel的世界已開始越來越精彩,一起繼續(xù)前進(jìn)吧