2009-06-18 6 views
0
  • DBF 파일은 C:\dbase\clip53\PRG\stkmenu\WPACK3\
  • DBF 파일은 WPACKS.CFG (의도적으로 .DBF가 아닙니다.)

데이터베이스 및 레코드 집합을 여는 ActiveX EXE의 VB6 코드 :VB6에서 xBase/Clipper 파일의 데이터를 읽으려면 어떻게해야합니까?

Function OpenDatabase(sFile As Variant, Optional sProvider As Variant = "Provider=Microsoft.Jet.OLEDB.4.0") As Variant ' ADODB.Connection 
    Dim nErr As Long 
    Dim sErr As String 
    Dim oConnection As Object 'ADODB.Connection 
    Set oConnection = CreateObject("ADODB.Connection") 
    On Error Resume Next 
    oConnection.open sProvider & ";Data Source=" & sFile 
    nErr = Err.Number 
    sErr = Err.Description 
    On Error GoTo 0 
    If nErr <> 0 Then 
     Err.Raise OPENDATABASE_E_NOTFOUND, , sErr 
    End If 
    Set OpenDatabase = oConnection 
End Function 

Function OpenRecordSet(ByRef oDb As Variant, sQuery As Variant, Optional bCmdText As Boolean = False) As Variant ''ADODB.Connection ADODB.Recordset 
    Const adOpenForwardOnly As Long = 0 
    Const adOpenStatic As Long = 3 
    Const adOpenDynamic As Long = 2 
    Const adOpenKeyset As Long = 1 
    Const adLockOptimistic As Long = 3 
    Const adCmdText As Long = 1 
    Dim oRecordSet As Object 'ADODB.Recordset 
    Set oRecordSet = CreateObject("ADODB.RecordSet") 
    If bCmdText Then 
     oRecordSet.open sQuery, , , adCmdText 
    Else 
     oRecordSet.open sQuery, oDb, adOpenKeyset, adLockOptimistic 
    End If 
    Set OpenRecordSet = oRecordSet 
End Function 

이 메서드에 액세스하는 스크립트는 VBScript와 비슷합니다. 그것은 VBScript이지만 MSScript 컨트롤을 사용하고 스크립트 엔진에서 사용할 수있게하는 전체 개체 더미가있는 전술 한 ActiveX EXE에 의해 실행됩니다. VBScript-on-steroids 방식의 일종입니다.

uses database 
uses system 
dim db 
dim rs 
set db = database.opendatabase("C:\dbase\clip53\PRG\stkmenu\WPACK3\","Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=dBase III;User ID=Admin;Password=") 
set rs = database.openrecordset(db, "SELECT * FROM WPACKS.CFG",true) 
system.consolewriteline rs.recordcount 

내 문제는 내가 Microsoft 사이트에서 가져온 oRecordSet.open sQuery, , , adCmdText에 부딪 힐 때 The connection cannot be used to perform this operation. It is either closed or invalid in this context.을 계속 사용한다는 것입니다.

'다소 자극적입니다.

답변

3

나는 DBF 파일을 연결해야 할 때 사용하는 연결 문자열은 일반적으로 같은 것입니다.

1

최신의 가장 우수한 FoxPro 드라이버를 사용해보십시오. 그것은 나를 위해 잘 작동

"Driver={Microsoft dBase Driver (*.dbf)};dbq=<filePath>" 

:

+0

또는 ODBC 공급자를 통해 썽크 또는 FoxPro 공급자가 제공하는 향상된 기능을 잃을 필요가 없도록 FoxPro 공급자를 사용하십시오. – Bob