Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

In der Abfrage per VBA; CurrentDB.Execute UPDATE, SET und Where-Bedingungen

Begonnen von Viki, Juni 19, 2018, 16:28:48

⏪ vorheriges - nächstes ⏩

MzKlMu

Hallo,
beziehe Dich in der Aktaulisierungabfrage auf die Tabelle.
UPDATE  [AAT-Datenbank] SET Vorname = Null
WHERE DateDiff("yyyy",[Eingangsdatum],Date())+(Format(Date(),"mmdd")
<Format([Eingangsdatum],"mmdd"))>=10
Gruß Klaus

DF6GL

Hallo,

warum liest Du nicht die Postings?



ZitatCurrentDb.Execute "UPDATE tblPatientenBefunde SET [Patient Nachname] = Null,[Patient Vorname] =Null  Where [Befunddatum]<=Dateadd('yyyy',Date(),-10)"

angepasst an Deine verwendeten Namen:


CurrentDb.Execute "UPDATE [AAT Datenbank] SET [Patient Name] = Null,[Patient Vorname] =Null  Where [Eingangsdatum]<=Dateadd('yyyy',Date(),-10)"

Weitere Felder kannst Du sicherlich selbst einfügen.


Die Abfrage zu aktualisieren, geht, wie auch schon gesagt, vermutlich wegen der darin enthaltenen Berechung nicht.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Beaker s.a.

ZitatEs gibt eigentlich nur eine Tabelle mit dem Namen [AAT-Datenbank].
Na, da freuen wir uns schon auf die nächsten Probleme  ;)
Daran musst du arbeiten bevor du weitermachst mit Abfragen und
Formularen, - Stichwort: Normalisierung).
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Viki

Hallo DF6GL,
Zitat von: DF6GL am Juni 20, 2018, 15:13:32
warum liest Du nicht die Postings?
ich lese jedes Wort und Posting.
Ich habe schon auch versucht auf die Tabelle [AAT Datenbank] zu zugreifen und hatte Fehlermeldung. Habe es erneut probiert mit deinem Vorschlag Code:
CurrentDb.Execute "UPDATE [AAT Datenbank] SET [Patient Name] = Null,[Patient Vorname] =Null  Where [Eingangsdatum]<=Dateadd('yyyy',Date(),-10)"

leider wieder Fehlermeldung, habe auch schon Kürzungen des Codes vorgenommen und bekomme den selben Fehler. Die Kürzung sieht so aus.
code]CurrentDb.Execute "UPDATE [AAT Datenbank] SET [Patient Vorname] =Null  Where [Eingangsdatum]<=Dateadd('yyyy',Date(),-10)"[/code]

Die Fehlermeldung lautet: Laufzeitfehler '5':
Ungültiger Prozeduraufruf

Ich habe eine Übersicht der [AAT Datenbank] in der Entwurfsansicht angehangen um sichtbar zu machen, wie viel ungefähr Daten in der Datenbank gespeichert werden, möchte nur daraus Patientenbezogene Daten leeren.

Verstehe nicht weshalb das nicht funktioniert.

VG






DF6GL

Hallo,

dieser Fehler stammt nicht von dem Update-Statement.

Kopiere den String

ZitatCurrentDb.Execute "UPDATE [AAT Datenbank] SET [Patient Name] = Null,[Patient Vorname] =Null  Where [Eingangsdatum]<=Dateadd('yyyy',Date(),-10)"


in das Direktfenster und führe ihn aus.  Prüfe dann das Ergebnis und berichte..

Zur Fehlersuche:

Setz einen Haltepunkt an den Anfang der Prozedur und durchlaufe den Code im Einzelschritt...

Poste die gesamte aktuelle Prozedur mit C&P.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Viki

Hallo DF6GL,
super Tipp.
Habe jetzt in das Direktfenster den von Dir vorgeschlagenen Code eingefügt und die selbe Fehlermeldung bekommen.

ZitatDie Fehlermeldung lautet: Laufzeitfehler '5':
Ungültiger Prozeduraufruf

Dabei ist mir aufgefallen, dass wenn ich im Code anderes Feld z.b. Labornummer angesteuert habe, wurde die Prozedur fehlerfrei ausgeführt und das Feld [Patient Vorname] geleert. Es scheint Problem mit dem Datum zu sein, sobald das Datum angesteuert wird kommt dieser Laufzeitfehler. :(((
Muss man Datum umformatieren oder in dem Code das Datum anders programmieren? Das Datum wird bei mir in der Europäischen Variantenform angezeigt ( 21.06.2018).

Den Haltepunkt habe ich auch gesetzt und beim ersten Einzelschritt tauch der oben genannter Fehler auf.
Ich vermute, dass es mit dem Datum zusammenhängt, denn die anderen Felder scheinen zu funktionieren.

Hätte jemand Ideen?

VG


DF6GL

Hallo,
ja, die Parameter-Reihenfolge für die DateAdd-Funktion  ist verdreht...  :)


ZitatCurrentDb.Execute "UPDATE [AAT Datenbank] SET [Patient Name] = Null,[Patient Vorname] =Null  Where [Eingangsdatum]<=Dateadd('yyyy',-10,Date())"
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Viki

Hallo DF6GL,

war unterwegs und konnte nicht antworten.
Vielen Dank für die Unterstützung, jetzt funktioniert es sowohl über die Abfrage als auch über die Tabelle.

Super, alles gelöst.

VG

Viki

Hallo,

ich habe doch noch eine Kleinigkeit und zwar, wenn bei Hochfahren der Datenbank das Update
ZitatCurrentDb.Execute "UPDATE [AAT Datenbank] SET [Patient Name] = Null,[Patient Vorname] =Null  Where [Eingangsdatum]<=Dateadd('yyyy',-10,Date())"
ausgeführt wird, werden die Felder [Patient Name], [Patient Vorname] geleert aber [Patient Geburtsdatum] nicht, woran kann das liegen? das Feld [Patient Geburtsdatum]  ist auch eine Datumfeld.
Des weiteren beim Hochfahren der Datenbank nach dem leeren (also wo die Felder schon mal leer sind) wird ein Fehler angezeigt :
Laufzeitfehler 3061 "1 Parameter wurde erwartet, aber es wurden zu wenig Parameter übergeben"

Hat das damit zu tun, dass jetzt die Felder leer sind und vorher ein weiterer Code benötigt wird der die leeren Felder ignoriert?
wäre hier eine If-Funktion nötig?
Z.B.

If Not IsNull(Me.BeforeUpdate) Then
Set db = CurrentDb
CurrentDb.Execute "UPDATE [Datenschutz] SET [Patient Nachname] = Null,[Patient Vorname] = Null Where [Eingangsdatum]<=Dateadd('yyyy',-10,Date())"
End If

wäre super wenn jemand eine Idee hätte.

VG


Viki

Hallo,

habe die Ursache gefunden, es war ein Fehler in dem Namensfeld der von mir beschriebenen Fehler verursachte.
Jetzt wird auch das Feld mit der Bezeichnung [Patient Geburtsdatum] geleert und es wird keine If-Funktion für die leeren Felder benötigt.

VG