【问题标题】:How to connect to a Clipper (E5) DBF File (with an SMT) using vb.net如何使用 vb.net 连接到 Clipper (E5) DBF 文件(带有 SMT)
【发布时间】:2020-11-02 18:25:29
【问题描述】:

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

查看 DBF 的标头信息表明它是 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

谁能提供任何关于我做错了什么或我缺少什么的见解?

【问题讨论】:

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

标签: vb.net oledb dbf clipper


【解决方案1】:

这些文件似乎是使用 HiPer-Six 格式和 SMT 备忘录文件创建的 DBF。检查这个https://www.dbf2002.com/dbf-file-format.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    • 2011-06-12
    相关资源
    最近更新 更多