2013-12-12 5 views
1

im довольно новый для всего материала ADODB. Я написал код, пытаясь подсчитать столбцы, используемые этой конкретной базой данных. Но почему-то я получаю ошибку последующей:VBA Excel 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 
+0

, на мой взгляд, с вами что-то не так. Проверьте [ЗДЕСЬ] (https://www.connectionstrings.com/dbf-foxpro/) –

+0

Кстати, для метода '.Open' вы передаете только последнее значение' sConnectionString'. Возможно, вы пропустили конкатенацию других частей, которые должны быть выполнены следующим образом: 'sConnectionString = sConnectionString &" Provider ...... "' –

+0

ah ok Спасибо, я буду играть с ним немного :) – user2868444

ответ

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" 
+0

Ok спасибо I Попробуй, ты прав! – user2868444

+1

Он работает! Спасибо за помощь :)! Моя проблема была связана только с ConnectionString. – user2868444

+1

+ 1 Хороший Catch :) –

Смежные вопросы