【发布时间】: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 的副本并编辑第一个字节,但它可以让我到达我需要的地方。