Cách Xử Lý Lỗi Kết Nối ADO Trên Office2016_x64

kieu manh

❆❆❆❆❆
Tham gia ngày
9 Tháng sáu 2012
Bài viết
3,672
Được thích
2,512
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
Mình đang sử dụng code sau để kết nối tới File Database.accdb chạy trên Office2016_x32 thấy chạy rất tốt ....
Nhưng không biết lý do sao khi chuyển qua Office2016_x64 thì nó báo lỗi theo hình sau:

Mã:
Public Function Connection(ByVal AccPath As String) As ADODB.Connection
    Rem Tools/References - VBAProject/Microsoft ActiveX Data Objects 6.1 Library
    Set Cnn = New ADODB.Connection
    Cnn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=") _
              & AccPath & ";Persist Security Info=False"
    Set Connection = Cnn
End Function
Ai biết xin chỉ dùm cách xử lý lỗi trên
xin cảm ơn
ADO_Error.PNG
 

Hoàng Trọng Nghĩa

Chuyên gia GPE
Thành viên BQT
Moderator
Tham gia ngày
17 Tháng tám 2008
Bài viết
7,629
Được thích
15,208
Điểm
1,910
Tuổi
43
Nơi ở
TPHCM
chi tiết là sao chưa hiểu kịp
Thì thay vì của anh là
Cnn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=") _
& AccPath & ";Persist Security Info=False"

Thì nên sửa lại là
Cnn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& AccPath & ";Persist Security Info=False")
 

kieu manh

❆❆❆❆❆
Tham gia ngày
9 Tháng sáu 2012
Bài viết
3,672
Được thích
2,512
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
Thì thay vì của anh là
Cnn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=") _
& AccPath & ";Persist Security Info=False"

Thì nên sửa lại là
Cnn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& AccPath & ";Persist Security Info=False")
Nó vẫn báo cái lỗi đó Bạn .. mà sao x32 chạy tốt qua x64 báo lỗi vậy ???
 

HeSanbi

Thành viên tích cực
Tham gia ngày
24 Tháng hai 2013
Bài viết
1,175
Được thích
1,050
Điểm
560
Thử:
"Provider=Microsoft.ACE.OLEDB.15.0;Data Source="
 

VetMini

Gian hùng bàn phiếm (thành viên trôi nước)
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
7,708
Được thích
9,050
Điểm
560
Tôi chạy trên Ofice 2016 64 bit chả thấy vấn đề gì cả:

Nguyên văn code của bạn:
Public Function Connection(ByVal AccPath As String) As ADODB.Connection
Rem Tools/References - VBAProject/Microsoft ActiveX Data Objects 6.1 Library
Set Cnn = New ADODB.Connection
Cnn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=") _
& AccPath & ";Persist Security Info=False"
Set Connection = Cnn
End Function

Code test:
Sub ttt()
Set c = Connection("C:\Users\Noname\Documents\Database1.accdb")
MsgBox "connection established. No problems found so far"
End Sub

Kêt quả:
1579074117313.png
 

kieu manh

❆❆❆❆❆
Tham gia ngày
9 Tháng sáu 2012
Bài viết
3,672
Được thích
2,512
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
Tôi chạy trên Ofice 2016 64 bit chả thấy vấn đề gì cả:

Nguyên văn code của bạn:
Public Function Connection(ByVal AccPath As String) As ADODB.Connection
Rem Tools/References - VBAProject/Microsoft ActiveX Data Objects 6.1 Library
Set Cnn = New ADODB.Connection
Cnn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=") _
& AccPath & ";Persist Security Info=False"
Set Connection = Cnn
End Function

Code test:
Sub ttt()
Set c = Connection("C:\Users\Noname\Documents\Database1.accdb")
MsgBox "connection established. No problems found so far"
End Sub

Kêt quả:
View attachment 231212
Mạnh đoán là vầy
1/ trước đây đang xài bản Office2016x32 xong ngày hôm qua gỡ nó ra nhưng trong C:\Program Files (x86)\Microsoft Office nó vẫn còn
2/ Xong chưa khởi động lại máy cài lại bản office2016X64 nên nó ra cái lỗi đó
3/ Mới coi lại thấy Program Files và Program Files (x86) nó vẫn còn các File office

Có lẻ vì thế mà nó ngu ra hay sao đó ... chắc gở hết sạch xong cài lại mới tinh quá
Capture.PNG
 

kieu manh

❆❆❆❆❆
Tham gia ngày
9 Tháng sáu 2012
Bài viết
3,672
Được thích
2,512
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
Lỡ làm lỗi rồi kiểu gì nay tới tết sẻ ghost lại máy .... thử quậy thêm chút nữa xem sao để hiểu hết bản chất vấn đề của nó
Hiện Mạnh đang xài office 2016_x64 mà nó lỗi kết nối như mô tả mấy bài trên
Mới Thử chuỗi kết nối như sau chạy OK
Mã:
Cnn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & AccPath & ";Persist Security Info=False")
Thử lại như vầy nó báo lỗi như mấy bài trên đã nêu
Mã:
Cnn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source="  & AccPath & ";Persist Security Info=False")
1/ Vậy vấn đề mình muốn hỏi là cái chuỗi kết nối Microsoft.Jet.OLEDB.4.0 nó có làm chậm kết nối tới Database.accdb
hay không hay nó cũng giống như Microsoft.ACE.OLEDB.12.0

2/ Vậy khi Mình xài Database.accdb hay Database.mdb thì 2 cái đó có gì khác biệt khi sử dùng làm Database lưu dữ liệu

3/ Nên xài Database.accdb hay Database.mdb ... tại sao ??!!

Xin cảm ơn
 
Top Bottom