我已经在这个数据库上工作了一段时间,但一直被数据库的几个问题所困扰,这就是其中之一。
此代码将表格传输到 Excel 中,将每 1,000,000 条记录放在单独的工作表中。我尝试传输的当前表有将近 150 万条记录和 7 个字段。
在遇到 Alter Table SQL 之前,编码工作正常。在这一点上它吐出这个错误。我已经将 dbMaxLocksPerFile 增加到 2000 万,但这没有帮助,我很困惑。
我能得到的任何帮助都会很棒 :)
仅供引用这是我做过的第一批 VBA 编程,并且是自学的(谷歌教授),所以我的设置可能有点困惑。代码如下:
Private Sub EXPORT_TO_EXCEL_Click()
DoCmd.SetWarnings False
DAO.DBEngine.SetOption dbMaxLocksPerFile, 20000000 'That's 20 million!!!
'DTable is the file name, and is input by the user in earlier coding under a public string
Call CreateNewFolder("O:\Folder Location\" & DTable & "")
Dim strWorksheetPathTable As String
'----Set File Path
strWorksheetPathTable = "O:\Folder Location"
strWorksheetPathTable = strWorksheetPathTable & "" & DTable & "\" & DTable & ".xlsb"
'----SPLIT DATA TABLE IN ACCESS THEN EXPORT THESE SMALLER TABLES (Splits if over 1,000,000 records)
Dim rs As New ADODB.Recordset
Dim cn As New ADODB.Connection
Set cn = CurrentProject.Connection
Dim rowcount As Long
Dim tblcount As Integer
Dim i As Integer
Dim tblx As String
Dim dbsDatas As DAO.Database
Set dbsDatas = CurrentDb
SQL = "SELECT * INTO tmpdata FROM [" & DTable & "]"
DoCmd.RunSQL SQL
SQL = "ALTER TABLE tmpdata ADD COLUMN id COUNTER"
DoCmd.RunSQL SQL
SQL = "SELECT count(*) as rowcount from [" & DTable & "]"
rs.Open SQL, cn
rowcount = rs!rowcount
rs.Close
tblcount = rowcount / 1000000 + 1
For i = 1 To tblcount
SQL = "SELECT * into tmpdata" & i & " FROM tmpdata" & _
" WHERE id<=1000000*" & i
DoCmd.RunSQL SQL
SQL = "DELETE * FROM tmpdata" & _
" WHERE id<=1000000*" & i
DoCmd.RunSQL SQL
DoCmd.TransferSpreadsheet transfertype:=acExport, _
spreadsheettype:=acSpreadsheetTypeExcel12, _
TableName:="tmpdata" & i & "", FileName:=strWorksheetPathTable, _
hasfieldnames:=True, _
Range:="Data" & i & ""
DoCmd.DeleteObject acTable, "tmpdata" & i & ""
Next i
DoCmd.DeleteObject acTable, "tmpdata"
DoCmd.SetWarnings True
MsgBox ("Report saved at the following location: " & strWorksheetPathTable & "")
End Sub
最佳答案
我希望你得到答案,但你也可以尝试以下步骤
- 打开空 Access 应用程序。
- 选择文件 >> 打开 >> 浏览并选择数据库文件。
- 单击浏览窗口中“打开”按钮的下拉菜单。
- 选择“打开独占”选项。
数据库文件将以解锁状态打开。现在执行脚本,它应该可以正常工作。
关于mysql - 运行时错误 '3052'。超出文件共享锁定计数。增加 MaxLocksPerFile 注册表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26542653/