Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TField.AsDateTime Exception? (https://www.delphipraxis.net/187573-tfield-asdatetime-exception.html)

Mavarik 10. Dez 2015 13:37

Datenbank: SQLite • Version: 3.x • Zugriff über: FireDac

TField.AsDateTime Exception?
 
Aus Data.DB
Delphi-Quellcode:
function TField.GetAsDateTime: TDateTime;
begin
  raise AccessError('DateTime'); { Do not localize }
end;
Ok, Also jeder Aufruf von
Delphi-Quellcode:
var
  D : TDateTime.
  FD : TFDQuery;
begin
//  ..
  D := FD.FieldByName('LastChange').AsDateTime;
//  ..
end;
Erzeugt eine Exception... (Ich steh gerade auf dem Schlauch)

Wo ist der Trick den ich gerade nicht sehe? :stupid:

Mavarik

sahimba 10. Dez 2015 13:41

AW: TField.AsDateTime Exception?
 
function GetAsDateTime: TDateTime; virtual;
und ist bspw. in TStringField überschrieben mit
Result := StrToDateTime(GetAsString);

mkinzler 10. Dez 2015 13:41

AW: TField.AsDateTime Exception?
 
Ich nehme an, das dies die Standardmethode ist und in abgeleiteten Klassen entsprechend überschrieben wird.

Mavarik 10. Dez 2015 13:50

AW: TField.AsDateTime Exception?
 
Zitat:

Zitat von mkinzler (Beitrag 1323973)
Ich nehme an, das dies die Standardmethode ist und in abgeleiteten Klassen entsprechend überschrieben wird.

Ja klar, aber ein FDQuery.FieldbyName('LastChange') hat als Result ein TField, welches nicht überschrieben ist..

mkinzler 10. Dez 2015 13:52

AW: TField.AsDateTime Exception?
 
Es wird aber die entsprechende Ableitung zurückgegeben: IntegerField, StringField, usw.

sahimba 10. Dez 2015 13:54

AW: TField.AsDateTime Exception?
 
[QUOTE=Mavarik;1323977]
Zitat:

Zitat von mkinzler (Beitrag 1323973)
Ja klar, aber ein FDQuery.FieldbyName('LastChange') hat als Result ein TField, welches nicht überschrieben ist..

Was da zurückkommt, ist von TField abgeleitet.

DeddyH 10. Dez 2015 14:32

AW: TField.AsDateTime Exception?
 
Das nennt sich Polymorphie :angel:

Mavarik 10. Dez 2015 15:13

AW: TField.AsDateTime Exception?
 
[QUOTE=sahimba;1323981]
Zitat:

Zitat von Mavarik (Beitrag 1323977)
Zitat:

Zitat von mkinzler (Beitrag 1323973)
Ja klar, aber ein FDQuery.FieldbyName('LastChange') hat als Result ein TField, welches nicht überschrieben ist..

Was da zurückkommt, ist von TField abgeleitet.

Wenn das so wäre, würde ja die abgeleitete Methode aufgerufen werden... Ist aber nicht so!

Daniel 10. Dez 2015 15:25

AW: TField.AsDateTime Exception?
 
Wie sieht denn der Feld-Typ in der DB aus und verwendest Du bei FD irgendwelche Typ-Mappings?
Bei mir geht's nämlich.

Mavarik 10. Dez 2015 15:32

AW: TField.AsDateTime Exception?
 
Zitat:

Zitat von Daniel (Beitrag 1324006)
Wie sieht denn der Feld-Typ in der DB aus und verwendest Du bei FD irgendwelche Typ-Mappings?
Bei mir geht's nämlich.

Keine Typ-Mappings...

Nur der "Query" kann das nicht, wenn ich

Delphi-Quellcode:
function GetLastChange: TDateTime;
begin
  Result := FDBase.SQLConnection.ExecSQLScalar('SELECT LastChange FROM FOOTABLE order by LastChange DESC LIMIT 1');
end;
funktioniert es...


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:27 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