gpt4 book ai didi

sql - VBA - 从 Excel 工作表导入 SQL 以 Access 数据库 - 执行错误 3343

转载 作者:行者123 更新时间:2023-12-04 22:20:18 27 4
gpt4 key购买 nike

我想建一个SQL请求为了将我的所有工作表内容存储到 Access 数据库中,为此我构建了以下请求:

 sSQL = "INSERT INTO Archive_FP21 (Date_Histo,Caisse,Libelle,Reference_Contrat,Date_de_Nego,Date_Valeur,Echeance_Finale,Libelle_Index,Taux_Actuel,Capital_Origine,Capital_Restant_Du,Marge,Taux_du_cap,Taux_du_Floor,Derniere_Echance_INT,Derniere_Echeance_AMO,Interet,Prochaine_Echeance) " & _
"SELECT * FROM [Feuil1$A:R] IN """ & WbPath & """"
但我面临以下问题:

3343 unrecognized database formatenter image description here

[I feel like my issue is in FROM [Feuil1$A:R] IN """ & WbPath & """"]


以下是我的完整代码 Sub :
Sub archiver()

Dim ws As DAO.Workspace
Dim db As DAO.Database
Dim sDb As String
Dim sSQL As String
Dim qdf As QueryDef
Dim WbPath As String


WbPath = "C:\******\Extraction FP21 Mise en Forme Auto\16102020 - Copie.xlsx"

sDb = "C:\******\BaseFp21.accdb"
Set ws = DBEngine.Workspaces(0)
Set db = ws.OpenDatabase(sDb)

sSQL = "INSERT INTO Archive_FP21 (Date_Histo,Caisse,Libelle,Reference_Contrat,Date_de_Nego,Date_Valeur,Echeance_Finale,Libelle_Index,Taux_Actuel,Capital_Origine,Capital_Restant_Du,Marge,Taux_du_cap,Taux_du_Floor,Derniere_Echance_INT,Derniere_Echeance_AMO,Interet,Prochaine_Echeance) " & _
"SELECT * FROM [Feuil1$A:R] IN """ & WbPath & """"


db.Execute sSQL

End Sub
备注 此 SQL 请求的目标是将工作表“Feui1.Range(A:R)”中的所有数据添加到我的 Access 表中。
我不能逐行进行,因为我有 37K 行要填写 Access。
我错过了什么?为了使用 VBA 从 Access DB 中的 excel 填充 37K 行,您将如何做?

最佳答案

从带有 Access 连接的内联 Excel 工作簿中查询不使用 IN运算符,但带有设置参数的括号标识符,例如标题和工作簿类型。如使用,IN如果您正在查询外部 Access 数据库但作为 Excel 工作簿,则无法识别数据库格式。

sSQL = "INSERT INTO Archive_FP21 (Date_Histo, Caisse, Libelle, Reference_Contrat," _
& " Date_de_Nego, Date_Valeur, Echeance_Finale, " _
& " Libelle_Index, Taux_Actuel, Capital_Origine, " _
& " Capital_Restant_Du, Marge, Taux_du_cap, Taux_du_Floor, " _
& " Derniere_Echance_INT, Derniere_Echeance_AMO, Interet, " _
& " Prochaine_Echeance) " _
& " SELECT * FROM [Excel 12.0 Xml;HDR=Yes;Database=" & WbPath & "].[Feuil1$A:R]"

db.Execute sSQL
另外,一定要避免 SELECT * FROM 并显式选择命名列,尤其是在列到列映射的插入选择附加查询中。 SELECT Col1, Col2, Col3, ... FROM如果 Excel 列顺序应调整或某些列不再存在,则更具可读性和可维护性。

关于sql - VBA - 从 Excel 工作表导入 SQL 以 Access 数据库 - 执行错误 3343,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64390078/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com