0

在弄清楚生成访问数据库并随后将其转换为 .DBF 在 vb.net 中实际上是不可能的之后,我正在尝试使用 vb.net 创建一个 .DBF 文件

但是,现在我遇到以下问题:

这是我正在使用的代码:

Imports System.IO
Imports System.Data.SqlClient


Public Class frmStart
Inherits System.Windows.Forms.Form



Private Sub btnCreate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCreate.Click

    Dim fd As FolderBrowserDialog = New FolderBrowserDialog
    Dim strFileName As String = ""
    Dim dbNameForm As New frmDatabaseName()

    ' init DB Vars
    Dim ds As New DataSet
    Dim sql As String


    ' Open Location browser
    dbNameForm.FileName = "Test"
    If dbNameForm.ShowDialog() = DialogResult.OK Then

        MsgBox("Select the location where you want your Access-File")

        If fd.ShowDialog() = DialogResult.OK Then
            Dim DatabaseFullPath As String = fd.SelectedPath & "\" & dbNameForm.FileName & ".DBF"

            'Create the Database
            CreateDatabase(DatabaseFullPath)
            MsgBox("Database created")

            'Open database
            Dim dBaseConnection As New System.Data.OleDb.OleDbConnection( _
                "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                "Data Source=" & DatabaseFullPath & ";" & _
                "Extended Properties=dBase IV")
            dBaseConnection.Open()
            ' Filling the Database with the required Columns

            sql = "CREATE TABLE DB_Total (NAME varchar(79),TYPE varchar(16), UNIT varchar(31)," &
                    "ADDR varchar(254), RAW_ZERO varchar(11), RAW_FULL varchar(11), ENG_ZERO varchar(11)," &
                    "ENG_FULL varchar(11), ENG_UNITS varchar(8), FORMAT varchar(11), COMMENT varchar(254)," &
                    "EDITCODE varchar(8), LINKED varchar(1), OID varchar(10), REF1 varchar(11), REF2 varchar(11)," &
                    "DEADBAND varchar(11), CUSTOM varchar(128), TAGGENLINK varchar(32), CLUSTER varchar(16)," &
                    "EQUIP varchar(254), ITEM varchar(63), HISTORIAN varchar(6)," &
                    "CUSTOM1 varchar(254), CUSTOM2 varchar(254), CUSTOM3 varchar(254), CUSTOM4 varchar(254)," &
                    "CUSTOM5 varchar(254), CUSTOM6 varchar(254), CUSTOM7 varchar(254), CUSTOM8 varchar(254))"
            Dim dBaseCommand As New System.Data.OleDb.OleDbCommand(sql, dBaseConnection)
            dBaseCommand.ExecuteNonQuery()
            dBaseCommand = Nothing

            sql = "CREATE TABLE TagSubs (TAGNAME varchar(79), POLLTIME varchar(6), SCALEMODE varchar(8), DEADBAND varchar(15))"
            dBaseCommand = New System.Data.OleDb.OleDbCommand(sql, dBaseConnection)
            dBaseCommand.ExecuteNonQuery()
            dBaseCommand = Nothing
            dBaseConnection.Close()

        Else

            MsgBox("Action Cancelled")

        End If

    Else

        MsgBox("Action Cancelled")

    End If

End Sub

     ' Creating a Database
Private Function CreateDatabase( _
    ByVal DatabaseFullPath As String) As Boolean
    Dim bAns As Boolean = False
    Dim cat As New ADOX.Catalog
    Try

        Dim sCreateString As String = _
          "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
          DatabaseFullPath
        cat.Create(sCreateString)

        bAns = True

    Catch Excep As System.Runtime.InteropServices.COMException

    Finally
        cat = Nothing
    End Try
    Return bAns
End Function

End Class

我也在使用第二个表单,但这只是一个用户可以在其中向文件添加名称的窗口(默认,名称是 "test.DBF" )

编写此代码并运行它后,我收到以下错误:

C:\Documents and settings\HIJ541\Desktop\Test.DBF is not a Valid path. 
Make sure the path name is spelled correctly and there is an active connection 
with the server on which the file is located 

(大致从荷兰语翻译而来)

此外,当我尝试打开创建的 .DBF 文件时,它会告诉我以下信息:

the file you are trying to open is in a different format than specified 
by the file extension

我想我真的在这个问题上..任何帮助将不胜感激!

4

1 回答 1

2

我已经解决了我自己的问题。

显然,当您连接到 .DBF 文件时,您不应该输入完整的路径名(包括文件名)

所以:

Dim DatabaseFullPath As String = fd.SelectedPath & "\" & dbNameForm.FileName & ".DBF"

应该是这样的:

Dim DatabaseFullPath As String = fd.SelectedPath & "\\"
于 2013-04-22T06:26:21.543 回答