vba 访问服务器文件,performance

感谢您的优化技巧,但是正如我所说,仅当我将数据库文件放在服务器上时,问题才会发生。 优化并没有太多帮助。 但是我想到了其他想法。

搜索空的空白“”将返回约40k条记录(这些记录涵盖了我需要的所有内容)。 因此,我将所有这些记录放在workbook_activate事件的不同工作表上,然后仅在该工作表中进行查询。

Sub Database_upload()

Application.DisplayAlerts = False

On Error Resume Next

Sheets("DATA_BASE").Delete

On Error GoTo 0

Application.DisplayAlerts = False

Sheets.Add

ActiveSheet.name = "DATA_BASE"

Sheets("DATA_BASE").Visible = False: Sheets("DARBALAUKIS").activate

Dim cnt As New ADODB.connection

Dim rcArray As Variant

Dim sSQL As String

Dim db_path As String, db_conn As String

Dim item As String

Dim qQt As QueryTable

item = "" 'search for empty blanks

sSQL = "Select Data, NomNr, Preke, Matas, Kaina, Tiek from VazPirkPrekes " & _

"Where VazPirkPrekes.PirkVazID IN (SELECT VazPirkimo.PirkVazID FROM VazPirkimo Where VazPirkimo.Sandelys like '%ALIAVOS')" & _

" and Year(VazPirkPrekes.Data)>=2011 and Preke Like '%" + item + "%' and Kaina > 0" & _

" Order by Preke, Data Desc"

db_path = Sheets("TMP").Range("B6").value

db_conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & db_path & ";"

db_conn = "ODBC;DSN=MS Access 97 Database;"

db_conn = db_conn & "DBQ=" & db_path

Set qQt = Sheets("Sheet1").QueryTables.Add(connection:=db_conn, Destination:=Sheets("Sheet1").Range("A1"), Sql:=sSQL)

qQt.Refresh BackgroundQuery:=False

End Sub

结果:

程序在启动时需要更长的时间,但是搜索时间是可以接受的-对我来说,问题已解决了:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值