如何在通过 255 字段限制的访问中组合表?
Posted
技术标签:
【中文标题】如何在通过 255 字段限制的访问中组合表?【英文标题】:How do you combining tables in access where field limit of 255 is passed? 【发布时间】:2016-01-03 18:11:52 【问题描述】:当合并的结果大于 255 字段限制时,是否有在 access 中合并表格并将它们输出到 excel 中
【问题讨论】:
您可以使用 VBA 将数据写入 CSV 文件,然后在 Excel 中打开该文件。 【参考方案1】:考虑将低于 255 列限制的查询拆分为多个查询(结构相同)。然后,将查询作为 VBA 记录集打开,以在特定范围内复制到 Excel 工作簿中以进行连续输出,特别是使用 CopyFromRecordset 方法。
下面是一个通用的 Access VBA 解决方案,假设有两个查询,每个查询有 200 列。根据需要调整细节。您可以在 OpenRecordset()
中使用 SQL 语句来代替命名对象。
Dim xlApp As Object, xlWkb As object
Dim db As Database, rst1 As Recordset, rst2 As Recordset
Dim fld1 As Field, fld2 As Field
Dim i As Integer
Const xlOpenXMLWorkbook = 51
Set db = CurrentDb
Set rst1 = db.OpenRecordset("query1", dbOpenDynaset) ' FIRST 200 COLUMNS
Set rst2 = db.OpenRecordset("query2", dbOpenDynaset) ' NEXT 200 COLUMNS
Set xlApp = CreateObject("Excel.Application")
Set xlWkb = xlApp.Workbooks
' COLUMNS
i = 1
For Each fld1 in rst1.Fields
xlWkb.Sheets(1).Cells(1, i) = fld1.Name
i = i + 1
Next fld1
' DATA ROWS
xlWkb.Sheets(1).Cells(2, 1).CopyFromRecordset rst1
' COLUMNS
i = 0
For Each fld2 in rst2.Fields
xlWkb.Sheets(1).Cells(1, 201 + i) = fld2.Name
i = i + 1
Next fld2
' DATA ROWS
xlWkb.Sheets(1).Cells(2, 201).CopyFromRecordset rst2
xlWkb.SaveAs "C:\Path\To\Workbook\AccessData.xlsx", xlOpenXMLWorkbook
xlApp.Visible = True
rst1.Close: rst2.Close
Set rst1 = Nothing
Set rst2 = Nothing
Set db = Nothing
Set xlWkb = Nothing
Set xlApp = Nothing
【讨论】:
以上是关于如何在通过 255 字段限制的访问中组合表?的主要内容,如果未能解决你的问题,请参考以下文章
Microsoft Access ODBC 连接字符串限制为 255 个字符?
navicat用excel导入数据,由于字段数超过255个,导入时navicat读不到excel中255个以后的字段,如何解决