2013-07-18 32 views
26

Tôi mới bắt đầu sử dụng Microsft.ACE.OLEDB 12.0. Tôi tạo một ứng dụng Winforms VS 2010.Nhà cung cấp 'Microsoft.ACE.OLEDB.12.0' không được đăng ký trên máy cục bộ trong khi xuất dữ liệu sang MS ACCESS

Và tạo một hàm cho dữ liệu lưới dữ liệu xuất sang tệp MS Access. Tôi sử dụng Microsoft OLEDB

xuất khẩu dữ liệu lưới dữ liệu vào MS Access file.But tôi nhận được lỗi này khi tôi cố gắng để xuất khẩu

dữ liệu

để truy cập ms.

Vui lòng xem hình ảnh bên dưới.

enter image description here

Tôi cũng tham khảo các Microsoft.Office 12.0 Object Library trong ứng dụng của tôi.

enter image description here

hàng loạt Build Cấu hình

enter image description here

Xin vui lòng giúp.

Trả lời

47

Tham chiếu đến các bit Access Interop không liên quan gì đến ngoại lệ của bạn và Access Interop không cần thiết để sử dụng các lớp trong System.Data.OleDb.

Sự cố phát sinh khi bạn đã biên dịch ứng dụng cho AnyCPU Platform, bạn đang chạy trên hệ thống 64 bit và nhà cung cấp ADO.NET đã cài đặt (Microsoft ACE.OLEDB.12.0) là phiên bản 32 bit.

Khi sử dụng mục tiêu AnyCpu Nền tảng mã của bạn sẽ được thực thi dưới dạng mã 64 bit trên hệ thống 64 bit và mã 32 bit trên hệ thống 32 bit. Một ứng dụng được thực hiện dưới dạng 64bit không thể sử dụng trình điều khiển 32 bit (và ngược lại). Bây giờ thêm vào sự pha trộn một thực tế là Microsoft.ACE.OLEDB.12.0 có hai phiên bản khác nhau. Một cho 64bit và một cho 32bit và chúng không thể được cài đặt cùng nhau trên cùng một máy.

Cách giải quyết đơn giản nhất là thay đổi Nền tảng mục tiêu của ứng dụng của bạn thông qua trình đơn Visual Studio

BUILD -> Configuration Manager -> Active Solution Platform -> x86 

Nếu tùy chọn x86 không phải là đã có, sau đó chọn MỚI, tên nó x86, Copy Settings from AnyCPU và kiểm tra Create new project platforms

Nếu bạn nghĩ rằng việc sử dụng ứng dụng 32 bit trên Hệ điều hành 64bit là mất hiệu suất hoặc điều gì đó cần tránh thì hãy suy nghĩ hai lần và đọc this reference trong đó PRO và CONS của AnyCpu được kiểm tra một cách nghiêm ngặt. Nếu bạn không có lý do cụ thể để sử dụng AnyCpu thì tốt hơn là ở lại với x86.

Tất nhiên, một tùy chọn khác là gỡ cài đặt phiên bản 32 bit và cài đặt phiên bản 64bit của ACE from here và sau đó chạy ứng dụng của bạn dưới dạng AnyCpu trên hệ thống 64 bit. Nhưng đây có thể là một cơn ác mộng đối với các kịch bản triển khai của bạn. Điều gì sẽ xảy ra nếu phiên bản Microsoft Office 32bit được cài đặt trên máy mục tiêu x64 của bạn?Office cài đặt phiên bản tương thích bit của ACE và, như đã nói, không thể cài đặt 32 bit và 64 bit ACE trên cùng một máy.
Bây giờ bạn cũng nên yêu cầu khách hàng của bạn cài đặt lại Office làm 64bit để giữ cho ứng dụng 64bit của bạn vui vẻ.

CẬP NHẬT


Tình hình đã thay đổi một chút với các phiên bản mới nhất của Visual Studio. Hiện tại có một tùy chọn mới là mặc định cho các dự án mới. Nó được gọi là AnyCPU Ưu tiên chế độ 32 bit. Xem thêm chi tiết tại liên kết này: What AnyCPU Really Means As Of .NET 4.5 and Visual Studio 11 và một bài thú vị (mặc dù về Sql Server Compact) là này một The trouble with Any CPU–Prefer 32 bit–BadImageFormatException

+0

Cảm ơn bạn đã trả lời có giá trị. Hệ điều hành của tôi là Windows 7 64 bit.Vui lòng xem câu hỏi đã chỉnh sửa của tôi Tôi thêm một hình ảnh trong cấu hình Batch Build –

+1

Không xây dựng hàng loạt, sử dụng Trình quản lý cấu hình và đặt Nền tảng giải pháp tích cực là x86 – Steve

+0

Nhưng nó có hoạt động trên cả hai nền tảng không. bit OS. –

8

Thay đổi trong hồ bơi ứng dụng của nó 'advanced settings' để cho phép chạy các chương trình 32-bit ... mà đã làm nó cho tôi.

+0

Đơn giản và chính xác. – ronen

6

Tôi gặp sự cố tương tự khi đọc tệp Excel.

Lịch sử của vấn đề:

Chúng tôi vừa mới di cư ứng dụng của chúng tôi từ 32-bit đến 64-bit vì yêu cầu bộ nhớ. Vì vậy, chúng tôi đã di chuyển các cửa sổ 7 từ 32 bit xuống 64 bit. Nhưng chúng tôi vẫn cài đặt văn phòng 32 bit trên máy của mình.

vì, trong số này, chúng tôi gặp sự cố này khi nhập dữ liệu Excel vào ứng dụng.

Solution,

Tôi đã tải về phiên bản 64-bit của http://www.microsoft.com/en-us/download/details.aspx?id=13255 và cài đặt với một lý lẽ gì,

AccessDatabaseEngine_x64.exe/thụ động

Nếu không có bất kỳ mã thay đổi vấn đề của tôi được giải quyết.

Lưu ý:

Trên hệ điều hành 64 bit và 64 bit, chức năng của tôi hoạt động tốt mà không cần khắc phục. Sửa lỗi này chỉ được yêu cầu trong khi ứng dụng của chúng tôi chạy 64 bit trên hệ điều hành 64 bit có cài đặt văn phòng 32 bit trên đó.

+0

một triệu nhờ giải pháp! đặc biệt là đối số/thụ động! –

+0

Bravo! Làm tốt! – Behnam

Các vấn đề liên quan