2010-08-19 3 views

ответ

1

Соединение ODBC на сервере не поможет. ODBC-соединение должно быть настроено на компьютере, к которому вы хотите подключиться, а не в том, к которому вы хотите подключиться.

Для подключения к файлам Dbase (и относиться к ним как база данных), вам необходимо

  1. Назначьте диск, так что вы можете получить доступ к местоположению файлов ..
  2. Connect использование OleDbConnection.

Он также имеет проблему с чтением файлов DBase из .NET. Если вы читаете их достаточно часто, приложение начнет бросать исключение «System.Resources.Exceeded». Единственное надежное решение, которое я нашел, - это убить приложение и перезапустить его, что сделано в коде с именем FixMyself. (Не включается, поскольку содержит конфиденциальные данные). Процедура FixMyself по существу запускает второй exe, который убивает THIS exe, а затем перезапускает его.

Образец кода, приведенный ниже, копируется из производственного кода и должен дать вам толчок в правильном направлении. он отображает диск, подключается и читает.

Это уродливое, но оно работает. Это также является частичным, поскольку он вызывает несколько функций, не включенных здесь. Но опять же, этого должно быть достаточно, чтобы заставить вас идти.

Public Function GetRegisterConnectionString(ByVal PathToFolder As String) 
     Return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & PathToFolder & ";Extended Properties=dBASE IV;User ID=Admin;Password=" 
    End Function 
    Public Sub ReadMyDbaseFile(ByVal DriveLetter As String, ByVal IPAddress As String) 

     Dim DpalmPath As String = "\\" & IPAddress & "\c$\Dpalm" 
     Dim cn As New System.Data.OleDb.OleDbConnection("") 
     cn.ConnectionString = Me.GetRegisterConnectionString(DpalmPath) 
     If ds.Tables.Contains("CurrentPrices") Then 
      ds.Tables.Remove("CurrentPrices") 
     End If 

    Dim POSAdapter As New System.Data.OleDb.OleDbDataAdapter("select * From MyDbaseFile WHERE SomeField > 0 AND ACTIVE = -1", cn) 

    Try 
     POSAdapter.Fill(ds, "CurrentPrices") 

    Catch ex As Exception 
     If InStr(ex.ToString().ToLower(), "system resource exceeded") Then 
      WriteToLog("System Resource Exceeded Error was thrown on register " & DriveLetter & ", IP " & IPAddress & ".") 
      Me.FixMyself() 
     Else 
      Throw New Exception(ex.ToString()) 
     End If 
    End Try 
    ds.Tables("CurrentPrices").Columns.Add("LastModified", GetType(Date)) 
    POSAdapter.Dispose() 
    POSAdapter = Nothing 
    cn.Dispose() 
    cn = Nothing 
    ds.AcceptChanges() 

    GC.Collect() 


End Sub 
+0

Спасибо. Если вы можете опубликовать этот код, я бы очень признателен! – user204588

Смежные вопросы