Autor Beitrag
D. Annies
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Mi 05.09.07 06:55 
Hi, Delpher,

der Compiler meckert, wenn ich die neu angelegte Tabelle SyncTab füllen will:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
            TbSynctab.fieldbyname('WPK4NAME').asstring := TbSchueler.fieldbyname('WPK4NAME').asstring; 
            TbSynctab.fieldbyname('GESCHLECHT').asstring := TbSchueler.fieldbyname('GESCHLECHT').asstring;
            TbSynctab.fieldbyname('GEBDAT').asdate := TbSchueler.fieldbyname('GEBDAT').asdate;  // <- Fehler
            TbSynctab.fieldbyname('TELEFON').asstring := TbSchueler.fieldbyname('TELEFON').asstring;


Das Feld gebdat ist vom Datentyp date.
Wenn ich statt asdate asstring einsetze, geht es.
Muss die Zuweisung immer mit asstring erfolgen?

Dank für Hilfe,
Detlef
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mi 05.09.07 07:35 
Wenn der zuzuweisende Typ identisch mit dem Zieltyp ist ist besser .Value zu nehmen:
ausblenden Delphi-Quelltext
1:
TbSynctab.fieldbyname('GEBDAT').Value := TbSchueler.fieldbyname('GEBDAT').Value;					

_________________
Markus Kinzler.
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Mi 05.09.07 08:27 
Ich habe schon in meinen Delphi-Anfängen aufgehört, an 'AsDate' auch nur zu denken, so viel unverständliche Probleme habe ich damit bekommen. Ich verwende nur noch 'AsDateTime' und bekomme damit weniger schlaflose Nächte. Zudem wachsen meine Kopfhaare wieder (da ich sie mir nicht mehr vor Wut ausreiße).

_________________
Na denn, dann. Bis dann, denn.
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Mi 05.09.07 08:32 
Danke, ihr zwei.

@[quote]markus: Sollte ich dann immer, auch wenn beide string sind .value nehmen?

Gruß, Detlef
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mi 05.09.07 08:39 
Imho ja.

_________________
Markus Kinzler.
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Mi 05.09.07 08:41 
.Value ist ein Variant und wird kleinere Typkonvertierungen automatisch vornehmen. Wenn Du weisst, das die Feldtypen kompatibel sind, kannst Du auch gleich

ausblenden Delphi-Quelltext
1:
DstTable['FieldName'] := SrcTable['OtherFieldName']					

schreiben. Das ist imho hübscher. Aber bei Variants ist immer Vorsicht geboten, denn Zuweisungen inkompatibler Typen werden gnadenlos mit einer Exception bestraft. Auch sollte man Feldwerte vor der weiteren verarbeitung immer explizit in konkrete Typen (Integer, String, etc.) umwandeln, sonst fliegen einem die Exceptions nur so um die Ohren.

_________________
Na denn, dann. Bis dann, denn.
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Mi 05.09.07 10:17 
Nochmals vielen Dank für eure Erklärungen!
Detlef