collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 85
  • Punkt Versteckte: 1
  • Punkt Mitglieder: 3
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13972
  • stats Beiträge insgesamt: 66528
  • stats Themen insgesamt: 8970
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: In der Abfrage per VBA; CurrentDB.Execute UPDATE, SET und Where-Bedingungen  (Gelesen 345 mal)

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7283
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
 

Online DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23340
Hallo,

warum liest Du nicht die Postings?



Zitat
CurrentDb.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.
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1788
Zitat
Es 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).
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 
Folgende Mitglieder bedankten sich: Viki

Offline Viki

  • Newbie
  • Beiträge: 17
Hallo DF6GL,
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
 




 

Online DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23340
Hallo,

dieser Fehler stammt nicht von dem Update-Statement.

Kopiere den String

Zitat
CurrentDb.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.
 

Offline Viki

  • Newbie
  • Beiträge: 17
Hallo DF6GL,
super Tipp.
Habe jetzt in das Direktfenster den von Dir vorgeschlagenen Code eingefügt und die selbe Fehlermeldung bekommen.

Zitat
Die 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

 

Online DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23340
Hallo,
ja, die Parameter-Reihenfolge für die DateAdd-Funktion  ist verdreht...  :)


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

Offline Viki

  • Newbie
  • Beiträge: 17
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
 

Offline Viki

  • Newbie
  • Beiträge: 17
Hallo,

ich habe doch noch eine Kleinigkeit und zwar, wenn bei Hochfahren der Datenbank das Update
Zitat
CurrentDb.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

 

Offline Viki

  • Newbie
  • Beiträge: 17
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