문제

Excel 통합 문서에서 일부 VBA 코드를 작성하여 데스크탑의 동일한 디렉토리의 액세스 데이터베이스에서 데이터를 검색했습니다. 내 컴퓨터와 Windows XP를 실행하는 다른 여러 기계에서 잘 작동하지만 Vista 기계에서 이것을 테스트하면 다음 오류가 발생했습니다.

설치 가능한 ISAM을 찾을 수 없습니다

온라인으로 많은 검색을했지만 구체적인 답변을 찾을 수없는 것 같습니다. 연결 문자열은 괜찮은 것 같습니다. 앞서 언급했듯이 여러 기계에서 작동합니다.

누구 든지이 원인이 무엇인지 아는 사람이 있습니까? 내 연결 문자열은 다음과 같습니다.

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\ptdb\Program Tracking Database.mdb;

감사

올바른 솔루션이 없습니다

다른 팁

주위에 단일 따옴표를 배치하십시오 Extended Properties:

OleDbConnection oconn = 
    new OleDbConnection(
        @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1;';");

시도해보십시오. 실제로 작동합니다.

데이터 소스 주위에 단일 따옴표를 사용해보십시오.

Provider=Microsoft.Jet.OLEDB.4.0;Data Source='D:\ptdb\Program Tracking Database.mdb';

문제는 파서에 의미가있는 공백 인 경향이 있습니다.

다른 속성 (예 : 확장 속성)이있는 경우 해당 값이 단일 따옴표로 둘러싸여 있어야 할 수도 있습니다.

Provider=Microsoft.Jet.OLEDB.4.0;Data Source='D:\ptdb\Program Tracking Database.mdb'; Extended Properties='Excel 8.0;HDR=YES;IMEX=1;';

이중 인용문을 똑같이 잘 사용할 수 있습니다. 그러나 당신은 아마도 그들을 피해야 할 것입니다. 그리고 나는 더 많은 것을 발견합니다. 알고리즘의 통증 싱글을 사용하는 것보다.

당신은 이것을 확인 했습니까? http://support.microsoft.com/kb/209805? 특히 MSRD3X40.dll이 있는지 여부.

최신 버전의 제트기가 있는지 확인할 수도 있습니다. http://support.microsoft.com/kb/239114

연결 문자열에서 Jet OLEDB를 사용하십시오. 그것은 나를 위해 해결되었습니다.

예는 다음과 같습니다.

"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=E:\Database.mdb;Jet OLEDB:Database Password=b10w"

방금 매우 비슷한 문제가 발생했습니다.

당신과 마찬가지로 내 연결 문자열이 올바른 것처럼 보였고 실제로 다른 시나리오에서 동일한 연결 문자열이 작동했습니다.

문제는 자원이 부족한 것으로 판명되었습니다. 20 중 19 번, 나는 "설치 가능한 ISAM을 찾을 수 없음"을 볼 수 있지만 한두 번 (코드 변경없이) "메모리에서"를 얻을 수 있습니다.

기계를 재부팅하는 것은 문제를 "해결"했습니다 (지금은 ...?). 이것은 Windows XP에서 Jet 버전 4.0.9505.0을 사용하여 발생했습니다.

나는 이것을 사용하여 Excel 12 XLSX 파일을 업데이트했습니다.

        System.Data.OleDb.OleDbConnection MyConnection;
        System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
        MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source='D:\\Programming\\Spreadsheet-Current.xlsx';Extended Properties='Excel 12.0;HDR=YES;';");
        MyConnection.Open();
        myCommand.Connection = MyConnection;
        string sql = "Update [ArticlesV2$] set [ID]='Test' where [ActualPageId]=114";// 
        myCommand.CommandText = sql;
        myCommand.ExecuteNonQuery();
        MyConnection.Close();

이 연결 문자열을 사용하십시오

string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" +
      "Data Source=" + strFileName + ";" + "Extended Properties=" + "\"" + "Excel 12.0;HDR=YES;" + "\"";

이 문제는 컴퓨터가 액세스 요구가 필요한 올바른 ISAM (인덱스 순차 드라이버 메소드)을 찾을 수 없기 때문입니다.

기계에 MSACEESSS가 설치되어 있지 않기 때문입니까? 최신 버전의 JET가 있는지 확인하고 여전히 작동하지 않으면 다른 컴퓨터 중 하나에서 MSRD3X40.dll 파일을 찾으려면 Vista 머신에 어딘가에 복사하여 regsvr32를 호출하십시오 (관리 모드로 ) 그것은 당신을 위해 그것을 정리해야합니다.

아래 연결 문자열을 사용하여 XLSX 파일에서 읽으십시오.

String ConnectionString = "제공자 = microsoft.ace.oledb.12.0; data source =" + <> + "; 확장 속성 = Excel 8.0;";

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top