Discussion:
Format in Abfrage ändern
(zu alt für eine Antwort)
Thomas Sommer
2005-01-05 11:21:43 UTC
Permalink
Hallo Ng,

ich habe hier eine Tabelle inder das Datumsformat wie folgt ist: jjjjmmtt
Nun habe ich eine Abfrage und möchte das die Eingabe des Datums in folgendem
Format erfolgt: tt.mm.jj
Diese Eingabe soll dann in das gültige für die Datenbank verständliche
Format geändert werden.

Wie muss man sowas machen?

mfg

Thomas Sommer
Jens Schilling
2005-01-05 12:13:16 UTC
Permalink
Hallo, Thomas
jjjjmmtt Nun habe ich eine Abfrage und möchte das die Eingabe des
Datums in folgendem Format erfolgt: tt.mm.jj
Markiere Deine Datumnsspalte, rechte Maustaste --> Eigenschaften, und dort
Dein Eingabeformat hinterlegen.
Diese Eingabe soll dann in das gültige für die Datenbank verständliche
Format geändert werden.
Deine Eingaben werden in der Tabelle korrekt abgelegt.
HTH
Gruß
Jens
Henry Habermacher [MVP Access]
2005-01-05 12:24:58 UTC
Permalink
Hallo Thomas
jjjjmmtt Nun habe ich eine Abfrage und möchte das die Eingabe des
Datums in folgendem Format erfolgt: tt.mm.jj
Diese Eingabe soll dann in das gültige für die Datenbank verständliche
Format geändert werden.
Das Format, wie's die Tabelle anzeigt, ist eigentlich irrelevant. In
welchem Datenformat wird das Feld abgelegt, Datum, Text oder Ganz-Zahl?
Das ist das Entscheidende.

Wenn es nicht im Datumsformat ist, wird das in einer Abfrage kaum gehen,
weil dann das Feld nicht mehr zweidirektional ausgelesen und wieder
zurückgeschrieben werden kann. Sobald Du da eine Format() Funktion oder
gar String Manipulationen für die Anzeige des Feldes verwenden musst,
wird das Feld readonly und kann nicht mehr eingegeben werden.

Für den Fall eines Datums-Feldes hat Dir Jens bereits die nötige
Information geliefert.

Gruss
Henry
--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com (neu mit Suchfunktion!)
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org
Thomas Sommer
2005-01-05 12:39:33 UTC
Permalink
Danke für Eure Antworten.
Das Feld ist ein Textfeld. Ich will das Feld nur im Rahmen einer Abfrage
abfragen und später die Abfrage als Grundlage für einen Bericht verwenden.

Wie kann ich das Problem lösen? Muss ich das Format im Bericht ändern? Wenn
ja wie macht man das?

mfg

Thomas Sommer
Post by Henry Habermacher [MVP Access]
Hallo Thomas
jjjjmmtt Nun habe ich eine Abfrage und möchte das die Eingabe des
Datums in folgendem Format erfolgt: tt.mm.jj
Diese Eingabe soll dann in das gültige für die Datenbank verständliche
Format geändert werden.
Das Format, wie's die Tabelle anzeigt, ist eigentlich irrelevant. In
welchem Datenformat wird das Feld abgelegt, Datum, Text oder Ganz-Zahl?
Das ist das Entscheidende.
Wenn es nicht im Datumsformat ist, wird das in einer Abfrage kaum gehen,
weil dann das Feld nicht mehr zweidirektional ausgelesen und wieder
zurückgeschrieben werden kann. Sobald Du da eine Format() Funktion oder
gar String Manipulationen für die Anzeige des Feldes verwenden musst, wird
das Feld readonly und kann nicht mehr eingegeben werden.
Für den Fall eines Datums-Feldes hat Dir Jens bereits die nötige
Information geliefert.
Gruss
Henry
--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com (neu mit Suchfunktion!)
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org
Henry Habermacher [MVP Access]
2005-01-07 03:24:58 UTC
Permalink
Hallo Thomas
Post by Thomas Sommer
Danke für Eure Antworten.
Das Feld ist ein Textfeld. Ich will das Feld nur im Rahmen einer
Abfrage abfragen und später die Abfrage als Grundlage für einen
Bericht verwenden.
Wie kann ich das Problem lösen? Muss ich das Format im Bericht
ändern? Wenn ja wie macht man das?
Hier eine Funktion, die die Umwandlung macht:

Public Function makeDate(JJJJMMTT As Variant) As Variant
On Error GoTo PROC_ERR
If IsNull(JJJJMMTT) Then
makeDate = Null
Else
makeDate = CDate(Left(JJJJMMTT, 4) & _
"/" & Mid(JJJJMMTT, 5, 2) & _
"/" & Right(JJJJMMTT, 2))
End If
PROC_EXIT:
Exit Function
PROC_ERR:
makeDate = Null
Resume PROC_EXIT
End Function

Lege diese Funktion in ein Standard Modul ab.

Danach mach in Deiner Abfrage einfach folgendes rein:

SELECT makeDate(DeinFeld) As DeinDatum, weitereFelder
FROM DeineTabelle

Diese Abfrage liefert Dir nun im Feld DeinDatum das in ein Datum
umgewandelte Text-Datumsfeld.
Lass' nun den Report auf dieser Abfrage laufen und dann kannst Du mit
dem Datumsfeld alles machen, was in Reports mit Datumsfeldern gemacht
werden kann, also auch sortieren, gruppieren, formatieren, wochentägeln,
etc.

Falls im Datenbankfeld ein ungültiges Datum im Textformat abgelegt
wurde, also z.B. 20041312, dann wird die obige Funktion NULL
zurückliefern, ebenso, wenn das Feld NULL ist.

Gruss
Henry
--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com (neu mit Suchfunktion!)
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org
Lesen Sie weiter auf narkive:
Loading...