Hi,
ich habe zwei Probleme.
Das erste: ich habe zwei spalten im formular, sagen wir a und b. es sind beide datumsfelder. das datum für a wird aus einer excel tabelle über eine abfrage importiert. in b möchte ich das importdatum haben.
habe versucht es so zu lösen:
Private Sub a_Change()
Me.b = Now()
End Sub
klappt leider nicht. wenn ich das datum in a Händisch eingebe klappt es. Bei einem Import leider nicht.
Das zweite: ich habe ein button auf dem formular, welches bei klicken abfragen durchführt. ich möchte dass das Datum beim klicken in einem textfeld gezeigt wird.
Meine Lösung:
Private Sub Befehl36_Click()
textfeld = Now()
End Sub
klappt auch. Nur nach dem schliessen und öffnen ist das Datum weg.
Vielen Dank
Hallo,
Deine Probleme sind mit den vorgestellten Methoden nicht zu lösen.
1) ein Import findet in (nach) Tabellen statt und nicht in Formularen.
2) Wenn das Importdatum auch mit importiert werden soll, dann muss entweder in der XLS-Liste das akt. Datum in einer weiteren Spalte stehen, oder wenn mit expliziter Insert-Abfrage gearbeitet wird, muss das akt. Datum eben dort mit aufgenommen werden. Alternativ könnte direkt nach dem Import das Importdatum mit Hilfe einer Aktualisierungsabfrage in die Tabelle geschrieben werden.
3) "Nur nach dem schliessen und öffnen ist das Datum weg. " Das ist nicht verwunderlich, denn es wird ja nur "angezeigt" und nicht "gespeichert." , wenn das Textfeld nicht an ein Tabellenfeld gebunden ist. Wenn in einem Textfeld lediglich immer das akt. DAtum nur angezeigt werden soll, dann schreib einfach in den Steuerelementinhalt des Textfeldes =Datum() hinein.
zu 3): es soll nicht das aktuelle datum im textfeld stehen. sondern das datum wo ich auf das button gedrückt habe
zu 2): das importdatum soll nicht importiert werden. habe mir das so vorgestellt dass das datum automatisch gesetzt wird
Hallo,
zu 3:
Wenn es nur darum geht zu sehen, wann das letzte mal auf den Button geklickt wurde, kannst du das mittels eines Bezeichnungsfeldes (Label) lösen.
Erstelle auf deinem Formular ein Bezeichnungsfeld und nenne es lblLetzterKlick, als Inhalt machst du einfach einen Punkt.
Im Ereignis 'Beim Klicken' des Button nimmst du am Ende des vorhandenen Codes - also unmittelbar vor 'End Sub' - zusätzlich folgende Zeile auf:
Me.lblLetzterKlick.Caption = "Letzte Aktion: " & Date()
Das Bezeichnungsfeld stellst du in die Nähe des Button ... vllt darüber und passt die Breite von dem Ding so an dass der gesamte Text angezeigt werden kann.
Der Inhalt des Bezeichnungsfeldes ändert sich nun beim Schließen nicht mehr und wird so lange angezeigt, bis du wieder auf den Button klickst.
Nachtrag:
zu 2:
Zitathabe mir das so vorgestellt dass das datum automatisch gesetzt wird
Ich gehe davon aus, dass deine Tabelle, in die du die Daten von Excel IMPORTIERST, bereits ein Feld besitzt, in der das Importdatum stehen soll.
Dann setze für dieses Feld als Standardwert '=Datum()'
So wird für jeden neuen Datensatz in dieses Feld automatisch das aktuelle Tagesdatum eingetragen.
Zitat von: database am Juli 16, 2013, 13:23:57
Hallo,
zu 3:
Wenn es nur darum geht zu sehen, wann das letzte mal auf den Button geklickt wurde, kannst du das mittels eines Bezeichnungsfeldes (Label) lösen.
Erstelle auf deinem Formular ein Bezeichnungsfeld und nenne es lblLetzterKlick, als Inhalt machst du einfach einen Punkt.
Im Ereignis 'Beim Klicken' des Button nimmst du am Ende des vorhandenen Codes - also unmittelbar vor 'End Sub' - zusätzlich folgende Zeile auf:
Me.lblLetzterKlick.Caption = "Letzte Aktion: " & Date()
Das Bezeichnungsfeld stellst du in die Nähe des Button ... vllt darüber und passt die Breite von dem Ding so an dass der gesamte Text angezeigt werden kann.
Der Inhalt des Bezeichnungsfeldes ändert sich nun beim Schließen nicht mehr und wird so lange angezeigt, bis du wieder auf den Button klickst.
Nachtrag:
zu 2:
Zitathabe mir das so vorgestellt dass das datum automatisch gesetzt wird
Ich gehe davon aus, dass deine Tabelle, in die du die Daten von Excel IMPORTIERST, bereits ein Feld besitzt, in der das Importdatum stehen soll.
Dann setze für dieses Feld als Standardwert '=Datum()'
So wird für jeden neuen Datensatz in dieses Feld automatisch das aktuelle Tagesdatum eingetragen.
Nach schliessen und öffnen ist das datum wieder weg
zu 2: dann werden doch ältere datensätze die bereits einen importdatum haben durch das heutige ersetzt oder nicht?
Hi,
ZitatNach schliessen und öffnen ist das datum wieder weg
Upsala, mein Fehler ... die Caption eines Bezeichnungsfeldes kann nur im Entwurf dauerhaft gespeichert werden.
Aber nicht so schlimm, da gibt es Abhilfe.
Am Besten wird sein, du erstellst dir eine neue Tabelle mit nur einem Feld,
das benennst du 'ImportDat' und verpasst diesem den Felddatentyp Datum/Uhrzeit, den Primärschlüssel,
den Access beim Erstellen der neuen Tabelle eingetragen hat schmeißt du raus
und trägst danach irgend ein Datum ein - egal welches - nur nicht das heutige ;)
Danach änderst du deinen Code für den Buttonklick nochmal und zwar :
Titel = Nz(InputBox("Berichtstitel: "), "")
stDocName = "Bericht1"
If Len(Titel) Then
DoCmd.OpenReport stDocName, acPreview, , , , Titel
End If
CurrentDb.Execute "UPDATE DeineNeueTabelle SET ImportDat=" & Format(Date, "\#yyyy\-mm\-dd\#")
Me.lblLetzterKlick.Caption = "Letzte Aktion: " & DLookup("ImportDat", "DeineNeueTabelle")
Zusätzlich verpasst du dem Ereignis 'Beim Öffnen' des Formulars die folgende Zeile:
Private Sub Form_Open(Cancel As Integer)
Me.lblLetzterKlick.Caption = "Letzte Aktion: " & DLookup("ImportDat", "DeineNeueTabelle")
End Sub
So und jetzt sollte das so laufen wie du das wolltest ;D
Zitatzu 2: dann werden doch ältere datensätze die bereits einen importdatum haben durch das heutige ersetzt oder nicht?
An sich eigentlich nicht, da der Standardwert immer nur für neue Datensätze herangezogen wird.
Bestehende Datensätze werden dadurch nicht geändert.
Wenn durch die Abfrage die neuen Datensätze nur an die bestehenden ANGEHÄNGT werden darf keine alter Importdatumswert geändert werden.
Das Importdatum wird auch dann nicht geändert wenn die bestehenden durch eine Aktualisierungsabfrage geändert werden - vorausgesetzt, das Importdatum bleibt unberührt.
In jedem Fall empfehle ich dir aber jegliche Versuche Tests und der Gleichen mit einer KOPIE der OriginalDB zu machen und nicht mit der Echtversion!