【问题标题】:VBA Excel ADODB counting FieldsVBA Excel ADODB 计数字段
【发布时间】:2013-12-30 22:36:45
【问题描述】:

我对整个 ADODB 的东西都很陌生。我写了一个代码,试图计算这个特定数据库使用的列。但不知何故,我得到了以下错误:

运行时错误“-2147217900 (80040e14)”:语法错误

我尝试了几种方法来阅读这些专栏,但我无法完成。有人可以告诉我如何解决这个问题吗?在此先感谢:)

 Public Function GetParameterDbfTotalColumn() As Long

Dim sConnectionString As String
Dim mdbConn As ADODB.Connection
Dim mrst As ADODB.Recordset
Dim pPath As String
Dim sTable As String

GetParameterDbfTotalColumn = -1

pPath = "C:\ProgramData\Citect\CitectSCADA 7.20\User\Huisman V4\parameters.dbf"

Set mdbConn = New ADODB.Connection
    sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & pPath & ";Extended Properties=""DBASE IV;"";"
    sConnectionString = "Driver={Microsoft dBase Driver (*.dbf)};DefaultDir=" & pPath & ";Extended Properties=""DBASE IV;"";DriverId=533;CollatingSequence=ASCII;Deleted=0;FIL=dBase 5.0;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Statistics=0;Threads=3;UserCommitSync=Yes;"
    sConnectionString = "Provider=VfpOleDB.1;Data Source=" & pPath & ";Collating Sequence=MACHINE;Exclusive=ON"
    mdbConn.Open sConnectionString

    Set mrst = New ADODB.Recordset
    mrst.Open sTable, mdbConn, adOpenDynamic, adLockPessimistic, adCmdTable

    GetParameterDbfTotalColumn = mrst.Fields.Count

GetParameterDbfTotalColumn = 0

    Exit Function

End Function

【问题讨论】:

  • 在我看来你的连接字符串有问题。检查HERE
  • 顺便说一句,对于.Open 方法,您只传递sConnectionString 的最后一个值。可能您错过了应该以这种方式完成的其他部分的连接:sConnectionString = sConnectionString & "Provider......"
  • 啊,好的,谢谢,我会玩一会儿:)

标签: excel vba count adodb


【解决方案1】:

这个

sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & pPath & ";Extended Properties=""DBASE IV;"";"
sConnectionString = "Driver={Microsoft dBase Driver (*.dbf)};DefaultDir=" & pPath & ";Extended Properties=""DBASE IV;"";DriverId=533;CollatingSequence=ASCII;Deleted=0;FIL=dBase 5.0;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Statistics=0;Threads=3;UserCommitSync=Yes;"
sConnectionString = "Provider=VfpOleDB.1;Data Source=" & pPath & ";Collating Sequence=MACHINE;Exclusive=ON"

最后只有第三行所以你的 sConnection 字符串实际上只有

"Provider=VfpOleDB.1;Data Source=" & pPath & ";Collating Sequence=MACHINE;Exclusive=ON"

您必须不断向连接字符串添加位(连接),即

sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & pPath & ";Extended Properties=""DBASE IV;"";"
sConnectionString = sConnectionString & "Driver={Microsoft dBase Driver (*.dbf)};DefaultDir=" & pPath & ";Extended Properties=""DBASE IV;"";DriverId=533;CollatingSequence=ASCII;Deleted=0;FIL=dBase 5.0;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Statistics=0;Threads=3;UserCommitSync=Yes;"
sConnectionString = sConnectionString & "Provider=VfpOleDB.1;Data Source=" & pPath & ";Collating Sequence=MACHINE;Exclusive=ON"

【讨论】:

  • 有效!感谢您的帮助:)!我的问题只出在 ConnectionString 上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-05
  • 2014-10-03
  • 1970-01-01
  • 1970-01-01
  • 2021-01-11
  • 1970-01-01
  • 2021-06-06
相关资源
最近更新 更多