Microsoft Excel

Herbers Excel/VBA-Archiv

ADODB INSERT oder UPDATE, das ist die Frage



Excel-Version: 9.0 (Office 2000)

Betrifft: ADODB INSERT oder UPDATE, das ist die Frage
von: Christian
Geschrieben am: 03.09.2002 - 03:14:08

Hallo,
ich möchte möglichst schnell von einer mittleren Anzahl von Feldern die Daten in eine Datenbank schaffen.
Nun weiß ich vorher nicht, ob der Datensatz bereits existiert, oder nicht. Wenn es ihn schon gibt, dann soll er nur per UPDATE geändert werden, wenn nicht dann per INSERT erstellt.

Wie ist nun die eleganteste Methode rauszufinden ob eine Wert bereits in der Tabelle ist. Eine Insert Anweisung und bei einem Fehler (da Primärschlüssel) eine Update Anweisung ginge, ist aber sehr unsauber, da nach einmaligen Nutzen ja praktisch bis auf wenige Ausnahmen (neue Daten) alle alten Daten Fehler verursachen würden.

Die UPDATE Anweisung einfach auf Verdacht laufen zu lassen, und bei 0 betroffenen Zeilen einen Insert zu machen, geht auch nicht, da leider nur die wirklich geänderten Zeilen gezählt werden, also bei vorhandenen Daten aber keinen Unterschieden eine 0 für die geänderten Zeilen zurück gegeben wird. Und dann ein Insert soll natürlich nicht sein.

Also hier nochmal der Code(gekürzt, normalerweise Arrays vorhanden), und die Frage ist ganz kurz formuliert, wie weiß ich am besten ob UPDATE oder INSERT

Klappt NICHT :

For i = 0 To 50
SQL_Befehl = "UPDATE Produktdaten SET Datum='1999-01-01' WHERE Feld='Einkauf'"
conn.Execute (SQL_Befehl), Affected_Rows

If (Affected_Rows < 1) Then
SQL_Befehl = "INSERT INTO Produktdaten VALUES ('Einkauf',1999-01-01)"
conn.Execute (SQL_Befehl)
End If

Also, wer weiß Rat ??

  

Re: ADODB INSERT oder UPDATE, das ist die Frage
von: Kai
Geschrieben am: 03.09.2002 - 09:51:40

Abgesehen davon, dass man vor dem UPDATE/INSERT einen SELECT absetzen kann und sich dann entscheidet wie es weitergeht, gibt es natürlich auch noch diesen Weg:

Einen ADO-recordset mit dem entsprechenden SELECT befüllen.
Falls der Recordcount=0 ist einen ADDNEW machen.
Danach, unabhängig von INSERT/UPDATE die entprechenden Werte in die Felder schreiben.

Hilft das ?

Kai

  

Re: ADODB INSERT oder UPDATE, das ist die Frage
von: Christian
Geschrieben am: 03.09.2002 - 12:23:08

Ja, das ist eine Idee.
Das Problem an den Einzelselects ist einfach das es zu lange dauert.
Also Selectiere ich einfach alles und Prüfe dann lokal ob das Feld bereits existiert oder nicht.

Hab noch eine allgemeine Frage zu Recordsets, aber dafür mache ich einen neuen Thread auf.

Danke