문제

제트 던지기 오류 3011에 문제가 있습니다.

런타임 오류 '3011'

Microsoft Jet 데이터베이스 엔진은 'Filename.tst.csv'객체를 찾을 수 없었습니다. 객체가 존재하고 이름과 경로 이름을 올바르게 철자하는지 확인하십시오.

코드가 다음과 같이 보이는 곳 :

Dim db as Database, rs as Recordset
Set db = OpenDatabase("SELECT TOP 1 * FROM [" & fileName & "];")
Set rs = db.OpenRecordset("SELECT TOP 1 * FROM [" & fileName & "];")

문제를 두 번째 확장 (또는 명백한 확장) ".TST"로 추적했지만 오류가 왜 발생했는지 확실하지 않으며 Google을 통해 또는 여기를 통해 답을 찾을 수 없었습니다. 나는 누군가가 한계에 대한 통찰력을 가질 수 있다고 생각합니다.

이것은 VB6에서 DAO 3.6을 사용하고 있습니다.

도움이 되었습니까?

해결책

이것은 정확히 당신이 말하는 상황이 아니지만, 이것을 읽을 때, 원인 섹션에서, 긴 파일 이름을 지원하지 않는 일부 드라이버에 대한 정보는 8.3 형식이 아니기 때문에 적용되는 것처럼 보입니다.

http://social.technet.microsoft.com/search/en-us?query=3011&ac=8

따라서 파일 이름을 바꾸거나 다른 메소드를 사용하여 데이터를로드해야합니다 (예 : StreamReader 사용). 개인적으로 파일의 이름을 바꿨습니다. 훨씬 쉬울 것입니다.

다른 팁

약간의 hackey이지만 파일을 더 친근한 확장으로 열기 전에 파일의 이름을 프로그래밍 할 수 있습니다. 완료되면 다시 설정할 수 있도록 기존 확장을 유지하십시오.

대신 짧은 파일 이름을 사용하지 않는 이유는 무엇입니까? 하나 이상의 기간을 포함하지 않습니다. CfileInfo 클래스를 떨어 뜨리십시오 이것 Karl E Peterson의 우수한 사이트에서 제공합니다 (그것은 래퍼 방법이 있습니다. GetShortPathName API 호출).

볼륨이 짧은 파일 이름을 지원하지 않을 수 있다고 생각합니다 ( 선택 과목).

가져 오기 파일에 대한 schema.ini 파일을 만들거나 hkey_local_machine software microsoft microsoft jet 4.0 engines text format registry 키에 확장자를 추가해야합니다. 따라서 파일을 구문 분석하는 방법을 알고 있습니다. 자세한 설명이 있습니다 http://msdn.microsoft.com/en-us/library/ms974559.aspx

VB6에서 더 이상 사용되지 않았기 때문에 DAO를 많이 사용하지 않았기 때문에 나는 이것에 대해 확실하지 않습니다. Jet의 규칙은 OLE DB 제공 업체, ODBC 드라이버 및 DAO간에 매우 다를 수 있다는 것을 알고 있습니다.

"."교체를 시도 했습니까? "#"문자로 해당 파일 이름의 문자? 아니면 마지막으로? SQL 문 텍스트에서만.

나에 따르면, 두 번째 코드 줄은 아무것도 반환 할 수 없습니다!

Set db = OpenDatabase("SELECT TOP 1 * FROM [" & fileName & "];")

선택 명령으로 데이터베이스를 열 수 없습니다! 당신의 코드는 다음과 같습니다

Set db = DBEngine.Workspaces(0).OpenDatabase(filenamne)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top