簡體   English   中英

使用 DoCmd.TransferSpreadsheet 時如何避免 accdb 行大小限制?

[英]How to avoid accdb row size limitation when using DoCmd.TransferSpreadsheet?

我正在使用 DoCmd.TransferSpreadsheet 將數據從 Excel 導入到 Access。 一切正常,除了一些 Excel 行被截斷,因為 Access 單行(不是字段)有太多字節。

我注意到 Access 中的每個字段都是作為文本(255)創建的,而我的 Excel 行都不超過 100 個字符。

我認為,如果我設法導入創建默認長度為 100 個字符的字段的 Excel 文件,我將不再獲得截斷的數據。

有沒有辦法將 Access 字段的默認文本長度設置為特定數字?


更新

運行DoCmd.TransferSpreadsheet時,似乎忽略了減小 Access 2010 選項中的默認字段文本大小

若要設置 Access (2007) 的默認文本長度,請單擊 Office 按鈕 >“Access 選項按鈕”>“對象設計器”(在左側窗格中),然后在“表格設計”下的“默認文本字段大小”框中輸入 50並單擊確定。

我編寫了自己的導入函數,它可以工作:

' Import from an Excel with a default field length different from 255 (must be < 255)
Function importFromExcel(fileName As String, fieldLength as integer)
    Dim my_xl_app As Object
    Dim my_xl_worksheet As Object
    Dim my_xl_workbook As Object
    Set my_xl_app = CreateObject("Excel.Application")
    Set my_xl_workbook = my_xl_app.Workbooks.Open(fileName)
    Set s = my_xl_workbook.Worksheets(1)

    Dim fieldsNumber As Integer
    Dim recordNumber As Long
    fieldsNumber = s.cells(1, s.Columns.Count).End(1).Column
    recordNumber = s.cells(s.Rows.Count, 1).End(3).Row
    tablename = "[" & Replace(GetFilenameFromPath(fileName), ".", "_") & "]"
    On Error Resume Next
    DoCmd.RunSQL "DROP TABLE " & tablename
    On Error GoTo 0

    ' Creo tabella
    sql = "CREATE TABLE " & tablename & " (F1 TEXT(" & fieldLength & ")) "
    DoCmd.RunSQL sql

    For i = 2 To fieldsNumber
        sql = "ALTER TABLE " & tablename & " ADD COLUMN F" & i & " TEXT(" & fieldLength & ")"
        DoCmd.RunSQL sql
    Next



    ' Ora insert
    For i = 1 To recordNumber
        sql = "INSERT INTO " & tablename & " VALUES ("
        For j = 1 To fieldsNumber
            sql = sql & " '" & Replace(s.cells(i, j), "'", "''") & "',"
        Next
        sql = Mid(sql, 1, Len(sql) - 1)
        sql = sql & ")"

    Next

    my_xl_workbook.Close SaveChanges:=False
    Set my_xl_app = Nothing
End Function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM