Shadowblade Geschrieben 2. Juni 2003 Teilen Geschrieben 2. Juni 2003 Folgendes Problem: Ich will in eine Paradox Tabelle Datensätze per INSERT in einer Schleife einfügen. Der erste Datensatz wird noch korrekt eingetragen, beim zweiten Durchlauf oder wenn allgemein bereits etwas in der Tabelle steht, erhalte ich beim Ausführen des INSERTS die Fehlermeldung "Operation muss eine aktualisierbare Abfrage verwenden". Der Quellcode sieht etwa so aus: // recordset und connection objekt einstellen i = 0 Do While i < 5 rsRecParadox2.Open "INSERT INTO test VALUES (" & i & ")", cnConParadox i = i + 1 Loop Ich kann mit der Fehlermeldung leider überhaupt nichts anfangen, wäre echt super wenn mir hier jemand weiterhelfen könnte Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 2. Juni 2003 Teilen Geschrieben 2. Juni 2003 Ich habe zwar noch nicht mit Paradox gearbeitet, aber kann es sein, dass Du vor jedem INSERT eine neue Connection (nicht zur DB, nur Aktualisierung der Verbindung) brauchst? Ich könnte mir vorstellen, dass nach dem ersten INSERT die Daten aktualisiert werden müssen. Peter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Shadowblade Geschrieben 2. Juni 2003 Autor Teilen Geschrieben 2. Juni 2003 Du meinst also dass ich die Verbindung schließen und wieder öffnen soll? Klappt so leider auch nicht Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 2. Juni 2003 Teilen Geschrieben 2. Juni 2003 Naja, nicht nochmal öffnen, nur aktualisieren. Aber wenn das eh nicht geht. Sorry, dann hab ich keine Hilfe für Dich. Peter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pointerman Geschrieben 2. Juni 2003 Teilen Geschrieben 2. Juni 2003 Hi! Du hast nicht geschrieben, mit was Du auf die Paradox-DB zugreifst. Bei Delphi muss ich da immer noch ein Post hinterher schicken, vielleicht gibt es sowas ja auch bei deiner Sprache/Komponente. Weitere Infos wären hilfreich. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Shadowblade Geschrieben 2. Juni 2003 Autor Teilen Geschrieben 2. Juni 2003 Mit VisualBasic greif ich darauf zu. Genauer die Verbindung zur Datenbank bau ich folgendermaßen auf: Dim cnConParadox As ADODB.Connection Set cnConParadox = New ADODB.Connection sPathToDB = txtParadoxPfad.Text cnConParadox.Mode = adModeShareDenyNone cnConParadox.CursorLocation = adUseClient cnConParadox.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sPathToDB & ";" & _ "Jet OLEDB:Engine Type=" & JET_ENGINETYPE_PARADOX4X & ";" & _ "User ID=;Password=;" cnConParadox.Open und dann halt der bereits gepostete Code Lesen kann ich aus der DB, aber halt keine Datensätze hinzufügen wenn scho was in der Paradoxtabelle steht Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pointerman Geschrieben 3. Juni 2003 Teilen Geschrieben 3. Juni 2003 Moin! Ich habe/kann kein VB, aber ich habe mir mal im Netz ein paar Beispiele angeguckt und es scheint mir, daß Du vergessen hast vor dem Schreiben den Datensatz mit der Methode AddNew anzulegen. Eigentlich sollte das ja bei INSERT automatisch passieren, aber man kann ja nie Wissen... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Shadowblade Geschrieben 3. Juni 2003 Autor Teilen Geschrieben 3. Juni 2003 Und wo find ich so ein Beispiel mit AddNew? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pointerman Geschrieben 3. Juni 2003 Teilen Geschrieben 3. Juni 2003 Beispiele findest Du hierhttp://homepages.compuserve.de/DiplPackulat/ADOdat.htm#ADO Datenbank Beispiel und ganz genau dann hier: http://homepages.compuserve.de/DiplPackulat/ADOdat.htm#Programmcode unter dem Punkt "Neuen Datensatz anlegen". Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 3. Juni 2003 Teilen Geschrieben 3. Juni 2003 Original geschrieben von Shadowblade erhalte ich beim Ausführen des INSERTS die Fehlermeldung "Operation muss eine aktualisierbare Abfrage verwenden". Die Fehlermeldung besagt normalerweise, das die Abfrage die angegeben ist nicht aktualisiert werden kann. (irgendwie klar, oder ) Was heisst das auf deutsch? Eine Abfrage kann nur dann aktualisiert werden, wenn klar ist welche Datei geändert werden soll. Es darf also nur eine Tabelle in der Abfrage enthalten sein. Keine Joins o.ä. Das das ganze aber bei einem INSERT auftritt kapier ich auch nicht so ganze... Hängt vielleicht irgendein Ereignis an deiner Komponente? Ist das der ganze Code? Der eigentliche Fehler tritt vielleicht ganz woanders auf. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Shadowblade Geschrieben 3. Juni 2003 Autor Teilen Geschrieben 3. Juni 2003 Ja der Fehler tritt nur bei diesem Insert auf, normale Select-Befehle laufen ganz normal. Das ist natürlich nicht der komplette Code, nur die Abschnitte die für das Schreiben relevant sind. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
denti Geschrieben 3. Juni 2003 Teilen Geschrieben 3. Juni 2003 Original geschrieben von Shadowblade Ja der Fehler tritt nur bei diesem Insert auf, normale Select-Befehle laufen ganz normal. Das ist natürlich nicht der komplette Code, nur die Abschnitte die für das Schreiben relevant sind. also is ja lange her, dass ich mit vb und ado auf datenbanken zugegriffen hab, aber irgendwie kommt mir das komisch vor, die open-methode von nem recordset zu benutzen, um datensätze einzufügen. also ich hab immer die execute-methode vom connection-objekt benutzt. ich mein, wofür brauchssu auch n recordset beim einfügen... noch dazu in ner schleife? also ein weg wäre dann ungefähr folgender: cnConParadox.Execute("INSERT INTO test VALUES (" & i & ")") <oder so> noch sinnvoller erscheint natürlich ein prepared statement, aber da müsst ich nu noch mehr überlegen, wie das ging. ich glaub, da erstellt man ein command-object, bestückt das innerhalb der schleife mit parametern und ruft *dessen* execute-methode auf. wie gesacht, is lange her. gruss, dent Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Shadowblade Geschrieben 4. Juni 2003 Autor Teilen Geschrieben 4. Juni 2003 Also danke für dich vielen Tipps, auch wenn's nicht funktioniert hat ;-) Ich hab die Paradox-DB jetzt einfach ins DBase Format umgewandelt und so klappts jetzt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.