如何使用vb.net连接到Clipper(E5)DBF文件(带有SMT)

如何使用vb.net连接到Clipper(E5)DBF文件(带有SMT),vb.net,oledb,dbf,clipper,Vb.net,Oledb,Dbf,Clipper,我正在尝试连接到具有链接SMT文件(HISTORY.SMT)的DBF(HISTORY.DBF)。我有多个DBF文件,我可以连接到除SMT文件以外的所有文件 查看DBFs的头信息表明,它是一种Clipper(E5头)格式的DBF,对于大多数文件,使用下面的连接代码可以正常读取,但一旦我尝试读取一个带有关联SMT的文件,它就会因故障而失败: 外部表不是预期的格式 我的代码如下 Dim dsDataSet As New DataSet Dim ConnectionString As String Di

我正在尝试连接到具有链接SMT文件(
HISTORY.SMT
)的DBF(
HISTORY.DBF
)。我有多个DBF文件,我可以连接到除SMT文件以外的所有文件

查看DBFs的头信息表明,它是一种Clipper(E5头)格式的DBF,对于大多数文件,使用下面的连接代码可以正常读取,但一旦我尝试读取一个带有关联SMT的文件,它就会因故障而失败:

外部表不是预期的格式

我的代码如下

Dim dsDataSet As New DataSet
Dim ConnectionString As String
Dim daDataAdapter As OleDb.OleDbDataAdapter
Dim dBaseConnection As New System.Data.OleDb.OleDbConnection

Dim strFilePath As String = gloStrPath & "data"
Dim strDBF As String = "HISTORY.DBF"

Try
    ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFilePath & ";Extended Properties=dBase III;"
    dBaseConnection = New System.Data.OleDb.OleDbConnection(ConnectionString)
    If dBaseConnection.State = 0 Then dBaseConnection.Open()
Catch ex As Exception
    MsgBox(ex.Message, 16, "Error")
End Try

Try
    daDataAdapter = New OleDb.OleDbDataAdapter("select * from " & strDBF, dBaseConnection)
    daDataAdapter.Fill(dsDataSet, "Name")
Catch ex As Exception
    MsgBox(ex.Message, 16, "Error")
End Try

任何人都能洞察我做错了什么或我遗漏了什么吗?

这些文件似乎是使用HiPer Six格式和SMT备忘录文件创建的DBF。检查这一点

我做了更多的修改,发现如果我将标题信息从e5更改为03(Clipper更改为dBase III),那么我可以使用vb.net很好地加载数据。这意味着制作DBF的副本并编辑第一个字节,但它可以让我达到我需要的位置。