如果前8行为空,则缺少ADODB中的数据

问题描述 投票:1回答:1

经过数天的测试,当我尝试使用VBA ADODB连接将数据从一个工作簿复制到另一个工作簿时,

如果可能,我没有找到正确的方法。

我的数据库wb来自SAP的一次提取,因此使用一个excel程序打开此文件,然后使用ADODB选择一些列,并使用copyfromrecordset将结果放在程序的一页上。

现在,我发现如果前八个记录为空,则查询不会提取记录。有可能!??!

我在很多列上都进行了测试,结果完全相同。

请看这些图片,它们会比我的英语讲得更好(对不起)

您可以看到第4列和第5列记录First Test

I add data on cells(8,4) and on cells(9,5)
all the record off column 4 now was extract

Second Test

In the third test I ad also value on cells(7,5)
and now in each columns I've the correct records

third Test

这是测试中使用的查询:

Sub testQryResult()
Dim fNameAndPath As Variant
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strsql As String
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H1
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

Set WsTo = ActiveWorkbook ' program sheet
    fNameAndPath = Application.GetOpenFilename(fileFilter:="Excel Files (*.XLSX), *.XLSX", Title:="Seleziona il file da importare")
    If fNameAndPath = False Then Exit Sub
    Workbooks.Open Filename:=fNameAndPath   'xls sheet with db from SAP

    Set WsFrom = ActiveWorkbook
    WsFrom.Activate

    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & WsFrom.FullName & ";Extended Properties=""Excel 8.0;HDR=Yes;"";"
    strsql = "SELECT [(06)-Data creazione],[(07)-Inizio carico att],[(07)-Fine carico att], [(07)-Inizio trasp att], [(07)-Data FINE Sdoganamento],[(01-A)-Data di reg] from [Sheet1$];"
    rs.Open strsql, cn, adOpenStatic, adLockReadOnly, adCmdText

    rs.MoveFirst
    dbSh.Range("A2").CopyFromRecordset rs
    Else
    rs.MoveFirst
    WsTo.Sheets("ce").Range("O3").CopyFromRecordset rs

    Set rs = Nothing
    Set cn = Nothing

End Sub
excel vba adodb recordset
1个回答
0
投票

即使我没有找到提取失败的原因,我也没有放弃,我继续进行测试。

[当一个人问如何从包含日期和数字的一列中从qry中获取数据时,我发现了一个老问题,发布了一个解决方案,在连接字符串上添加IMEX = 1。

我尝试过,但是我立即收到错误,所以我尝试使用Microsoft.ACE而不是Microsoft.Jet使用其他连接字符串

cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & WsFrom.FullName & "; Extended Properties=""Excel 8.0;HDR=Yes;"";" 

魔术地正确地提取了所有数据,肯定不是魔术,并且我会找到技术原因。

此刻,我在这里发布我的解决方案,希望给那些会遇到相同问题的人以时间折扣。

...获得一切值得拥有的三个基本要素是;首先,努力工作,第二,坚持不懈,第三,常识...

© www.soinside.com 2019 - 2024. All rights reserved.