Выполнение ADO - ошибка компиляции: пользовательский тип не определен - PullRequest
1 голос
/ 19 ноября 2010

У меня есть следующее соединение ado от excel для доступа, но оно не работает, я получаю сообщение об ошибке выше. Есть идеи?

Sub ADO_to_access()

Dim database As New ADODB.Connection  // ERROR HERE
Dim connectionstring As String
Dim NewSet As Recordset
Dim CurrentSheet As Worksheet

Set CurrentSheet = ActiveSheet
Set objaccess = Nothing

connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0; " & _
        "Data Source=C:\Users\Carlos\Desktop\VBA - CW - Database.mdb;"

database.Open connectionstring

' ************* MEN
Set NewSet = New ADODB.Recordset
NewSet.Open "Mens_Dept_Data", database, adOpenKeyset, adLockOptimistic, adCmdTable

x = 6
Do While Len(Range("P" & x).Formula) > 0
With NewSet
.AddNew

.Fields("Irina").Value = CurrentSheet.Range("P" & x).Value
.Fields("Thomas").Value = CurrentSheet.Range("Q" & x).Value
.Fields("Jackie").Value = CurrentSheet.Range("R" & x).Value

.Update
End With
x = x + 1
Loop

NewSet.Close
database.Close

End Sub

Ответы [ 2 ]

6 голосов
/ 19 ноября 2010

Вы ссылались на библиотеку adodb? (Из VBE выберите Инструменты, Ссылки)

0 голосов
/ 19 ноября 2010

Я полагаю, что проблема может быть в следующих типах:

adOpenKeyset, adLockOptimistic, adCmdTable

Попробуйте определить их следующим образом:

var adOpenForwardOnly = 0, adOpenKeyset = 1, adOpenDynamic = 2, adOpenStatic = 3; //CursorType Values
var adLockReadOnly = 1, adLockPessimistic = 2, adLockOptimistic = 3, adLockBatchOptimistic = 4; //LockTypeEnum Values
var adStateClosed = 0, adStateOpen = 1, adStateConnecting = 2, adStateExecuting = 4; //ObjectStateEnum Values 
var adUseServer = 2, adUseClient = 3 //CursorLocationEnum Values 
var adCmdTable = 2 //CommandTypeEnum Values

После редактирования:

Извините, этодля диалекта JScrip, но я уверен, что вы можете изменить его на VBScript.:)

...