helmuthelmut2000
Goto Top

Frontpage Datumsformatierung

Problem mit dem Datum lesen mit Frontpage

Hallo,
Ich hoffe ich bin hier richtig, ich habe ein Problem mit FrontPage.
Ich schreibe mit dem befehl
update.... = getdate() in FP2002 Das Datum in eine SQL Datenbank.
Das funktioniert jetzt sehr gut. Beim ausgeben möchte ich nur das Datum
und nicht die Uhrzeit angezeigt bekommen. Kann mir da jemand weiterhelfen?
Kann ich vielleicht auch nur das Datum in die DB schreiben?
Für eine Hilfe wäre ich euch sehr Dankbar.

mfG
Helmut

Content-Key: 19188

Url: https://administrator.de/contentid/19188

Printed on: April 26, 2024 at 02:04 o'clock

Member: MadMax
MadMax Nov 08, 2005 at 22:47:24 (UTC)
Goto Top
Hallo Helmut,

da hab ich doch glatt gedacht, Dir könnte ein Frontpage-Kenner was sagen, aber da das nicht der Fall ist, geb ich meinen Senf mal als Datenbänker dazu:

Da gibts im Prinzip drei Möglichkeiten:
1. Nur das Datum abspeichern
Dafür muß Dein Datenbankfeld aber im Zeichenformat vorliegen, weil in Datenbanken das Datumsformat halt immer auch die Uhrzeit enthält. Das ist natürlich wenig flexibel dann.

2. Datenbankseitig formatieren beim Auslesen
Anhand des "getdate()" könnte Deine Datenbank ein SQL Server sein, also hier der passende Befehl:
SELECT CONVERT (varchar, Datum, 104) FROM Tabelle
wobei "Datum" das Datumsfeld und "Tabelle" die passende Tabelle ist. Beim SQL Server sind die verschiedenen Datumsformate mit Codes dargestellt, 104 steht für das deutsche Datumsformat (dd.mm.yyyy), 102 für das ANSI-Format (yyyy.mm.dd), 110 für das amerikanische (mm-dd-yyyy). Wenn es eine andere Datenbank ist oder Du andere Formate brauchst, schau mal in die DB-Hilfe unter CONVERT oder Datumsfunktionen o.ä.

3. Formatierung durch Frontpage beim Auslesen:
Und hier muß ich jetzt passen, da ich von Frontpage keine Ahnung habe. Du solltest in der Hilfe/Referenz aber unter Stichwörtern wie z.B. Datumsformat irgendeine Formatierungsmöglichkeit finden.

Gruß, Mad Max
Member: helmuthelmut2000
helmuthelmut2000 Nov 09, 2005 at 19:42:29 (UTC)
Goto Top
Hallo Max,

Ja du hast recht das ist eine MSSQL2000 Datenbank.
Das mit der ersten lösung hab ich schon mal versucht,
da bin ich aber nicht weitergekommen. Ich hab das mit
dem JavaScript gemacht. Da hat er mir immer den 1.1.1900
geschrieben. Dann hab ich das mit dem getdate() gemacht
da hat er mir wenigstens das Datum richtig geschrieben.
Wie würdest du das machen, nur das Datum schreiben?
Kannst du mir auch schreiben wo man den Befehl
SELECT CONVERT (varchar, Datum, 104) FROM Tabelle
hinschreibt. Das geht bei mir auch nicht, Wahrscheinlich mach ich da
auch noch was falsch.

Vielen dank erst mal für deine Hilfe.

mfG
Helmut
Member: MadMax
MadMax Nov 09, 2005 at 20:07:24 (UTC)
Goto Top
Hallo Helmut,

wenn Du mit UPDATE in die Datenbank reinschreibst, wirst Du doch mit SELECT die Daten auslesen, oder?

Wenn Du wirklich nur das Datum wegschreiben wolltest (also Möglichkeit 1. von oben), dann würde das ebenso mit dem CONVERT gehen:
UPDATE Tabelle SET Datum = CONVERT (varchar, getdate(), 104) WHERE ...
Aber denk dran, daß das Feld dann ein Zeichenfeld ist und Sortierungen dann schlecht sind ("01.01.2005" kommt in der Sortierung vor "02.01.2004"), es sei denn Du verwendest das ANSI-Format (yyyy.mm.dd, Code 102).

Gruß, Mad Max
Member: Biber
Biber Nov 09, 2005 at 21:12:19 (UTC)
Goto Top
@MadMax
Lässt die DB das denn zu?? Wenn ja, warum???
UPDATE Tabelle SET Datum = CONVERT (varchar, getdate(), 104) WHERE ...

Wenn die DB schlau ist, merkt die doch, dass da jemand in ein datetime-Feld einen String reinschreiben will.. und schreibt stattdessen immer einen datetime-Wert für "leer" oder eben "01.01.1900". Das kann doch nicht Helmut's Sinnen und Streben sein, oder?

Die SELECT-Konvertierung beim Auslesen dagegen sehe ich genauso.. aber ich kenne Frontpage nicht. Vielleicht kommt man/frau da gar nicht an das Statement selbst zum Editieren ran.
Ist kein Frontpage-Power-User hier im Forum??
Grüße Biber
Member: helmuthelmut2000
helmuthelmut2000 Nov 09, 2005 at 21:19:49 (UTC)
Goto Top
Hallo Max,

Also das mit dem Datum schreiben mit update das geht.
Da muß ich jetzt aber mein Formular ändern.
Ich hab das jetzt so das Datum automatisch in der DB mit
datetime und dann (convert(varchar(8),getdate(),4)) geschrieben
wird. Muß mal schaun was es da gibt wie man das als Text oder
Zeichenfeld schreiben kann. Fällt dir da was ein?.
Die elegantere lösung wäre die andere.
Mit select mein ich das so.
Wenn ich das mit Frontpage mache dann muß ich alle meine Formulare
wo das Datum geschrieben wird neu Rormatieren und ausrichten.
Das sind sehr viel. Wie kann ich das in der HTML ansicht in einer Zeile
schreiben? Das wäre einfacher.

Danke mal.

mfg
Helmut
Member: MadMax
MadMax Nov 09, 2005 at 21:46:30 (UTC)
Goto Top
Hm, anscheinend habe ich mich mißverständlich ausgedrückt, aber in beiden Kommentaren von mir sollte zum Ausdruck kommen, daß in dem Fall, daß nur das Datum gespeichert wird, kein datetime-Feld, sondern ein Zeichenfeld (varchar) vorliegen muß.

Kommentar 1:
1. Nur das Datum abspeichern
Dafür muß Dein Datenbankfeld aber im Zeichenformat vorliegen, ...

Kommentar 2:
UPDATE Tabelle SET Datum = CONVERT (varchar, getdate(), 104) WHERE ...
Aber denk dran, daß das Feld dann ein Zeichenfeld ist ...

Also nochmal:
Das interne Datenbank-Datumformat (datetime) beinhaltet auch die Uhrzeit und sie kann nur beim Auslesen durch Formatierung client (Frontpage)- oder server (SQL Server)-seitig abgeschnitten werden. Wird nur das Datum abgespeichert, so wie es später auch angezeigt werden soll, muß ein Zeichenfeld (char, varchar) vorliegen. Entschuldigung, wenn das nicht deutlich rüberkam und zu Verwirrungen geführt hat.

Und tatsächlich ist die Datenbank so schlau und merkt, wenn da ein String in ein Datumsfeld geschrieben werden soll, aber dann findet eine implizite Konvertierung statt. Allerdings liegt im Datumsfeld dann doch wieder eine Uhrzeit vor, nämlich 00:00:00 Uhr face-wink

Daß man das SELECT gar nicht explizit angibt, sondern sich irgendwie zusammenklickt habe ich mir auch schon überlegt, aber dann sollte man doch irgendwo auf Eigenschaften oder SQL o.ä. gehen und da was anpassen können. Aber da wäre halt doch ein Frontpageler von Vorteil um das sagen zu können.

Gruß, Mad Max
Member: MadMax
MadMax Nov 09, 2005 at 22:34:48 (UTC)
Goto Top
Hallo Helmut,

vielleicht ist die Verwendung eines berechneten Datenbankfeldes das Richtige für Dich. Das Datum wird ganz normal in die Datenbank als Datumsfeld geschrieben (wie Du es schon vorher gemacht hattest) und ein anderes Feld, das von der Datenbank automatisch gepflegt wird, enthält die formatierte Darstellung. So ein Feld würdest Du mit:
ALTER TABLE Tabelle ADD DatumFormatiert AS (convert (varchar(8), Datum, 4))
in Deine Tabelle einfügen und es enthält dann automatisch das passend formatierte Datum.

Man schreibt also ins Feld Datum mit

UPDATE Tabelle SET Datum = getdate () WHERE ...
beim Auslesen holt man sich aber das Feld DatumFormatiert.

Hat den Vorteil, daß in dem Feld DatumFormatiert zentral das Datumsformat eingestellt ist (und auch schnell geändert werden kann) und das "richtige" Datum ist z.B. zur Verwendung von Sortierungen auch noch vorhanden. Nachteil wäre allerdings auch, daß das Datumsformat zentral eingestellt wird und nicht über irgendwelche Ländereinstellungen beim Benutzer passend angezeigt wird. Ob das also ein Vorteil oder Nachteil ist hängt von den Anforderungen ab. Aber so bekommst Du das ganze auch ohne spezielle Frontpage-Kenntnisse in dem Bereich gebacken.

Gruß, Mad Max
Member: helmuthelmut2000
helmuthelmut2000 Nov 12, 2005 at 10:01:44 (UTC)
Goto Top
Hallo Mad Max,

Das hat jetzt so funktioniert.
Das Datumsfeld ist ein datetimefeld mit (convert(varchar(10),getdate(),4)).
und mit UPDATE Tabelle SET Datum = CONVERT (varchar, getdate(), 4) WHERE ...
kann ich das Feld überschreiben.
Und es liest mir auch das richtige Datum wieder aus.
Ich bin somit zufrieden. Bis auf das mit dem Datum,
Es schreibt immer die Jahreszahl 4stellig also 2005 und nicht 2stellig
05.
Wenn ich das haben will muß ich am Rechner in den Systemeinstellungen
das ändern auf 2stellig.
Ist das richtig? Greifen da nicht auch andere Programme drauf zu die
das Datum vielleicht 4stellig brauchen?
Wenn du mir da noch eine Lösung wüstest?

mfG
Helmut
Member: MadMax
MadMax Nov 13, 2005 at 04:36:21 (UTC)
Goto Top
Hallo Helmut,

so ganz konnte ich jetzt Deinen letzten Ausführungen nicht folgen, weil es nicht ganz korrekt ist, wenn das Datum ein datetime-Feld ist, mit convert (varchar, ...) da reinzuschreiben. Wie weiter oben beschrieben würde dann eine implizite Konvertierung erfolgen und Du hättest die Uhrzeit doch wieder im Datumsfeld stehen (00:00:00 Uhr). Um wirklich das formatierte Datum zu enthalten müßte es also ein varchar-Feld sein.

Mit Deiner angegebenen convert-Funktion ist die Jahreszahl dann auch zweistellig. Das wird in den Umwandlungscodes nämlich dadurch gesteuert, daß die Zahl über 100 ist oder nicht:
4 --> dd.mm.yy
104 --> dd.mm.yyyy
2 --> yy.mm.dd
102 --> yyyy.mm.dd
...

Gruß, Mad Max
Member: helmuthelmut2000
helmuthelmut2000 Nov 13, 2005 at 20:03:00 (UTC)
Goto Top
Hallo Mad Max,
Nein es ist wirklich ein datetime-Feld wie ich es geschrieben hab,
und es funktioniert auch so. Bis auf das Datum 4stellig.

mfg
Helmut
Member: MadMax
MadMax Nov 15, 2005 at 19:19:29 (UTC)
Goto Top
Hallo Helmut,

wenn es geht, dann ist es ja in Ordnung. Wobei wir allerdings wieder (fast) am Anfang wären, weil es doch beim Auslesen formatiert wird. Um andere Programme brauchst Du Dir wegen der Systemeinstellungen zum Datumsformat keine Gedanken zu machen. Hier wird nämlich nur die Darstellung geregelt, intern ist bei Datumsangaben das Jahrhundert immer noch dabei.

Gruß, Mad Max
Member: Biber
Biber Nov 15, 2005 at 20:13:58 (UTC)
Goto Top
Also,
nicht, dassich Helmut immer im Kreis rumschicken will, aber..

Wenn Du, Helmut, jetzt zur Probe noch ein neues Feld in der Datenbank anlegst, und zwar ein Feld "CDatum", Zeichen, Länge 8 Stellen .. und dort mit
UPDATE Tabelle SET CDatum = CONVERT (varchar(8), DATUM, 104)
..einmalig die bisher gespeicherten Daten reinschreibst ..
und in Zukunft überall dort, wo Du bisher ein INSERT ....CONVERT (varchar(8), DATUM, 104) gemacht hast, dieses auch genau so auf das neue Feld CDatum ausführen lässt, dann sollte doch im Feld CDatum der String "15.11.05" stehen, oder nicht???

Ratlos und wirklich dankbar für Aufklärung meines Denkfehlers
Biber
Member: helmuthelmut2000
helmuthelmut2000 Nov 15, 2005 at 20:50:04 (UTC)
Goto Top
Hallo Biber,
Ich probier das aus.
Muß auch ein Datetime Feld sein oder
soll das ein Zeichenfeld sein?

Gruß Helmut
Member: Biber
Biber Nov 15, 2005 at 20:54:40 (UTC)
Goto Top
Danke, Helmut.
..diesen einen Versuch noch..
Feld CDatum wie oben beschrieben... Zeichen, 8 Stellen lang,... oder CHAR(8) oder wie immer Dir das beim Tabellen ändern dargestellt wird.
Bin gespannt
Biber