Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Pert am Februar 17, 2014, 16:30:46

Titel: Datum in Tabelle schreiben
Beitrag von: Pert am Februar 17, 2014, 16:30:46
Liebe Leute,

bin blutiger Anfänger in VBA und trau mich nun doch hier eine Frage zu stellen:
Wie bekomme ich es hin das nach dem ausführen eines Berichts in einer Tabelle ein Datumsfeld mit dem Aktuellen Datum befüllt wird?

Ich führe den Bericht aus und bekomme es, mit einer Abfrage, auch hin dass der Datensatz auf erledigt gestellt wird ( false/true) nur wir ich in ein Feld das Datum schreiben soll behirn ich einfach nicht.

Bin für jeden Tipp dankbar. Ich glaub ich brauch einen Stoß in die richtige Richtung.
Titel: Re: Datum in Tabelle schreiben
Beitrag von: Hondo am Februar 17, 2014, 16:44:04
Hallo,
dazu musst du im entsprechenden Ereignis des Berichtes eine Aktualisierungs-Abfrage starten:
CurrentDB.Execute "Update TabelleXY set Datumfeld = '" & now() & "' Where Kriterium"
Beachte die einfachen Hochkommatas.
Kriteriumkönnten z.B. der Bezug auf einen bestimmten ID o.ä. sein.

Gruß Andreas
Titel: Re: Datum in Tabelle schreiben
Beitrag von: Pert am Februar 17, 2014, 17:14:28
Hallo Hondo,
Danke das Du Dich mit einem dau abgibst.
Ich habe das jetzt schon Probiert:
CurrentDb.Execute "Update tblBeratungstermin set berterm_verrechnet_am = '" & Now() & "' Where fir_id = Me!fir_id"
Aber hier ist noch ein Grundsätzlicher Hund drinnen:
zu wenig Parameter. Ich denke schon das ich was prinzipielles nicht behirne.
Kannst Du mir sagen was?
DAAANK
Titel: Re: Datum in Tabelle schreiben
Beitrag von: Hondo am Februar 17, 2014, 17:45:21
Ist halt falsch. Verweise auf Steuerelemente oder Variablen gehören nicht in den String hinein sondern eingebunden:
CurrentDb.Execute "Update tblBeratungstermin set berterm_verrechnet_am = '" & Now() & "' Where fir_id = " & Me!fir_id

Gruß Andreas
Titel: Re: Datum in Tabelle schreiben
Beitrag von: DF6GL am Februar 17, 2014, 18:13:51
Hallo,


kleine Korrektur:

CurrentDb.Execute "Update tblBeratungstermin set berterm_verrechnet_am = " & Format(Date,"\#yyyy-mm-dd\#")  & " Where fir_id = " & Me!fir_id


@Hondo:

Backslash scheinen zu "verschwinden", was gar nicht gut ist...

Format(Date,"\#yyyy-mm-dd\#") 


oder

CurrentDb.Execute "Update tblBeratungstermin set berterm_verrechnet_am = Date()  Where fir_id = " & Me!fir_id

wenn "fir_id" in der Tabelle den Datentyp "Autowert", bzw, "Zahl, Long" besitzt


Achtung: vor den "#"_Zeichen muss jeweils ein Backslash stehen!
Titel: Re: Datum in Tabelle schreiben
Beitrag von: Pert am Februar 17, 2014, 18:22:40
Vielen Dank an alle.
Werde das morgen alles mal ausprobieren hoffe ich komm drauf.
Schönen Abend
Titel: Re: Datum in Tabelle schreiben
Beitrag von: Hondo am Februar 17, 2014, 22:09:48
Äh, welche Backslashes?
Ah, in der Zusammenfassung beim schreiben eines neuen Posts werden sie angezeigt.
Seltsam.
\**\
\**\
\**\
AHA, bei mehreren Codeblöcken werden Backslashes nur im letzten angezeigt.
Andreas
Titel: Re: Datum in Tabelle schreiben
Beitrag von: Pert am Februar 18, 2014, 08:37:09
Habe leider immer noch Probleme damit:
CurrentDb.Execute "Update tblBeratungstermin set berterm_verrechnet_am = " & Format(Date, "\#yyyy-mm-dd#\") & " Where fir_id = " & Me!fir_id
Fehler:
1 Parameter wurde erwartet es wurden zu wenig Parameter eingegeben.
Sehe einfach meine Fehler nicht.
Kann mir bitte nochmal wer eine Stoß geben?
Danke
Titel: Re: Datum in Tabelle schreiben
Beitrag von: DF6GL am Februar 18, 2014, 09:03:01
Hallo,

kontrolliere, ob die angegebenen Felder (in der Tabelle als auch im Formular) vorhanden sind/existieren  und Werte besitzen (speziell das Formular-Feld "Fir_id").


Titel: Re: Datum in Tabelle schreiben
Beitrag von: ebs17 am Februar 18, 2014, 09:26:34
Zitatbin blutiger Anfänger in VBA

Nicht nur für Anfänger ist es fehleranfällig, SQL-Anweisungen per VBA zusammenzusetzen. Es empfiehlt sich daher, das Zusammensetzen erst in einer Stringvariable vorzunehmen. Somit kann man vor Ausführen der Anweisung diese erst in das Direktfenster (Strg + G) ausgeben, dort betrachten und prüfen (bei Kenntnis gültiger Syntax) oder gar den Ausgabestring als neue Abfrage zu testen bei dann besseren Fehlermeldungen.
Dim sSQL As String
sSQL = "UPDATE tblBeratungstermin SET berterm_verrechnet_am = Date() WHERE fir_id = " & Me!fir_id
Debug.Print sSQL       ' Ausgabe in Direktfenster
CurrentDb.Execute sSQL, dbFailOnError


Anmerkungen dazu:
VBA-Funktionen ohne "äußere Parameter" können direkt von der Jet-Engine ausgewertet werden und somit im String stehen. Das erspart dann die manchmal durchaus problematische datentypbedingte Formatierung:
Format(Date, "\#yyyy-mm-dd#\")

Der Backslash müsste zum Maskieren der Raute vor ihr stehen. So wirkt er als eigenes Zeichen und verändert das Format zu etwas nicht Auswertbarem.

fir_id wird bei obiger Anweisung sowohl in Tabelle als  auch im Formulartextfeld als Ganzzahl (Long) erwartet.
Titel: Re: Datum in Tabelle schreiben
Beitrag von: Pert am Februar 18, 2014, 09:46:04
Ich möchte mich bei allen herzlich bedanken.
Habe den Fehler (diesmal) gefunden, war echt zu doof die fir_id auch im Formular zu haben.

Da sieht man gleich dass ich mich erst mal in die Materie einarbeiten muss, wird wohl ein Zeitchen dauern bis ich hier klar komme.
Habe mir zwar das Buch "Access 2010 VBA-Programmierung" von Lorenz Hölscher angeschafft, komme aber gar nicht damit klar, bezw. bin vielleicht zu ungeduldig.
Habt Ihr VBA eigentlich in der Schule gelernt, oder Euch selbst bei gebracht?
Kann man sich das ohne Hilfe überhaupt aneignen?

Schönen Tag an alle.
Titel: Re: Datum in Tabelle schreiben
Beitrag von: DF6GL am Februar 18, 2014, 13:39:56
Hallo,

@ebs:   Mit der Darstellung der Backslashes gibt(gab) es hier Probleme insofern, als dass die Dinger trotz Vorhandensein im Posting nicht angezeigt wurden.....Siehe ein paar zurückliegende Beiträge...