AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Wie Änderungen bei berechneten Feldern in Table schreiben?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie Änderungen bei berechneten Feldern in Table schreiben?

Ein Thema von Drop Table · begonnen am 16. Aug 2006 · letzter Beitrag vom 16. Aug 2006
Antwort Antwort
Drop Table

Registriert seit: 16. Aug 2006
Ort: Wedel
26 Beiträge
 
Turbo Delphi für Win32
 
#1

Wie Änderungen bei berechneten Feldern in Table schreiben?

  Alt 16. Aug 2006, 10:44
Datenbank: Paradox • Zugriff über: TQuery -TDBGrid - TUpdateSQL
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:
procedure TWPViewDB.Query1CalcFields(DataSet: TDataSet);
begin
  Query1Lat.AsString := SingleCoordString(Query1.FieldByName('Latitude').AsFloat, True);
  Query1Lon.AsString := SingleCoordString(Query1.FieldByName('Longitude').AsFloat, False);
end;
Das funktioniert schonmal.

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
Gruß
Andreas
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Wie Änderungen bei berechneten Feldern in Table schreibe

  Alt 16. Aug 2006, 10:49
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?
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Wie Änderungen bei berechneten Feldern in Table schreibe

  Alt 16. Aug 2006, 10:59
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.
Andreas
  Mit Zitat antworten Zitat
Drop Table

Registriert seit: 16. Aug 2006
Ort: Wedel
26 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Wie Änderungen bei berechneten Feldern in Table schreibe

  Alt 16. Aug 2006, 11:01
Zitat von Angel4585:
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.
Der neue Wert muss ja erst in das Gitter eingegeben werden können, bevor er anschließend reformatiert - und wie auch immer - in die Datenbank geschrieben werden kann. Zunächst habe ich also erstmal das Problem, den neuen Wert in das Gitter einzugeben.

Die Tabellenfelder heissen Latitude/Longitude, die berechneten im Gitter übrigens Lat/Lon.
Gruß
Andreas
  Mit Zitat antworten Zitat
Drop Table

Registriert seit: 16. Aug 2006
Ort: Wedel
26 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Wie Änderungen bei berechneten Feldern in Table schreibe

  Alt 16. Aug 2006, 11:08
Zitat von shmia:
berechnete Felder sind hier die falsche Technik.
Für diese Aufgabe hat jedes Feld die Events: OnGetText und OnSetText.
Besten Dank für den Hinweis! Werde mich erstmal mit diesen neuen Stichwörtern zum Literaturstudium zurückziehen, und mich je nach Ergebnis mit dem Erfolg , oder einer weiteren Frage melden .


Mille Grazie
Gruß
Andreas
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: Wie Änderungen bei berechneten Feldern in Table schreibe

  Alt 16. Aug 2006, 11:14
Zitat von Drop Table:
Werde mich erstmal mit diesen neuen Stichwörtern zum Literaturstudium zurückziehen
Fein, wenn dann alles geklappt hat, dann könntest du die Funktion SingleCoordString() und die Umkehrfunktion dazu in die Code-Library stellen (Längen-/Breitengrade lesbar formatieren).
Das könnten andere wahrscheinlich auch gut gebrauchen.
Andreas
  Mit Zitat antworten Zitat
Drop Table

Registriert seit: 16. Aug 2006
Ort: Wedel
26 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Wie Änderungen bei berechneten Feldern in Table schreibe

  Alt 16. Aug 2006, 14:31
[quote="shmia"]
Zitat von Drop Table:
Fein, wenn dann alles geklappt hat, dann könntest du die Funktion SingleCoordString() und die Umkehrfunktion dazu in die Code-Library stellen (Längen-/Breitengrade lesbar formatieren).
Done! zumindest der erste Teil, die Rückkonvertierung kommt noch erstmal müssen die Daten ins Gitter.

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.
Gruß
Andreas
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: Wie Änderungen bei berechneten Feldern in Table schreibe

  Alt 16. Aug 2006, 14:51
Zitat von Drop Table:
Leider komme ich mit dem OnGetText Ereignis nicht weiter.
Hier ein Beispiel:
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;
Andreas
  Mit Zitat antworten Zitat
Drop Table

Registriert seit: 16. Aug 2006
Ort: Wedel
26 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Wie Änderungen bei berechneten Feldern in Table schreibe

  Alt 16. Aug 2006, 15:46
Zitat von shmia:
Hier ein Beispiel:
[...]
Klasse! funktioniert Einwandfrei, und in beide Richtungen

Vielen Dank für die schnelle und kompetente Hilfe!
Gruß
Andreas
  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 03:40 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