2016-09-26 36 views
0

我有一個非常大的MS Access中的表超過Excel可以容納的行數。由於許可問題,我們無法將訪問權限用作外部數據源,但是,我們可以使用Excel來存儲表格,直到我們可以使用即將在幾個月內發佈的SQL Server。打破一個大的表成爲較小的出口

我一直負責將表分成國家。

獲取所有不同國家的查詢是沒有問題的。

Select distinct Country_Code 
from AllCountries 

但後來我需要得到每個國家的結果集。

我來過幾個網站試圖找出來之前來到這裏。 我知道這是一個基本的問題,不幸的是,中風和10年遠離田野已經讓我生疏了。

我需要創建這些較小的表0和結果集並導出它們。我迷失在這一個。

+0

用戶在接下來的幾個月內需要什麼樣的訪問(沒有雙關語)?不能使用現在稱爲Access 2016運行時的Access數據庫引擎(https://www.microsoft.com/zh-cn/download/details.aspx?id=50040),該引擎可以自由重新分配,然後從Excel中進行查詢如所須?我絕對不想推薦將其分開,並將其放在用戶容易操作的格式中。什麼是真正的目標,什麼樣的使用等等? MySQL或PostgresSQL是否可以暫時獲得他們免費許可的時間... – Matt

回答

1

這樣的事情?

PUBLIC FUNCTION exportFiles() AS Boolean 
    Dim db AS DAO.DATABASE 
    Dim qdf AS DAO.QueryDef 
    Dim rsRptGroup AS DAO.Recordset 
    Dim sSQL AS String 
    Dim sRptGroup AS String 
    Dim sPath AS String 

    Const sQryExport AS String = "qryExport" 

    sPath = Application.CurrentProject.PATH 

    SET db = CurrentDb 
    SET qdf = db.CreateQueryDef(sQryExport, sSQL) 
    qdf.NAME = sQryExport 

    ' Get list of labeler values 
    sSQL = "SELECT DISTINCT labeler FROM qry_export" 
    Set rsRptGroup = db.OpenRecordset(sSQL, dbOpenDynaset, dbReadOnly) 

    ' Now LOOP THROUGH list OF labeler VALUES AND CREATE a QUERY FOR EACH labeler 
    ' so that the data can be exported 
    Do While Not rsRptGroup.EOF 
     sRptGroup = rsRptGroup("labeler") 
     sSQL = "SELECT * FROM qry_export WHERE labeler = '" & sRptGroup & "'" 
     qdf.sql = sSQL 

     DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, sQryExport, sPath & "\xls\" & sRptGroup & ".xls" 

     rsRptGroup.MoveNext 
    Loop 

    rsRptGroup.Close 
    Set rsRptGroup = Nothing  
    db.Close 
    Set db = Nothing  
    exportFiles = True 
End Function 
+0

它像一個魅力一樣工作,謝謝! –

1

重新考慮你的設置爲你的說法是不完全正確的:

由於授權問題,我們不能使用訪問作爲外部數據 源

的MS Access的.mdb /無論需要授權的MSAccess.exe程序如何,.accdb文件都可以被任何PC機器使用。 MS Access的基礎技術是JET/ACE SQL引擎,它是一組WindowsWindows®.dll文件,通常預裝在PC機上。 Access只是默認使用此引擎的GUI。

因此,請繼續使用實際的關係數據庫(.mdb/.accdb)文件,而不要將Excel工作表用於數據存儲和完整性。在沒有Access的機器上,文件將顯示空白圖標,無法用任何一個程序直接打開,但可以通過ODBC/OLEDB連接或COM對象與Excel或其他語言(PHP,R,Python,Java)連接--ADO或DAO。實際上,Windows計算機可以創建.mdb/.accdb文件,而不需要完整的Access程序。下面是Excel宏用於說明:

CREATE DATABASE(與DAO)

Sub CreateDatabase() 
On Error GoTo ErrHandle 
    Dim fso As Object 
    Dim olDb As Object, db As Object 
    Dim strpath As String 
    Const dbLangGeneral = ";LANGID=0x0409;CP=1252;COUNTRY=0" 

    strpath = "C:\Path\To\Access\Database.accdb" 

    ' CREATE DATABASE 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set olDb = CreateObject("DAO.DBEngine.120") 

    If Not fso.FileExists(strpath) Then 
     Set db = olDb.CreateDatabase(strpath, dbLangGeneral) 
    End If 

    Set db = Nothing 
    Set olDb = Nothing 
    Set fso = Nothing 

    MsgBox "Successfully created database!", vbInformation 
    Exit Sub 

ErrHandle: 
    MsgBox Err.Number & " - " & Err.Description 
    Exit Sub 
End Sub 

創建表(與ADO)

Sub CreateTables() 
On Error GoTo ErrHandle 
    Dim strpath As String, constr As String 
    Dim objAccess As Object 
    Dim conn As Object 

    strpath = "C:\Path\To\Access\Database.accdb" 

    ' CONNECT TO DATABASE 
    constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strpath & ";" 
    Set conn = CreateObject("ADODB.Connection") 
    conn.Open constr 

    ' CREATE TABLES 
    conn.Execute "CREATE TABLE Clients (" _ 
        & " ClientID AUTOINCREMENT," _ 
        & " ClientName TEXT(255)," _ 
        & " Address TEXT(255)," _ 
        & " Notes TEXT(255)," _ 
        & " DateCreated DATETIME" _ 
        & ");" 

    conn.Execute "CREATE TABLE Orders (" _ 
        & " OrderID AUTOINCREMENT," _ 
        & " ClientID INTEGER," _ 
        & " Item TEXT(255)," _ 
        & " Price DOUBLE," _ 
        & " OrderDate DATETIME," _ 
        & " Notes TEXT(255)" _ 
        & ");" 

    ' CLOSE CONNECTION 
    conn.Close 
    Set conn = Nothing 

    MsgBox "Successfully created Clients and Orders tables!", vbInformation 
    Exit Sub 

ErrHandle: 
    MsgBox Err.Number & " - " & Err.Description 
    Exit Sub 

End Sub 

此外,如果您需要MS Acc的GUI應用程序只有一個人(開發人員)需要擁有完整的MS Access來對數據庫進行設計更改。同時,所有其他(用戶)可以使用可通過Microsoft.com下載的免費運行時版本:2007/2010/2013/2016。只需確保數據庫運行時不需要導航窗格(即主菜單導航)。

相關問題