Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Datumsformat aus View im Grid falsch (https://www.delphipraxis.net/214017-datumsformat-aus-view-im-grid-falsch.html)

tkhandel 7. Nov 2023 08:49

Datenbank: MSSQL Express • Version: 2019 • Zugriff über: delphi 10.4

Datumsformat aus View im Grid falsch
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich bekomme es nicht hin das Datum im Grid im deutschen Format anzuzeigen.
Der Zugriff erfolgt über ADO und aus einer Sicht

SELECT CONVERT(Date, dbo.Lagerbuchungen.BuchungAm, 104) AS Datum

SQl-Server Express und Managment Studio sind auf German eingestellt
PC natürlich auch und Displayformat gibt es anscheinend nicht bei
einem Select aus seiner View.

Komplette View sieht so aus:

SELECT CONVERT(Date, dbo.Lagerbuchungen.BuchungAm, 104) AS Datum, dbo.Lagerbuchungen.Menge, dbo.Lagerbuchungen.BestandNeu AS neu, dbo.Lagerbuchungen.Mitarbeiter, dbo.Lagerbuchungen.Rechner,
dbo.Lagerbuchungen.Lieferschein, dbo.Lagerbuchungen.Entnahmeschein, dbo.Lagerbuchungen.Buchungshinweis, dbo.Lieferanten.Firma1 AS Lieferant, dbo.Artikel.Artikelnr, dbo.Artikel.Artikelbezeichnung, dbo.Artikel.Min,
dbo.Baustellen.Bauvorhaben, dbo.Baustellen.Auftragsnr, dbo.Bautrupp.Bautrupp, dbo.Kunden.Firma1 AS Kunde, dbo.Artikel.Hersteller, dbo.Lagerbuchungen.BuchungVon, dbo.Lagerbuchungen.Id, dbo.Artikel.Ist
FROM dbo.Lagerbuchungen LEFT OUTER JOIN
dbo.Kunden ON dbo.Kunden.Id = dbo.Lagerbuchungen.KundeId LEFT OUTER JOIN
dbo.Baustellen ON dbo.Baustellen.Id = dbo.Lagerbuchungen.BaustelleId LEFT OUTER JOIN
dbo.Bautrupp ON dbo.Bautrupp.Id = dbo.Lagerbuchungen.BautruppId LEFT OUTER JOIN
dbo.Lieferanten ON dbo.Lieferanten.Id = dbo.Lagerbuchungen.LieferantId LEFT OUTER JOIN
dbo.Artikel ON dbo.Artikel.Id = dbo.Lagerbuchungen.ArtikelId
WHERE (dbo.Lagerbuchungen.Id IS NOT NULL)

Uwe Raabe 7. Nov 2023 09:06

AW: Datumsformat aus View im Grid falsch
 
Warum überhaupt die Konvertierung im Server? Wenn das Datumsfeld in Delphi-Programm ankommt sollte die Formatierung eigentlich automatisch anhand der Windows-Einstellungen erfolgen.

himitsu 7. Nov 2023 09:29

AW: Datumsformat aus View im Grid falsch
 
Datum als einen DateTime/TimeStamp-Typ zurückgeben, welches die Komponenten im Client-Programm verstehen ... das wird dann "standardmäßig" mit den aktuellen lokalen Sprachsettings angezeigt.

tkhandel 7. Nov 2023 09:48

AW: Datumsformat aus View im Grid falsch
 
Hallo,
ich brauche nur das Datum ohne Zeit deshalb die Konvertierung
sonst funktionieren meine Filter im Grid nicht mehr.

Delphi.Narium 7. Nov 2023 11:37

AW: Datumsformat aus View im Grid falsch
 
Hier mal eine Idee:
Delphi-Quellcode:
procedure TForm1.AfterOpen(DataSet: TDataSet);
var
  i : Integer;
begin
  for i := 0 to DataSet.Fields.Count - 1 do begin
    case DataSet.Fields[i].DataType of
      ftDate, ftDateTime : TDateTimeField(DataSet.Fields[i]).DisplayFormat := 'DD.MM.YYYY';
    end;
  end;
end;
Dazu im SQL die Konvertierung entfernen.

Uwe Raabe 7. Nov 2023 11:46

AW: Datumsformat aus View im Grid falsch
 
Das funktioniert aber nur solange die Filter auf das DisplayFormat reagieren.

Delphi.Narium 7. Nov 2023 11:55

AW: Datumsformat aus View im Grid falsch
 
Naja, die können ja den Datumswert aus der Spalte immer per Trunc nehmen, dann ist auch im Filter der Zeitanteil weg. Oder per Filter := FormatDateTime('dd.mm.yyyy',Datumsspalte)

Für eine garantiert funktionierende Lösung fehlen noch zuviele Informationen.

Wie sehen die Filter aus? Wie werden sie zusammengebaut. Sollen sie für weitere, aus der DB oder sonstwoher, zu holende Daten dienen, oder soll einfach nur im Grid eine Teilmenge selektiert werden, oder, oder, oder ...?

Jasocul 7. Nov 2023 12:14

AW: Datumsformat aus View im Grid falsch
 
Zitat:

Zitat von tkhandel (Beitrag 1529162)
SELECT CONVERT(Date, dbo.Lagerbuchungen.BuchungAm, 104) AS Datum

Ich glaube, hier liegt ein Denkfehler vor. Das Convert wird in diesem Fall die Formatvorgaben 104 ignorieren, da in den Typ Date konvertiert wird. Dann wird wieder der Standard der DB-Einstellungen verwendet. Trägst du dort aber varchar ein, sollte die Formatierung funktionieren:
Code:
SELECT CONVERT(Varchar, dbo.Lagerbuchungen.BuchungAm, 104) AS Datum
Allerdings fängst du dir damit Folgeprobleme ein. Falls du z.B. Datumsfilter nutzt, dürften die nicht mehr richtig funktionieren, da ein varchar/String nunmal kein date/TDate ist.

Irgendwo hast du eine grundsätzlich fehlerhafte Einstellung, was das Datumsformat betrifft. Das kann in Windows sein, in den DB-Komponenten, in den Anwendungseinstellungen, etc.
Das ist der Fehler, der behoben werden muss.

Papaschlumpf73 7. Nov 2023 12:58

AW: Datumsformat aus View im Grid falsch
 
Dafür habe ich meine kleine SQL-Funktion; geht natürlich auch ohne sep. Funktion - so kommt am Ende ein echtes TDateTimeField ohne Zeitanteil raus

ALTER FUNCTION [dbo].[GetDatePart] (@DateTimeValue datetime)
RETURNS datetime AS
BEGIN
RETURN (CONVERT(DateTime, CONVERT(Char, @DateTimeValue, 104), 104))
END

Koeh72 7. Nov 2023 21:49

AW: Datumsformat aus View im Grid falsch
 
Imho würde hier ein Einfaches cast(<DateTimeValue> as date) eventuell Wunder wirken.
Die Wandlung in die deutsche Darstellung dd.mm.yyyy sollte dann entweder die anzeigende Komponente oder der entsprechende Eventhandler erledigen.
Soll die DB das Datum formatiert (dann aber als String/char) liefern:
format(<DateTimeValue>, 'dd.MM.yyyy')
Alternativ format(<DateTimeValue>, 'd', 'de-de')


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:26 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz