2010-12-20 4 views
2

일부 클라이언트에서 제공되는 .DBF 파일을 미리 볼 수있는 VB.NET 응용 프로그램이 있습니다. 그런 다음 응용 프로그램은이 파일에서 CSV를 추출하여 다양한 환경에서 사용할 수 있습니다. 이 응용 프로그램은 Windows XP 32 비트에서 작동합니다. 우리 회사는 최근에 우리 대부분을 Windows 7 x64로 업그레이드하여이 응용 프로그램을 실패하게 만들었습니다. 이 응용 프로그램의 대상 빌드가 "모든 CPU"가 아닌 x86이고 응용 프로그램을 다시 빌드했지만 동일한 문제가 발생했음을 확인했습니다.XP에서 작동했던 Windows 7의 .DBF 파일을 열 수 없습니다.

원래는 System.Data.Odbcconnection.ConnectionString = "Driver={Microsoft dBASE VFP Driver (*.dbf)};SourceType = DBF;SourceDB=" & dbfSourcePath & ";Exclusive=No; Collate=Machine;BACKGROUNDFETCH=NO;"을 사용했습니다. 오류의 위치는 connection.Open()입니다. 주어진 오류 : "ERROR [IM001] [Microsoft] [ODBC 드라이버 관리자] 드라이버가이 기능을 지원하지 않습니다".

VFP 용 드라이버가 설치되지 않았고 Access DBF 드라이버가 here 게시물과 유사하지 않은 것으로 나타났습니다. 나열된 수정 프로그램은 VFPro SP2를 설치하는 것이지만 FoxPro를 설치하지 않아도 위에 서비스 팩을 설치합니다. 그런 다음 VFP 9.0 용 OLEDB 드라이버를 설치하려고 시도했지만 System.Data.OleDbconnection.ConnectionString = "Provider=VFPOLEDB.1;SourceDB=" & dbfSourcePath & ";"을 사용하고 있지만 지금은 connection.Open() 라인에 "기능을 사용할 수 없습니다"라는 메시지가 표시됩니다.

이 응용 프로그램을 Windows 7 x64에서 작동시키는 방법에 관해서는 완전히 실종 상태입니다. 다음은 읽기 쉽도록 제거 파일 열기 경로 코드의 2 개 변종이다 (I 경로 및 파일 존재 확인했습니다) :

ODBC 버전 :

Imports System.Data.Odbc 
Dim strSelect As String 
strSelect = "SELECT * FROM " & dbfSourceName 
Dim connection As New Odbc.OdbcConnection 
Dim adp As New Data.Odbc.OdbcDataAdapter 
connection.ConnectionString = "Driver={Microsoft dBASE VFP Driver (*.dbf)};SourceType = DBF;SourceDB=" & dbfSourcePath & ";Exclusive=No; Collate=Machine;BACKGROUNDFETCH=NO;" 
Dim command As New OdbcCommand(strSelect, connection) 
connection.Open()   ' Here is where it throws the error. 

OLEDB 버전 :

Imports System.Data.OleDb 
Dim strSelect As String 
strSelect = "SELECT * FROM " & dbfSourceName 
Dim connection As OleDbConnection = New OleDbConnection() 
Dim adp As New Data.OleDb.OleDbDataAdapter 
connection.ConnectionString = "Provider=VFPOLEDB.1;SourceDB=" & dbfSourcePath & ";" 
Dim Command As New OleDbCommand(strSelect, connection) 
connection.Open()   'Error occurs here. 

OLEDB 또는 ODBC 연결을 사용하여 Windows 7 x64에서 .DBF 파일을 여는 방법은 무엇입니까?

+0

확인이 : 내가 여기에 게시하기 전에 http://connectionstrings.com/dbf-foxpro –

+0

네는 해당 사이트에 갔다. 문제는 connection.Open()이 Windows 7 x64에서 실패한다는 것입니다. ODBC 버전은 Windows XP에서 올바르게 작동했습니다. – wergeld

답변

4

몇 가지 대체 연결 문자열을 사용해 보셨습니까? 또한에 액세스에 제트 사용에 대한 참고를 참조하십시오 www.connectionstrings.com/dbf-foxpro

connection.ConnectionString = _ 
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ 
    dbfSourcePath & ";Extended Properties=dBASE IV;" 

를 살펴 보자 64 bit systems

업데이트 : 제트 드라이버를 사용하는 대신 , 당신은 다행히도, 직접 DBF에 액세스 할 수 있습니다 파일 형식은 비교적 간단합니다. 이 직접 액세스를 보여주는 기존 코드 프로젝트 솔루션이 있습니다.

http://www.codeproject.com/KB/bugs/LoadDBF.aspx

+0

다양한 연결 문자열 매개 변수를 시도했지만 아직 작동하지 않는 매개 변수를 찾으십시오. Connection Strings 페이지의 모든 변형을 살펴 보았지만 여전히 기쁨은 없습니다. 다른 오류가 발생했습니다 : ISAM, 예상되는 형식이 아닌 테이블, "할 일 없음". DBF 유형이 무엇인지 알고 있다면 훨씬 쉬울 것입니다. 또한 Access 2010에서는 이러한 파일을 열 수 없으므로 도움이되지 않습니다. – wergeld

+0

@wergeld, DBF로 어떤 유형의 처리를합니까? 단순히 모든 데이터를 읽고 색인 파일에 관심이 없다면 DBF 형식은 매우 간단합니다. DBF를 직접 읽을 수있는 코드를 쉽게 작성할 수 있습니다. http://www.dbase.com/KnowledgeBase/int/db7_file_fmt.htm –

+0

데이터가 읽히고 일부 변환/필터링이 플랫 텍스트 파일로 스팟 아웃되기 전에 필드에서 수행됩니다. 인덱스, 키 등은 사용되지 않습니다. (.DBF 파일에서 그들은 물론 대상에서 사용됩니다.) 이 문제는 운전자가 일하는 방식의 변화 (또는 일하지 않는 것)와 관련이 있습니다. 64 비트에서 JET을 사용하기 위해 제공된 링크는 내가 직면 한 문제를 해결하지 못했습니다. DBF v7 파일 doc에 대한 링크는 흥미 롭습니다. 그러나 처음부터 DBF 리더를 만드는 것은 지금으로선 내 지평선에 없습니다. – wergeld

관련 문제