AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Variabler Datenbank-Zugriff - Problem mit Stringumwandlung
Thema durchsuchen
Ansicht
Themen-Optionen

Variabler Datenbank-Zugriff - Problem mit Stringumwandlung

Ein Thema von hberdel · begonnen am 23. Jun 2009 · letzter Beitrag vom 23. Jun 2009
Antwort Antwort
Seite 1 von 2  1 2      
hberdel

Registriert seit: 1. Feb 2003
Ort: Darmstadt, Provence, Südspanien
31 Beiträge
 
Delphi XE5 Professional
 
#1

Variabler Datenbank-Zugriff - Problem mit Stringumwandlung

  Alt 23. Jun 2009, 14:33
Datenbank: Paradox • Zugriff über: BDE
Hallo, ich möchte Code sparen und versuche deshalb, beim Speichern der eingegebenen Daten auf jeweils eine von zwei gleich aufgebauten Tabellen mit unterschiedlichen Daten umschalten zu können. Die eine Tabelle (QueryPreise) enthält die Preise des laufenden Jahres, die andere die Preise des nächsten Jahres (QueryPreiseNeu).

Momentan sieht das so aus unter Verwendung von nur einer Tabelle:

Delphi-Quellcode:
Var Preis1 : Variant;

    Preis1 := FData.QueryPreiseSsNeben.Value;
Was ich probiere:

Delphi-Quellcode:
    If Jahr = RefJahrString then PrsAltNeu := 'QueryPreise';
    If Jahr = NxtJahrString then PrsAltNeu := 'QueryPreiseNeu';

    Preis1 := 'FData. + PrsAltNeu + SsNeben.Value';
Die Teile werden auch richtig zusammengesetzt aber ich bekomme dann die Fehlermeldung:

"Variante des Typs (String) konnte nicht in Typ (Double) konvertiert werden.

Wäre schön, wenn jemand "hier" schreit . . .

[edit=mkinzler]Delphi-Tags eingefügt Mfg, mkinzler[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

Re: Variabler Datenbank-Zugriff - Problem mit Stringumwandlu

  Alt 23. Jun 2009, 14:36
Hallo und Willkommen in der DP ,
Zitat:
Preis1 := 'FData. + PrsAltNeu + SsNeben.Value';
Du hast den ganzen Ausdruck in einem String, das kann so nicht einer Zahl zugewiesen werden. Funkioniert es, wenn Du die Hochkommata weglässt?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hberdel

Registriert seit: 1. Feb 2003
Ort: Darmstadt, Provence, Südspanien
31 Beiträge
 
Delphi XE5 Professional
 
#3

Re: Variabler Datenbank-Zugriff - Problem mit Stringumwandlu

  Alt 23. Jun 2009, 14:47
Nein, das mag der Compiler schon nicht.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

Re: Variabler Datenbank-Zugriff - Problem mit Stringumwandlu

  Alt 23. Jun 2009, 14:55
Achso, jetzt hab ich das Problem erst verstanden. Neuer Ansatz:
Preis1 := (FData.FindComponent(PrsAltNeu + 'SsNeben') as TQuery).Value; Das ist jetzt aber nur ein Test ohne Fehlerbehandlung, ich möchte nur sehen, ob ich Dich richtig verstanden habe.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hberdel

Registriert seit: 1. Feb 2003
Ort: Darmstadt, Provence, Südspanien
31 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Variabler Datenbank-Zugriff - Problem mit Stringumwandlu

  Alt 23. Jun 2009, 15:02
Compiler sagt : Undef Bez : Value
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Variabler Datenbank-Zugriff - Problem mit Stringumwandlu

  Alt 23. Jun 2009, 15:03
Dann hast du irgendeine Klammer falsch gesetzt o.ä. Zeig mal die Codezeile.
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Variabler Datenbank-Zugriff - Problem mit Stringumwandlu

  Alt 23. Jun 2009, 15:09
Hallo,

nicht nur die Code-Zeile, sondern am besten das ganze Form.
Ich glaube nämlich, dass QueryPreiseSsNeben gar keine Query ist,
sondern ein persistentes Feld.

Ein Query.Value gibt es doch gar nicht.

# Update :#
Edit: Paradox ? ui :=)

Wie wird denn gespeichert, mit TTable ?
Übergib dann das TTable einfach einer Speicherprozedur
und verabschiede dich von den persistenten Feldern.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#8

Re: Variabler Datenbank-Zugriff - Problem mit Stringumwandlu

  Alt 23. Jun 2009, 15:11
Zitat von hoika:
Ein Query.Value gibt es doch gar nicht.
Das war mir nachträglich auch eingefallen, aber da der ursprüngliche Typ mir nicht bekannt ist, hab ich es erstmal so gelassen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Variabler Datenbank-Zugriff - Problem mit Stringumwandlu

  Alt 23. Jun 2009, 15:26
Hallo,

was mir hier noch auffällt.

Zitat:
Die eine Tabelle (QueryPreise) enthält die Preise des laufenden Jahres, die andere die Preise des nächsten Jahres (QueryPreiseNeu).

Gaaanz schlechtes DB-Design !!!

Was ist 2011, noch eine Tabelle, QueryPreiseNeuNeu ??

Packe alle Preis in eine Tabelle mit dem Jahr als (Integer)-Feld.


Heiko
Heiko
  Mit Zitat antworten Zitat
hberdel

Registriert seit: 1. Feb 2003
Ort: Darmstadt, Provence, Südspanien
31 Beiträge
 
Delphi XE5 Professional
 
#10

Re: Variabler Datenbank-Zugriff - Problem mit Stringumwandlu

  Alt 23. Jun 2009, 16:36
Hallo alle, schön, dass ihr mir helfen wollt . . .
Natürlich ist das eine TQuery mit Namen "QueryPreise" und wie schon vorher zitiert können die Werte der Datenfelder mit QueryPreisexxx.Value ausgelesen bzw. gespeichert werden.

QueryPreise und QueryPreiseNeu besitzen 9 Datenfelder, die ich nach Vorschlag von hoika alle doppeln müsste. Da wäre es einfacher, meine vorhandene Struktur zu verzweigen . . .

Zum Verständnis: Ich benötige die Preise 2009 nächstes Jahr nicht mehr. Aber in 2009 mache ich sowohl noch Mietverträge für 2009 als auch schon für 2010. In 2010 übernehme ich die Daten von 'QueryPreiseNeu' in 'QueryPreise' und kann dann in 3-4 Jahren problemlos wieder eine Preiserhöhung mit 'QueryPreiseNeu' machen, wenn nötig.

DeddyH : Ich habe deine Code-Zeile kopiert und somit ohne Änderung in meinen Quellcode eingefügt.

begin
Preis1 := (FData.FindComponent(PrsAltNeu + 'SsNeben') as TQuery).Value;
case AnzPers of
3 : Zuschlag1 := FData.QueryPreiseNeuZuNeben.Value;
4 : Zuschlag1 := FData.QueryPreiseNeuZuNeben.Value') * 2;
5 : Zuschlag1 := FData.QueryPreiseNeuZuNeben.Value') * 3;
6 : Zuschlag1 := FData.QueryPreiseNeuZuNeben.Value') * 4;
7 : Zuschlag1 := FData.QueryPreiseNeuZuNeben.Value') * 5;
8 : Zuschlag1 := FData.QueryPreiseNeuZuNeben.Value') * 6;
end;

Wenn's zu viel Mühe macht, habe ich auch eine andere Lösung, wie schon erwähnt, aber der Ehrgeiz . . . das müsste doch funzen - oder?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 02:37 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