AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Datumsformat in DB ändern von 04 nach 20004
Thema durchsuchen
Ansicht
Themen-Optionen

Datumsformat in DB ändern von 04 nach 20004

Ein Thema von torud · begonnen am 13. Apr 2006 · letzter Beitrag vom 13. Apr 2006
Antwort Antwort
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

Datumsformat in DB ändern von 04 nach 20004

  Alt 13. Apr 2006, 14:10
Hallo Wissende,

ich habe eine Datenbank, in der ich früher das Datumsformat so eintrug: dd.mm.yy

Ich habe in der Zwischenzeit das Format auf dd.mm.yyyy umgestellt. Allerdings muss ich nun die alten in der DB verbleibenden Datensätze ändern, damit es passt, wenn ich damit was anstellen will.

Das hier ist mein bisheriger Code. Allerdings erhalte ich nur utopschie Daten:

Delphi-Quellcode:
procedure TForm1.btn_set_dateClick(Sender: TObject);
var
  datum:TDateTime;
begin
    with Table1 do
      begin
        while not Eof do
          begin
            Datum := Trunc(FieldValues['date']);
            ShowMessage(FormatDateTime('dd.mm.yyyy',Datum));
            Next;
          end
      end
end;
Es war wohl gut, dass ich mir erstmal nur die Mesaagebox habe anzeigen lassen und nicht gleich zurück in die DB geschrieben habe. Was mache ich falsche, oder was fehlt da noch?
Danke
Tom
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#2

Re: Datumsformat in DB ändern von 04 nach 20004

  Alt 13. Apr 2006, 15:10
Das Problem war oder ist, dass ich damals ein anderes Datumsformat auf dem System eingrichtet hatte. Viel Schwerer wiegt der Fehler, dass das Feld vom Typ her String ist. Mit diesem Code habe ich es zumindestens inhaltlich erstmal gelöst.

Delphi-Quellcode:
procedure TForm1.btn_set_dateClick(Sender: TObject);
var
  datum:TDateTime;
begin
    with Table1 do
      begin
        while not Eof do
          begin
            edit;
            Datum := StrToDate(FieldValues['date']);
            FieldValues['date'] := Datum;
            post;
            Next;
          end
      end
end;
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Datumsformat in DB ändern von 04 nach 20004

  Alt 13. Apr 2006, 19:33
Wenn dein Datumfeld "date" ein String, so wird dies vermutlich fehlschlagen, weil Datum vom Typ TDateTime ist.
FieldValues['date'] := Datum; Es bleibt Dir also nichts anderes übrig, als weiterhin mit Strings zu arbeiten... Aber vielleicht gehts auch in einem Ruck, wenn du mir verräts, um welche Datenbank es sich hierbei handelt.
(Und wie kommt man auf die Idee, ein Datumsfeld als String zu speichern )
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Datumsformat in DB ändern von 04 nach 20004

  Alt 13. Apr 2006, 19:41
Hallo Tom und Tom,

Zitat von Jelly:
Und wie kommt man auf die Idee, ein Datumsfeld als String zu speichern
wenn die Tabelle sowieso reorganisiert wird, dann würde ich gleich den Feldtyp entsprechend ändern.

Grüße vom marabu
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Datumsformat in DB ändern von 04 nach 20004

  Alt 13. Apr 2006, 20:13
Ach ja ich weiss. Ich war damals noch dümmer als ich es noch immer zu sein scheine. Es handelte sich um ein dbf-Datei. Also was nettes mit der BDE. Klar kann ich das ändern, aber das Problem ist, dass ich dann eines der Programme, die darauf zugrifen auch wieder neu kompolieren muss, und dies ist etwas tricky, da das nur auf Arbeit geht und ich dort derzeit absolut keine Zeit habe, leider.

Ich kam blos in die Verlegenheit diese DB nun zu benutzen, weil das FA bei mir anfragte, wie es mal mit ner Ust.-Erklärung wäre. Hm und da die anscheinend alle sganz genau wissen wollen, wollte ich eben mal ne Routine über die DB jage, damit die mir alle verkauften Lizenzen von 2005 ausspuckt. Es ging dann über SQL mit fixer Angabe der ID´s (von - bis).

Vielmehr Kopfschmerzen macht mir das Thema FA, weil ich da nicht wirklich die grosse Ahnung habe und die vom FA sich weigerten mir ne nette Auskunft zu geben. Is wohl aber was für nen eigenen Thread...

@Jelly, es klappte aber trotzdem. Vermutlich lag es einfach daran, dass es sich bei der Übergabe dann um einen Variant handelte!? Egal, das Thema ist vorerst durch...
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Datumsformat in DB ändern von 04 nach 20004

  Alt 13. Apr 2006, 21:32
Also bei DBase ist glaub ich nicht viel mit einem direktem SQL Befehl um die besagte Spalte zu verändern. Rezentere DB Systeme bieten auch Stringbehandlungsroutinen mit, damit wärs einfacher. So bleibt dir wohl nix anderes übrig, also das Datensatz für Datensatz zu lösen. Wichtig dabei ist aber, dass du lediglich mit Strings arbeitest, weil Du ja nicht auf TimeStamp umsteigen kannst.

Hier mal ein Schnippsel, allerdings ungetestet:

Delphi-Quellcode:
procedure TForm1.btn_set_dateClick(Sender: TObject);
var
  oldDate, newDate : string ;
begin
    with Table1 do
      First ;
      begin
        while not Eof do
          begin
            edit;
            oldDate := FieldByName('date').AsString ;
            try
               dd := StrToInt(copy(oldDate,1,2)) ;
               mm := StrToInt(copy(oldDate,4,2)) ;
               yy := StrToInt(copy(oldDate,7,2)) ;
            except
               raise exception.create (oldDate + ' konnte nicht ins neue Format konvertiert werden') ;
            end ;
            if yy >= 70 // ab 1970 berücksichtigt. Älter wird als 2069 interpretiert
            then yy := 1900 + y
            else yy := 2000 + y ;
            FieldValues['date'] := FormatDateTime ('dd.mm.yyyy',EncodeDate (yy,mm,dd)) ;
            post;
            Next;
          end
      end
end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz