![]() |
Datenbank: Paradox • Zugriff über: TQuery -TDBGrid - TUpdateSQL
Wie Änderungen bei berechneten Feldern in Table schreiben?
Moijn,
ich bin gerade dabei mich in die Verwendung von SQL unter D5-prof einzuarbeiten, und bin jetzt an einem Punkt wo ich nicht mehr weiter weiß. Ich habe eine Paradox-Tabelle, die u.a. Längen- / Breitengradfelder (Lat./Lon.)im Longinteger-Format enthält. Die Datensätze sollen per SQL in einem DBGrid angezeigt, und ggfs modifiziert (update/insert) werden können. Die Lat./Lon.-Spalten werden beim Ereignis OnCalcFields in Benutzer lesbare Formate konvertiert. DD.DDDDDD -> DD° MM.MMM'
Delphi-Quellcode:
Das funktioniert schonmal.
procedure TWPViewDB.Query1CalcFields(DataSet: TDataSet);
begin Query1Lat.AsString := SingleCoordString(Query1.FieldByName('Latitude').AsFloat, True); Query1Lon.AsString := SingleCoordString(Query1.FieldByName('Longitude').AsFloat, False); end; Im 2.Schritt habe ich eine UpdateSQL Komponente hinzugefügt, und in Query1 die entspr. Properties CachedUpdates und UpdateObject gesetzt. Soweit so gut, ich kann jedes Feld mit Ausnahme der Lat/Lon Felder ändern, und die Änderungen werden auch in die Datenbank übernommen. Im DBGrid sind jetzt allerdings berechneten Lat/Lon-Felder für Änderungen gesperrt, was nun :?: Wie lassen sich diese Felder im Grid editieren. Würde mich sehr freuen, wenn mir hier jemand helfen kann :P |
Re: Wie Änderungen bei berechneten Feldern in Table schreibe
nun ein berechnetes Feld - wie der Name schon sagt- berechnet sich selbst und kann daher denk ich nicht geänedert werden, da es in der Datenbank nicht existiert.
Oder hab ich dich jetzt nur falsch verstanden? |
Re: Wie Änderungen bei berechneten Feldern in Table schreibe
berechnete Felder sind hier die falsche Technik.
Du möchtest einzelne Felder vom internen Maschinenformat in ein menschenlesbares Format umwandeln; un zwar in beide Richtungen. Für diese Aufgabe hat jedes Feld die Events: OnGetText und OnSetText. |
Re: Wie Änderungen bei berechneten Feldern in Table schreibe
Zitat:
Die Tabellenfelder heissen Latitude/Longitude, die berechneten im Gitter übrigens Lat/Lon. |
Re: Wie Änderungen bei berechneten Feldern in Table schreibe
Zitat:
Mille Grazie |
Re: Wie Änderungen bei berechneten Feldern in Table schreibe
Zitat:
Das könnten andere wahrscheinlich auch gut gebrauchen. |
Re: Wie Änderungen bei berechneten Feldern in Table schreibe
[quote="shmia"]
Zitat:
Leider komme ich mit dem OnGetText Ereignis nicht weiter. Der Latitude-Typ in der DB ist ja Float, der Ergebnistyp meiner Funktion ist String, d.h. aus 47.5594 wird N 47° 33.564', bei der Wertzuweisung gibt es eine Exception weil ein Floatwert erwartet wird. Muß da eventuell noch eine Editmaske definiert werden? Wenn ja, wie muß diese aussehen? Es ist ja keine Formatänderung wie bei einem Datum oder Währung. |
Re: Wie Änderungen bei berechneten Feldern in Table schreibe
Zitat:
Delphi-Quellcode:
procedure TForm1.Feld4711GetText(Sender: TField; var Text: String; DisplayText: Boolean);
begin // man liest das Feld "Sender" aus // und schreibt die Textdarstellung in Variable "Text" rein if Sender.IsNull then Text := '[leer]' else Text := UmwandelnLaditudeInString(Sender.AsFloat, False); end; |
Re: Wie Änderungen bei berechneten Feldern in Table schreibe
Zitat:
Vielen Dank für die schnelle und kompetente Hilfe! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:15 Uhr. |
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