오류 :“설치 가능한 ISAM을 찾을 수 없습니다”
-
21-08-2019 - |
문제
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;";