3 Stimmen

Zeigt an, wie viele Datensätze durch eine Aktualisierungsabfrage aktualisiert wurden

Ist es möglich, einen Bericht über die Datensätze zu erhalten, die mit einer Aktualisierungsabfrage aktualisiert wurden, ohne ein Recordset zu verwenden?

Ex:

sqltext = update table employees set bonus = 0 where salary > 50000 DoCmd.RunSQL sqltext

Ist es möglich, nach der Ausführung dieser Abfrage die Namen der Mitarbeiter zu erhalten, für die diese Aktualisierungsabfrage durchgeführt wurde?

4voto

David-W-Fenton Punkte 22473

Es ist nie eine gute Idee, die DoCmd.RunSQL da es eine Eingabeaufforderung generiert (die Sie abschalten müssen, wenn Sie sie nicht wünschen) und die Aktualisierungen auch dann abschließt, wenn Fehler auftreten, und die Fehler nicht meldet. Viel besser ist es, sie durch eine Funktion zu ersetzen, die das gleiche SQL ausführt:

Public Function SQLRun(strSQL As String) As Boolean
On Error GoTo errHandler

  CurrentDB.Execute strSQL, dbFailOnError
  SQLRun= True

exitRoutine:
  Exit Function

errHandler:
  MsgBox err.Number & ": " & err.Description, vbExclamation, "Error in SQLRun()"
  Resume exitRoutine
End Function

Sobald Sie dies in einem öffentlichen Modul platziert haben, können Sie einfach eine globale Suche und Ersetzung für DoCmd.RunSQL zu ersetzen durch SQLRun .

EDIT: Eine andere Version dieser Funktion, die die Anzahl der betroffenen Datensätze zurückgibt, ist これ .

2voto

Avagut Punkte 854

Ich weiß, es ist eine alte Frage, aber es gab keine Antwort, die direkt die OP Frage beantwortet (ich habe hier über Google Top 3 Ergebnisse beim Versuch, die Syntax zu erinnern) Wenn Sie die Execute-Methode verwenden, können Sie die Anzahl der betroffenen Datensätze direkt ermitteln:

sqltext = "update table employees set bonus = 0 where salary > 50000"
CurrentDb.Execute sqltext
AffectedRows = CurrentDb.RecordsAffected
'Optional Notification
   MsgBox CStr(AffectedRows) & " records were affected by this SQL statement."

1voto

JFV Punkte 1773

Ich sehe zur Zeit keine Möglichkeit, die Informationen zu erhalten, nachdem die Aktualisierungsabfrage gelaufen ist, es sei denn, Sie haben ein anderes Unterscheidungsfeld (vielleicht ein aktualisiertes Datumsfeld). Führen Sie eine Select-Abfrage aus und erstellen Sie einen Bericht auf der Grundlage dieser Daten, DANN führen Sie die Update-Abfrage aus, um die Werte für "Bonus" zu ändern.

Lassen Sie mich wissen, ob das hilft! JFV

0 Stimmen

Ich bin nicht sicher über diese Methode, da es Chancen Aktualisierungen auf bestimmte Datensätze möglicherweise nicht zu haapen, aber sie können durch die Select-Abfrage abgeholt werden

0 Stimmen

Solange die Daten nicht sehr flüchtig sind, sollten "Auswählen" und "Aktualisieren" dieselben Datensätze zurückgeben. Wenn die "Aktualisierung" fehlschlägt, haben Sie möglicherweise andere Probleme mit den Daten.

0 Stimmen

Sie können die Access-Datenbank für den exklusiven Zugriff öffnen, um die Auswahl und Aktualisierung auszuführen, nur um sicherzustellen, dass niemand zwischen den Abfragen in die Datenbank eindringt und Daten ändert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X