tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
1684
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    MasterDS MasterDS ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Ort
    Willich (NRW)
    Beiträge
    138
    Hallo!

    Wie schon der Titel verrät, habe ich ein Problem mit dem Update einer DataTable. Diese stammt ursprünglich aus einer Paradox-Datenbank, welche nun aktualisiert werden soll. Es wurden lediglich neue Zeilen eingefügt. Keine Änderungen oder Löschungen.

    Folgender Code:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
    Public Shared Function DBAktualisieren(ByVal DBPfad As String, ByVal Datenbankname As String, ByVal geänderteDT As DataTable) As Boolean
            Dim cnn As OleDb.OleDbConnection = Nothing
            Dim command As OleDb.OleDbCommand
            Dim Adapter As OleDb.OleDbDataAdapter 
            Dim combuilder As OleDb.OleDbCommandBuilder
     
            Try
                cnn = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBPfad & ";Extended Properties=Paradox 5.x;")
                cnn.Open()
                Command = New OleDb.OleDbCommand("SELECT * FROM " & Datenbankname, cnn)
                Adapter = New OleDb.OleDbDataAdapter(Command)
                combuilder = New OleDb.OleDbCommandBuilder(Adapter)
                [COLOR="Red"]Console.WriteLine(combuilder.GetInsertCommand()) [/COLOR]   <-- Testzeile! Aber schon hier tritt der Fehler auf!
                Adapter.Update(geänderteDT)
     
                Return True
            Catch ex As Exception
                Console.WriteLine(ex.Message)
                Log(ex.Message)
                Return False
            Finally
                Adapter.Dispose()
                combuilder = Nothing
                cnn.Close()
            End Try
        End Function

    In der markierten Zeile erhalte ich folgenden Fehler:
    Dynamische SQL-Generierung wird für einen SelectCommand, der keine Basistabelleninformationen zurückgibt, nicht unterstützt.
    Kann mir jemand sagen, was das bedeutet und was ich tun kann?

    Danke vorab.

    MasterDS
     
    Wenn am Anfang alles schief geht, nenne es Version 1.0!
    ----
    REALITY.SYS is corrupt. Reboot universe? (y/n)

  2. #2
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Probier mal:
    Code :
    1
    
    SELECT feld1, feld2, feld3 FROM ....
     

  3. #3
    MasterDS MasterDS ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Ort
    Willich (NRW)
    Beiträge
    138
    Hallo Norbert! Danke für den Tipp, hat aber leider nicht funktioniert.

    Immernoch:
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken VB.NET Fehler beim Update einer DataTable-fehlerprog.jpg  
     
    Wenn am Anfang alles schief geht, nenne es Version 1.0!
    ----
    REALITY.SYS is corrupt. Reboot universe? (y/n)

  4. #4
    MasterDS MasterDS ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Ort
    Willich (NRW)
    Beiträge
    138
    Also ich habe jetzt noch etwas anderes Probiert und bin dem Problem glaube ich etwas näher gekommen.

    Ich habe ausprobiert, ob ich mit einfachen INSERT Statements und anschliessendem "ExecuteNonQuery" weiter komme. Da allerdings erhalte ich die Meldung:
    OleDbException: Operation muss eine aktualisierbare Abfrage verwenden
    Jetzt habe ich über google herausgefunden, dass dies am Primärschlüssel liegen kann, sofern keiner da ist! Und siehe da... In der Datenbank ist kein Primärschlüssel.

    Wie bekomme ich denn jetzt die Daten in die Datenbank, ohne einen Primärschlüssel zu definieren? Ich vermute mal, dass das auch die Ursache beim Commandbuilder war/ist.

    Jemand eine Idee?
     
    Wenn am Anfang alles schief geht, nenne es Version 1.0!
    ----
    REALITY.SYS is corrupt. Reboot universe? (y/n)

  5. #5
    MasterDS MasterDS ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Ort
    Willich (NRW)
    Beiträge
    138
    Für alle die es Interessiert, das Problem ist behoben/umgangen.

    Die ExecuteNonQuery Statements lassen sich nun ausführen. Problem war, dass ich aus Sicherheit die DB vorab in ein anderes Verzeichnis kopiert habe. Allerdings NUR die DB. Nicht die entsprechenden Index-Dateien. So konnte die DB nicht aktualisiert werden. Was immer noch nicht geht, ist die Sache mit dem Commandbuilder. Aber da gehe ich nun halt den umständlichen Weg über einzelne Inserts und Updates. Geht auch, wenn auch nicht soooo ultra performant.

    Trotzdem vielen Dank an diejenigen, die sich mit mir den Kopf zerbrochen haben.

    Schönen Tag noch!
     
    Wenn am Anfang alles schief geht, nenne es Version 1.0!
    ----
    REALITY.SYS is corrupt. Reboot universe? (y/n)

Ähnliche Themen

  1. Fehler beim Update XP Home TO XP Prof
    Von DiWei im Forum Microsoft Windows
    Antworten: 7
    Letzter Beitrag: 14.04.06, 09:47
  2. Antworten: 5
    Letzter Beitrag: 20.02.06, 19:36
  3. MySql - Fehler beim update!
    Von Seven Secrets im Forum PHP
    Antworten: 5
    Letzter Beitrag: 03.12.05, 19:45
  4. Fehler beim MySql Update
    Von Fxice im Forum PHP
    Antworten: 6
    Letzter Beitrag: 25.03.05, 19:42
  5. [c++] fehler beim linken seit update von VC++
    Von Mafutrct im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 11.02.05, 21:51