AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Verknüpfung von Datenbankabfrage und Berechnung
Thema durchsuchen
Ansicht
Themen-Optionen

Verknüpfung von Datenbankabfrage und Berechnung

Ein Thema von mr.floppy81 · begonnen am 11. Jan 2005 · letzter Beitrag vom 17. Jan 2005
Antwort Antwort
mr.floppy81

Registriert seit: 18. Nov 2004
Ort: Wismar
77 Beiträge
 
Delphi 5 Enterprise
 
#1

Verknüpfung von Datenbankabfrage und Berechnung

  Alt 11. Jan 2005, 11:59
moin,

brauche einmal einen Vorschlag von euch bevor ich das Programm schreibe.

Also ich habe vor mit Daten aus der Datenbank und selbstzuwählenden Variablen Berechnungen durchzuführen.

Meine Idee ist folgende:

Aus einer Datenbank werden Daten entnommen und in einem dbgrid dargestellt. Bei diesen Daten handelt es sich um: Artikel, konstante leistung, varible Leistung.
Neben diesem dbgrid soll eine Spalte dargestellt werden, in welche der Anwender des Programms eigene Werte MANUELL eingibt (diese sollen NICHT in einer Datenbank gespeichert werden, sondern nur während der Laufzeit des Programms aktiv sein). Nennen wir die Variable einmal "Faktor L".
Die Spalte welche den "Faktor L" enthält, soll immer nur so viele Einträge ermöglichen, als es auch Artikel gibt. (bei 20 Artikeln ist also 20 mal der "Faktor L" eintragbar)

In einer dritten spalte soll dann das Rechenergebnis erscheinen, welches bei Multiplikation und Addition herauskommt.
Die Berechnung erfolgt Zeilenweise und die Formel würde so lauten:

Ergebnis=((FaktorL)² * var.Leistung)+konst.leistung

Ich stelle mir bildlich folgendes vor:
Code:
artikel   konst.Leistung   var.Leistung I   faktorL  I  Ergebnis
test           10               25        I     0,9     I    xxx
bla bla        29               10        I     1,7     I    yyy
auto           0                60        I     0,4     I    zzz
       (diese Werte entstammen der DB)    I Eingabe vom I Berechnung
                                                Nutzer     nach Formel
Wie kann ich das am besten realisieren?? Oder ist es überhaupt realisierbar???

Das Problem, das ich habe ist, dass ich nicht weiss,
1. Welches die beste Komponente ist, um den "Faktor L" darzustellen?

2. die Spalte mit dem "Faktor L" so schreiben soll, dass sich genau 20 Eintragmöglicheiten öffnen?

3. Wie kann man "Faktor L" mit den entsprechenden dbgrideinträgen multiplizieren um ihn dann in der Ergebnisspalte anzuzeigen?


LG Andreas

PS: Ich hoffe dass die Darlegung des Problems verständlich war???

PSPS: die Datenbank ist MSSQL soweit ich weiss und der zugriff erfolgt über storedprocedures (die schreibt der System-Admin)
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Verknüpfung von Datenbankabfrage und Berechnung

  Alt 11. Jan 2005, 12:33
Hallo mr.floppy81,

die einfachste Lösung wäre die Daten über SQL beim Server abzuholen und in eine lokale Tabelle zu kopieren, in der das Feld FaktorL existiert und z.B. mit 1 vorbesetzt ist. Das Feld Ergebsis wird als berechnetes Feld angelegt und ändert sich damit automatisch, sobald FaktorL (das einige Feld, dass du zum Ändern freigibst), geändert wird.

Fertig!
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
mr.floppy81

Registriert seit: 18. Nov 2004
Ort: Wismar
77 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Verknüpfung von Datenbankabfrage und Berechnung

  Alt 11. Jan 2005, 12:47
hmmm, hört sich gut an (und einfach an ), ich teste das mal aus
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Verknüpfung von Datenbankabfrage und Berechnung

  Alt 11. Jan 2005, 12:59
Das Kopieren geht übrigens recht einfach mit der TBatchMove Komponente.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

Re: Verknüpfung von Datenbankabfrage und Berechnung

  Alt 11. Jan 2005, 12:59
Hi Andreas,

dies kannst du ganz einfach mit calculated Fields machen.
Dazu erstellst du neben den drei aus der Datenbank ermittelten Feldern (Artikel, konst. Leistung, var. Leistung)
noch zwei Felder, wobei FieldKind des einen(Faktor) auf fkInternalCalc und des anderen(Ergebnis) auf fkCalculated gesetzt wird.
Die Abfrage sieht dann in etwa so aus:
select name, leistung_konst, leistung_var, 1.0 as faktor from artikel In das OnCalcFields-Ereignis deines DataSets schreibst du dann:
Delphi-Quellcode:
begin
  DataSet.FieldByName('ergebnis').AsFloat :=
    (DataSet.FieldByName('faktor').AsFloat *
    DataSet.FieldByName('faktor').AsFloat *
    DataSet.FieldByName('leistung_var').AsFloat) +
    DataSet.FieldByName('leistung_konst').AsFloat;
end;
Mfg
Stevie
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Verknüpfung von Datenbankabfrage und Berechnung

  Alt 11. Jan 2005, 13:26
Hallo Stevie,

ist die Datenmenge, die vom MSSQL Server kommt automatisch editierbar, so dass man den FaktorL ändern kann?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

Re: Verknüpfung von Datenbankabfrage und Berechnung

  Alt 11. Jan 2005, 13:34
Hallo MrSpock,

das dürfte nicht von der Datenbank abhängen, sondern von der Einstellung der Datenmenge. Diese müsste natürlich schon editierbar sein. Wenn das Feld im DataSet auf fsInternalCalc und ReadOnly = False steht, dann geht das. Wenn natürlich die Datenmenge schon nicht editierbar ist und/oder über eine Query abgerufen wird, dann würde ich den "Umweg" über ein ClientDataSet vorschlagen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
mr.floppy81

Registriert seit: 18. Nov 2004
Ort: Wismar
77 Beiträge
 
Delphi 5 Enterprise
 
#8

Re: Verknüpfung von Datenbankabfrage und Berechnung

  Alt 17. Jan 2005, 10:37
hmmm,

ein paar kleine Zwischenfragen habe ich. Mr Spock schrieb:

Zitat:
die einfachste Lösung wäre die Daten über SQL beim Server abzuholen und in eine lokale Tabelle zu kopieren
wie kann ich etwas in eine lokale Tabelle kopieren??? Welche Komponente soll ich dazu nutzen?? muss ich dazu eine Tabelle (z.B. paradox o.ä.)auf dem rechner haben?


Zitat:
in der das Feld FaktorL existiert
wie realisiere ich den Eintrag des Feldes?? also wie kann ein zusätzliches Feld eingefügt werden??

Könntet ihr vielleicht ein kleines Tabellen "tutorial" schreiben. Ich komme nämlich mit meinem Latein nicht weiter....



Habe leider nur sehr wenig Ahnung von der Programmierung allgemein und noch weniger von der Arbeit mit Datenbanken, hoffe darum, dass euch die Fragen nicht dumm vorkommen

LG Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

Re: Verknüpfung von Datenbankabfrage und Berechnung

  Alt 17. Jan 2005, 13:51
Zitat von mr.floppy81:
hmmm,

ein paar kleine Zwischenfragen habe ich,

als tabelle soll eine ttable komponente verwendet werden?
wie kann ich die Tabelle zur entwicklungszeit anzeigen lassen??
wie füge ich zusätzliche spalten zur tabelle hinzu???

das wären meine grössten Probleme.

Habe leider nur sehr wenig Ahnung von der Programmierung allgemein und noch weniger von der Arbeit mit Datenbanken, hoffe darum, dass euch die Fragen nicht dumm vorkommen

LG Andreas
1.Nein, ich würde die ADO-Komponenten benutzen - aber TADODataSet, denn nur dort kannst du eine eigene SQL-Abfrage definieren.
2.Stell das DataSet auf Active und verbinde sie über eine TDataSource-Komponente mit deinem TDBGrid.
3.Doppelklick auf das DataSet und dann mit dem Kontextmenü ...
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
mr.floppy81

Registriert seit: 18. Nov 2004
Ort: Wismar
77 Beiträge
 
Delphi 5 Enterprise
 
#10

Re: Verknüpfung von Datenbankabfrage und Berechnung

  Alt 17. Jan 2005, 14:07
oh, habe etwas schnell meinen letzten eintrag editiert....
werde das jetzt erstmal auf dem wege versuchen wie stevie das beschrieben hat. wenn es probs gibt meld ich mich

Danke und Grüße
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 07:42 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