Announcement

Collapse
No announcement yet.

Zugriff auf Paradox 4.x

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zugriff auf Paradox 4.x

    Hallo!

    Ich habe eine Paradox 4.x DB und versuche (mittlerweile fast schon verzweifelt) von VB.NET darauf zuzugreifen.

    <pre>---8x---
    lConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLED B.4.0;Data Source=" & ADatabase & ";Extended Properties=Paradox 4.x;")
    ---8X---</pre>

    Wie kann ich mit VB.NET auf PdxDB 4.x zugreifen?!?

    Vielen Dank!<br>
    &nbsp;&nbsp;&nbsp;Nico Stöckigt<br>
    <br>

  • #2
    Hallo,

    für diese Aufgabe gibt es im .NET Framework gleich zwei verschiedene Wege. Im Fall eines Problem ist es immer eine gute Idee, zuerst mit etwas Bekannten anzufangen. Ich greife daher auf die Borland-Beispieldatenbank DBDEMOS zu.

    <b>1. Weg über OleDbConnection und OleDbDataAdapter</b>
    <pre>
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    Dim sConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Programme\Gemeinsame Dateien\Borland Shared\Data;Extended Properties=Paradox 5.x;"
    Dim aCon As New OleDbConnection(sConStr)
    aCon.Open()
    Dim aCmd As New OleDbCommand("SELECT * FROM Country", aCon)
    Dim aAdp As New OleDbDataAdapter(aCmd)
    Dim aDS As New DataSet()
    aAdp.Fill(aDS, "Country")
    DataGrid1.DataSource = aDS.Tables(0).DefaultView()
    End Sub
    </pre>
    <b>2. Weg über ADO (COM Interop):</b>

    Das folgende Beispiel demonstriert das Auslesen der Daten über COM. Der OLE DB .NET Data Provider stellt die überladene Methode OleDbDataAdapter.Fill zur Verfügung, um als Input auch ein "altes" Recordset-Objekt als Quelle für die Ergebnismenge für DataSet nutzen zu können. Die Methode <b>Fill</b> legt dazu die benötigten Spalten in der DataTable an und füllt diese dann mit den Daten aus dem Recordset-Objekt. Wenn ein Primärschlüssel existiert, wird diese Information dazu verwendet, um die bereits vorhandenen Daten mit den Recordset-Daten zu aktualisieren. Nach das erledigt ist, bleibt das Recordset aktiv - die Methode Fill schließt am Ende das Recordset nicht. Das folgende Beispiel demonstriert dies:
    <pre>
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim aCon As New ADODB.Connection()
    Dim aRS As ADODB.Recordset
    Dim aOleDA As New Data.OleDb.OleDbDataAdapter()
    Dim aDT As New Data.DataTable()
    Dim aDS As New Data.DataSet()
    Dim aDV As Data.DataView
    Dim sConStr As String
    sConStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Programme\Gemeinsame Dateien\Borland Shared\Data;Extended Properties=Paradox 5.x;"
    aCon.Open(sConStr)
    aRS = aCon.Execute("SELECT * FROM Country")
    aOleDA.Fill(aDT, aRS)
    aDS.Tables.Add(aDT)
    aDV = aDS.Tables(0).DefaultView()
    DataGrid1.DataSource = aDV
    End Sub
    </pre>
    Um auf den Namespace <b>ADODB</b> für die alten ADO-Objekte zugreifen zu können, muss eine Referenz entweder zur PIA <b>adodb</b> oder zur <i>Microsoft ActiveX Data Objects 2.6 Library</i> dem .NET-Projekt hinzugefügt werden

    Comment


    • #3
      ...als Konsens faße ich dann zusammen:<br>
      <i>Auch bei Paradox 4 Datenbanken verwendet man den Treiber für Paradox 5</i><pre>lConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLED B.4.0;Data Source=" & ADatabase & ";Extended Properties=Paradox 4.x;")
      ->
      lConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLED B.4.0;Data Source=" & ADatabase & ";Extended Properties=Paradox 5.x;")</pre&gt

      Comment

      Working...
      X