2013-04-22 12 views
0

액세스 DB 생성 후 .DBF로 변환하는 것이 vb.net에서 실제로 가능하지 않음을 알게 된 후 vb.net을 사용하여 .DBF 파일을 만들려고합니다.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 

나는이 머리카락에 정말로 있다고 생각합니다. 어떤 도움이라도 대단히 감사하겠습니다!

답변

2

나는 내 자신의 의문을 해결했습니다.

당신이 .DBF 파일에 연결할 때 분명히, 당신은 (파일 이름 포함)의 전체 경로 이름 때문에

입력 안됩니다이 있어야했다

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

을 :

Dim DatabaseFullPath As String = fd.SelectedPath & "\\" 
+1

당신은 정확합니다 - 저는 이것을 코멘트에 넣으려고했습니다 :) 당신의 대답을 받아 들일 것을 잊지 마십시오. (당신이 당신 자신의 대답을 받아 들일 수있는 시간이 있다고 생각합니다. 하루 이틀이 되라.) – Tim

관련 문제