Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

SQL-UPDATE Query mit VBA ausführen

Forumthread: SQL-UPDATE Query mit VBA ausführen

SQL-UPDATE Query mit VBA ausführen
07.10.2003 15:00:15
Andreas
Was muss ich am folgenden Code ändern, damit der UPDATE-SQL-Query ausgeführt wird? Mit "Set rs = Db.OpenRecordset(SQL, dbOpenDynaset)" komme ich nicht weiter, aber auch stundenlanges Googeln hat nicht weitergeholfen. Vielleicht kann einer von euch helfen? Danke!

Public

Sub UpdateDB()
Dim SQL As String
lastrow = Cells.SpecialCells(xlCellTypeLastCell).Row
'Datenbank öffnen
Set Db = DBEngine.OpenDatabase("D:\Documents and Settings\Aemmert\My Documents\SQL-Access-Excel ODBC Test\Access Testdatenbank.mdb", False, False)
For i = 2 To lastrow
'Datensatz suchen
SQL = "UPDATE Bestellungen Bestellungen SET Bestellungen.Frachtkosten = '" & Cells(i, 2) & "', Bestellungen.Umsatzsteuersatz = '" & Cells(i, 3) & "' WHERE Bestellungen.Bestellnr = '" & Cells(i, 1) & "'"
Set rs = Db.OpenRecordset(SQL, dbOpenDynaset)
Next i
Db.Close
End Sub

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SQL-UPDATE Query mit VBA ausführen
07.10.2003 16:26:45
Karl-Otto Reimann
Hallo Andreas
Ist Deine DAO-Bibliothek verfügbar?
(Im VBA-Editor unter Extras/Verweise
"Microsoft DAO 3.6 Object Library" ein Häkchen setzen)
Gruß KO
AW: SQL-UPDATE Query mit VBA ausführen
07.10.2003 16:34:46
Andreas
Ja, die DAO Bibliothek habe ich offen. Habe sowohl die DAO Objects 3.x sowie die MS Activex DO Library 2.x offen.
AW: SQL-UPDATE Query mit VBA ausführen
07.10.2003 17:09:25
Karl-Otto Reimann
Bei mir funktioniert folgendes:


Sub DAO_Findv()
' Bestimmung aller Bestellungen der Fa. VICTE
' (vorwärts suchen)
Dim db As Database
Dim rs As Recordset
Dim knopf As Integer, anz As Integer
Dim pfad As String
pfad = "C:\VBA_Krs\"
Set db = OpenDatabase(pfad & "Bestell.mdb")
Set rs = db.OpenRecordset("Bestellungen", _
dbOpenSnapshot)
rs.FindFirst "[Kunden-Code]='VICTE'"
anz = 1
Do Until rs.NoMatch
knopf = MsgBox(Prompt:= _
rs.Fields("Bestell-Nr") _
& " " & rs.Fields("Kunden-Code") _
& " " & rs.Fields("Bestelldatum") _
& vbNewLine & "anz = " & anz, _
Buttons:=vbOKCancel)
If knopf = vbCancel Then Exit Do
rs.FindNext "[Kunden-Code]='VICTE'"
anz = anz + 1
Loop
rs.Close
db.Close
End Sub


Noch Fragen?
mfG KO
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

SQL-UPDATE Query mit VBA ausführen


Schritt-für-Schritt-Anleitung

Um einen SQL-UPDATE Query mit VBA auszuführen, folge diesen Schritten:

  1. Öffne den VBA-Editor in Excel (Alt + F11).

  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).

  3. Kopiere den folgenden Code in das Modul:

    Sub UpdateDB()
       Dim SQL As String
       Dim lastrow As Long
       Dim Db As Database
       Dim rs As Recordset
    
       lastrow = Cells.SpecialCells(xlCellTypeLastCell).Row
       'Datenbank öffnen
       Set Db = DBEngine.OpenDatabase("D:\Dein\Pfad\Zur\Datenbank.mdb", False, False)
    
       For i = 2 To lastrow
           'Datensatz suchen
           SQL = "UPDATE Bestellungen SET Frachtkosten = '" & Cells(i, 2) & "', Umsatzsteuersatz = '" & Cells(i, 3) & "' WHERE Bestellnr = '" & Cells(i, 1) & "'"
           Db.Execute SQL  ' Verwende Db.Execute für SQL-Updates
       Next i
    
       Db.Close
    End Sub
  4. Passe den Pfad zur Datenbank an und stelle sicher, dass die DAO-Bibliothek aktiviert ist (Extras > Verweise > "Microsoft DAO 3.6 Object Library").

  5. Führe das Skript aus, um die Updates in der Access-Datenbank vorzunehmen.


Häufige Fehler und Lösungen

  • Fehler: "Unrecognized database format"

    • Lösung: Überprüfe, ob der Pfad zur Datenbank korrekt ist und die Datei tatsächlich existiert.
  • Fehler bei der Ausführung des SQL-Statements

    • Lösung: Stelle sicher, dass das SQL-Statement korrekt formuliert ist. Nutze Db.Execute SQL, anstatt ein Recordset zu öffnen.
  • DAO-Bibliothek nicht verfügbar

    • Lösung: Aktiviere die DAO-Bibliothek in den Verweisen des VBA-Editors.

Alternative Methoden

Falls du keine VBA-Lösung verwenden möchtest, kannst du auch Access selbst nutzen, um SQL-Updates durchzuführen. Hierzu:

  1. Öffne Access und lade die entsprechende Datenbank.
  2. Gehe auf die Registerkarte "Erstellen" und wähle "Abfrage-Design".
  3. Füge die Tabelle hinzu, die du aktualisieren möchtest.
  4. Wähle "Abfrage" > "Update-Abfrage".
  5. Formuliere dein Update-Statement und führe die Abfrage aus.

Praktische Beispiele

Hier ist ein Beispiel für eine SQL-UPDATE-Anweisung, die du in deinem VBA-Code verwenden kannst:

SQL = "UPDATE Bestellungen SET Frachtkosten = 5.99, Umsatzsteuersatz = 19 WHERE Bestellnr = '1001'"

Diese Anweisung aktualisiert die Frachtkosten und den Umsatzsteuersatz für die Bestellung mit der Bestellnummer '1001'.


Tipps für Profis

  • Nutze Transaktionen, um mehrere Updates gleichzeitig durchzuführen und die Datenintegrität zu gewährleisten. Beispiel:

    Db.BeginTrans
    'Update-Statements
    Db.CommitTrans
  • Verwende Parameterabfragen, um SQL-Injection zu vermeiden und die Performance zu verbessern.

  • Teste deine SQL-Statements in der Access-Abfrageumgebung, bevor du sie im VBA-Code implementierst.


FAQ: Häufige Fragen

1. Wie kann ich die Anzahl der aktualisierten Datensätze ermitteln?
Du kannst die von Db.Execute zurückgegebene Zahl nutzen, um die Anzahl der betroffenen Datensätze zu ermitteln.

2. Ist es möglich, ein Update in Excel durchzuführen und gleichzeitig in Access zu speichern?
Ja, mit der richtigen ODBC-Verbindung kannst du ein Excel-Update direkt in eine Access-Datenbank speichern. Stelle sicher, dass die Verbindung korrekt eingerichtet ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige