AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Calculierte Felder, schnelle Lösung gesucht
Thema durchsuchen
Ansicht
Themen-Optionen

Calculierte Felder, schnelle Lösung gesucht

Ein Thema von dot · begonnen am 21. Okt 2007 · letzter Beitrag vom 21. Okt 2007
Antwort Antwort
dot

Registriert seit: 10. Okt 2007
39 Beiträge
 
#1

Calculierte Felder, schnelle Lösung gesucht

  Alt 21. Okt 2007, 13:14
Datenbank: MSSQL • Zugriff über: BDE
Hallo Delphifreunde

ich suche nach einer Lösung für mein DBGridproblem

ich habe zwei Tabellen die 1te sieht so aus:

-TIERVERBRAUCH-
TIER_ID VFOOD_ID, MENGE
101 1 30
101 2 40
101 3 10

hier habe ich die VFOOD_ID die ein Fremdschlüssel auf das Feld FOOD_ID in der Tabelle FUTTER ist und
Menge in Kilogramm, von dem bestimmten Lebensmittel

die zweite Tab sieht so aus

FUTTER
FOOD_ID, NAME, WERTIGKEIT
1 MAIS, 150
2 GRAS, 300
3 HEU, 400

die zweite tabelle hat die Namen und die Wertigkeit auf 100 Kilogramm.

der User sucht nun in der Tabelle "FUTTER" einen NAMEN aus und fügt die MENGE hinzu.

In meiner DatenMenge stehen nun aber immer die WERTIGKEITEN für 100 Kilogramm drin und das zeigt auch mein DBGRID an,
ich will aber dass die Felder je nach vom User eingetragener MENGE kalkuliert angezeigt werden, ohne das ich diese in die Datenbank speichern muss.

so z.b sollte meine Wertigkeit im Grid aussehen

TIER_ID FOOD_ID MENGE NAME WERTIGKEIT
101 1 30 Gras 90 ( da die Menge ja 30kilo ist )
101 2 20 Heu 80 ( da die menge ja 20kilo ist )
wie kann ich sowas machen?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Calculierte Felder, schnelle Lösung gesucht

  Alt 21. Okt 2007, 13:19
Mit welchen Komponenten geifst du zu (Table, Query)?
BTW. Die BDE ist veraltet
Markus Kinzler
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Calculierte Felder, schnelle Lösung gesucht

  Alt 21. Okt 2007, 14:08
Hallo,

es ist eigentlich unabhängig davon, ob ADO oder BDE verwendet wird: Wenn mit Table-Komponenten gearbeitet wird, dann muss man der Table-Komponente für "Tierverbrauch" ein Lookup-Field für das Feld "Wertigkeit" über den Schlüssel "Food_Id" hinzufügen. Anschließend wird dann noch ein berechnetes Feld (auch im Feldeditor der Table-Komponente) definiert, in welchem (Wertigkeit / 100 * Menge) als Feldwert bestimmt wird.

Man kann die Wertigkeit auch per Query und SQL besorgen:

SQL-Code:
SELECT * FROM Tierverbrauch V, Futter F
WHERE V.VFood_ID = F.Food_ID
Allerdings stolpert man dann als Anfänger über nicht updatefähige Queries und Ähnliches.

Grüße vom marabu
  Mit Zitat antworten Zitat
dot

Registriert seit: 10. Okt 2007
39 Beiträge
 
#4

Re: Calculierte Felder, schnelle Lösung gesucht

  Alt 21. Okt 2007, 16:40
oh vielen dank erstmal
ich verwende Querys keine tables.
Muss man bei einem Calc-field immer eine neues hinzufügen, kann man nicht bei der WERTIGKEIT sagen, bevor es im Grid angezeigt wird:
WERTIGKEIT := WERTIGKEIT/100 * Menge?
sonst muss ich ja ein calc field machen und es da reinschreiben und das eigentliche Feld WERTIGKEIT im Grid auf visible := False setzen.
Geh ich da richtig in der Annahme?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Calculierte Felder, schnelle Lösung gesucht

  Alt 21. Okt 2007, 16:45
Du brauchst ja nicht alle Felder der Tabelle in die Abfrage übernehmen bzw. Alle Felder der Ergebnismenge anzeigen.
SQL-Code:
SELECT
    ..., ( F.Wertigkeit/100* V.Menge) as Wertigkeit
FROM
    Tierverbrauch V, Futter F
WHERE
    V.VFood_ID = F.Food_ID
Markus Kinzler
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Calculierte Felder, schnelle Lösung gesucht

  Alt 21. Okt 2007, 16:46
Wenn es nur ums Anzeigen geht, dann kannst du auch das Ereignis OnGetText() des Feldes Wertigkeit benutzen und darin umrechnen, aber was ist so schlimm daran ein zusätzliches berechnetes Feld zu spendieren?
  Mit Zitat antworten Zitat
dot

Registriert seit: 10. Okt 2007
39 Beiträge
 
#7

Re: Calculierte Felder, schnelle Lösung gesucht

  Alt 21. Okt 2007, 19:08
danke sowohl on GetText als auch der schöne SQL-String hilft mir.
Das problem wäre das ich die wertigkeit sehr oft drin habe, d.h Wertigkeit_protein, wertigkeit_fett usw.... 20 Wertigkeitsfelder,
dann müsste ich 20 Calc-Felder machen

  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Calculierte Felder, schnelle Lösung gesucht

  Alt 21. Okt 2007, 19:09
Oder sie in der Abfrage durch das berechnete Feld ersetzen (siehe meine Abfrage)
Markus Kinzler
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Calculierte Felder, schnelle Lösung gesucht

  Alt 21. Okt 2007, 20:15
Berechnungen in SQL-Ausdrücken werden vom Server berechnet - immer dann, wenn die Query erneut abgesetzt wird. Berechnungen beim Ereignis OnCalcFields() werden auf der Client-Seite durchgeführt - immer dann wenn notwendig. Wenn die Daten nur gelesen werden, dann würde ich mit SQL-Ausdrücken arbeiten, andernfalls mit calculated fields.
  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 17:41 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