Announcement

Collapse
No announcement yet.

DataSet mit oleDataAdapter füllen

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

  • DataSet mit oleDataAdapter füllen

    Moin, moin!

    Ich sehe offenbar den Wald vor lauter Bäumen nicht :-)

    Folgender Code:
    Code:
    Dim file As String = "C:\test\Kunden.dbf"
    Dim filePath As String = IO.Path.GetDirectoryName(file)
    
    Dim ConnString As String = "Provider=VFPOLEDB.1;Data Source=" & filePath & _
                               ";Mode=ReadWrite|Share Deny None"
    Dim conn As New OleDbConnection(ConnString)
    conn.Open()
    
    Dim cmdString As String = "select * from Kunden"
    
    ' Test, ob die connection wirklich offen und lesbar ist
    Dim cmd As New OleDbCommand(cmdString, conn)
    Dim reader As OleDbDataReader = cmd.ExecuteReader()
    While reader.Read()
        Console.WriteLine(reader.Item(0).ToString)
    End While
    reader.Close()
    ' Test ende
    
    Dim adapter As New OleDbDataAdapter(cmdString, conn)
    Dim customers As DataSet = New DataSet
    adapter.Fill(customers, "Kunden")
    
    conn.Close()
    Der kleine Test in der Mitte läuft wunderbar und spuckt eine kleinen Teil der Daten aus.

    Aber bei Adapter.Fill erhalte ich den Fehler:

    Anbieter konnte den Object-Wert nicht ermitteln. Zum Beispiel: die Zeile wurde gerade erstellt,
    der Standard für die Object-Spalte nicht verfügbar und der Consumer hat noch keinen neuen Object-Wert gesetzt.
    Mir sagt diese Meldung leider garnichts. Die Tabelle ist vorhanden, und kann gelesen werden. Sie ist von niemand anderem geöffnet, liegt einfach nur als Datei herum :-)

    Wer zeigt mir einen Weg durch den Wald?

    Danke fürs Lesen, Uwe

  • #2
    Moin, moin!

    Hat denn wirklich niemand eine Idee?

    Ich habe inzwischen heraus gefunden, dass die Testroutine mit dem Reader nur zufällig korrekte Daten ausgibt, weil hier das erste Feld (.item(0)) abgefragt wird. Alle weitere Felder (item(1), item(2) ...) liefern nur leere Strings oder garnichts.

    Wenn ich in cmdstring den "*" durch korrekte Feldnamen ersetze tritt der Fehler nicht auf. Aber auch dann wird nur für das erste Feld korrekte Daten abgeliefert. Alle anderen Felder enthalten auch hier nur leere Strings oder nichts.

    Außerdem habe ich die Tabellen mit DBF2XML und anderen Tools von www.whitetown.com untersucht. Diese halten die Tabellen für Visual Fox Pro Tabellen und geben korrekte Werte aus.

    Aber der Header der Dateien ist schon seltsam, sie beginnen alle mit dem magic bytes "31 0B".

    Comment


    • #3
      Völlig ins Blaue, geht das:

      [highlight=vba]
      adapter.Fill(customers, "SELECT * FROM Kunden")
      [/highlight]


      P.S. Aus gegebenem Anlaß (bei mir): für wie zukunfstssicher haltet Ihr Foxpro?


      Grüße
      Tino
      Ich habs gleich!
      ... sagte der Programmierer.

      Comment


      • #4
        Originally posted by tinof View Post
        P.S. Aus gegebenem Anlaß (bei mir): für wie zukunfstssicher haltet Ihr Foxpro?
        Die Antwort hat Microsoft vor 4 1/2 Jahren gegeben: Aus für FoxPro

        Comment


        • #5
          Wenn die dbf Struktur merkwürdig erscheint solltest du vielleicht einfach mal einen anderen Provider ausprobieren? Zum Beispiel einfach mal Microsoft.Jet OLEDB Provider anstatt den von FoxPro.

          Comment


          • #6
            Originally posted by tinof View Post
            Völlig ins Blaue, geht das:

            [highlight=vba]
            adapter.Fill(customers, "SELECT * FROM Kunden")
            [/highlight]
            Tja, was soll ich sagen ... Probiert hab ichs, aber das Ergebnis bleibt da selbe:
            Anbieter konnte den Object-Wert nicht ermitteln.
            Trotzdem, danke für den Tipp.

            Comment

            Working...
            X