AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Rechnen mit Werten aus der DB
Thema durchsuchen
Ansicht
Themen-Optionen

Rechnen mit Werten aus der DB

Ein Thema von Jack23 · begonnen am 16. Okt 2007 · letzter Beitrag vom 16. Okt 2007
Antwort Antwort
Seite 1 von 2  1 2      
Jack23

Registriert seit: 20. Sep 2007
215 Beiträge
 
#1

Rechnen mit Werten aus der DB

  Alt 16. Okt 2007, 14:17
Datenbank: Access • Zugriff über: ADO
Hallo,

ich möchte mit Werten aus einer Access Datenbank rechnen.

Jetzt kommt wieder eins meiner Beispiele:

Ich habe ein Formular.

Auf dem sind CheckBoxen oder ComboBoxen ist jetzt erstmal egal oder?

Gehen wir jetzt mal von 5 Werten aus. Nein besser ich erkläre meine Datenbank.

wert | daten (meine beiden spalten) Die Daten sind durch Komma getrennt.
-------------
wert1 | 3ABCDE, 56FG, 1HI
wert2 | 2ABCDE, 78FG, 3ASDE
wert3 | 3ABCDE, 98LK, 2HI
wert4 | 1ABCDE, 60PL, 5TZ
wert5 | 9VFEFD, 23TR, 8ZU

So sieht jetzt meine Datenbank aus. Jedenfalls die benötigten Werte.

So nun habe ich drei ComboBoxen. In diesen ComboBoxen sollen die oben genanten werte angezeigt werden.
Ohne die Daten!

Dann habe ich in diesen drei Boxen jetzt wert1, wert4 und wert2 ausgewählt.

Dann drücke ich auf einen Button nennen wir in "Rechnen". Das Ergebnis wird berechnet.

In einem Label steht dann das Ergebnis aus wert1, wert4 und wert2:
6 ABCDE, 134 FG, 60 PL, 5 TZ, 1 HI, 3 ASDE

Es fällt kein Wert weg auch wenn mit dem Wert nicht Addiert wurde. Er wird einfach wieder angezeigt.

Das ist das Ergebnis aus den oben ausgewählten Werten.

Wie fange ich das an?

Das größte Problem ist die Werte aus der DB in die ComboBoxen kriegen und dann mit ihnen rechnen.

Ich hoffe ihr könnt mir helfen.
  Mit Zitat antworten Zitat
marabu

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

Re: Rechnen mit Werten aus der DB

  Alt 16. Okt 2007, 15:02
Hi Jack,

für den Umgang mit den ADO-Komponenten findest du reichlich Code im Forum und der Online-Hilfe. Deine Benutzerschnittstelle ist auch nicht so klar beschrieben, als dass ich dir Code für die Übernahme von Access-Daten in deine Controls zeigen könnte.

Das Rechnen ist eigentlich recht einfach: Deine Daten musst du am Delimiter (Komma) zerlegen, das geht recht einfach mit einer TStringList und deren property CommaText. Für das Rechnen studiere mal den folgenden Code:

Delphi-Quellcode:
uses
  RTLConsts;

type
  TCountedStringList = class(TStringList)
  private
   function GetString(Index: Integer): string;
  public
    procedure AddString(const s: string);
  end;

procedure TCountedStringList.AddString(const s: string);
var
  index, i, n: Integer;
  sDim: string;
begin
  n := 0;
  for i := 1 to Length(s) do
    if s[i] in ['0'..'9'] then
      n := n * 10 + Ord(s[i]) - Ord('0') else
    begin
      sDim := Copy(s, i, MaxInt);
      if Find(sDim, index)
        then Objects[index] := TObject(Integer(Objects[index]) + n)
        else Objects[Add(sDim)] := TObject(n);
      Break;
    end;
end;

function TCountedStringList.GetString(index: Integer): string;
begin
  if (Index < 0) or (Index >= Count) then Error(@SListIndexError, Index);
  Result := Format('%d%s', [Integer(Objects[index]), Strings[index]]);
end;
3ABCDE ist nichts anderes als eine Kombination einer Zahl mit einem String - wie 500KG oder 2STD und 10MIN. Du kannst die einzelnen Strings mit AddString('3ABCDE') einer CountedStringList hinzufügen und mit GetString() und Count die Ergebnisse iterativ abholen.

Grüße vom marabu
  Mit Zitat antworten Zitat
Jack23

Registriert seit: 20. Sep 2007
215 Beiträge
 
#3

Re: Rechnen mit Werten aus der DB

  Alt 16. Okt 2007, 15:08
Ok mit ADO ist alles klar. Ich habe eine ADOQuery.

Allso das Problem ist ja wie ich die Daten die ich über die Query hole in die ComboBoxen bekomme und in die STringlist. Weil das sind ja immer unterschiedliche. Die kann ich ja nicht fest definieren.
  Mit Zitat antworten Zitat
marabu

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

Re: Rechnen mit Werten aus der DB

  Alt 16. Okt 2007, 15:29
Aus der Query kannst du die Daten mit FieldByName('FELDNAME').AsString auslesen, dann weist du sie der Eigenschaft CommaText einer StringList zu und schon kannst du auf die einzelnen Werte als Strings[i] zugreifen. Oder du fügst sie der ComboBox hinzu: ComboBox.Items.Add(Query.FieldByName('FELDNAME'));
  Mit Zitat antworten Zitat
Jack23

Registriert seit: 20. Sep 2007
215 Beiträge
 
#5

Re: Rechnen mit Werten aus der DB

  Alt 16. Okt 2007, 16:30
Erstmal noch zwei kleine fragen:

Was ist eine TStringList?

Und was du geschrieben hast:
3ABCDE ist nichts anderes als eine Kombination einer Zahl mit einem String



Zwischen dem 3ABCDE sind aber mehrere Leerzeichen. Deswegen auch nach Komma trennen. 3 AB CD E,

Hat macht das irgendwelche Probleme?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Rechnen mit Werten aus der DB

  Alt 16. Okt 2007, 16:36
Zitat:
Was ist eine TStringList?
Eine Liste von Strings.
Eine Stringliste hat die Eigenschaft .DelimitedText, wenn man der etwas zuweist, wird anhand der Eigenschaft .Delimiter getrennt.
Markus Kinzler
  Mit Zitat antworten Zitat
Jack23

Registriert seit: 20. Sep 2007
215 Beiträge
 
#7

Re: Rechnen mit Werten aus der DB

  Alt 16. Okt 2007, 16:43
Wo finde ich?

Oder gibt es dafür ein Tutorial?
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Rechnen mit Werten aus der DB

  Alt 16. Okt 2007, 16:57
ist in der unit classes enthalten.

tutorial= delphi hilfe, sollte reichen.
wenn du eine alte version zur verfügung hast nutze die (<Delphi 7)
  Mit Zitat antworten Zitat
marabu

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

Re: Rechnen mit Werten aus der DB

  Alt 16. Okt 2007, 17:17
Zitat von Jack23:
... Zwischen dem 3ABCDE sind aber mehrere Leerzeichen. Deswegen auch nach Komma trennen. 3 AB CD E ...
Mein Code orientiert sich an den Beispielen aus deinem ersten Beitrag.

Zitat von Jack23:
... Hat macht das irgendwelche Probleme?
Mir nicht.

Wegen der Leerzeichen musst du bei D7 die Daten vorbehandeln - die durch Komma getrennten Strings müssen in Quotes stehen, damit man sie mit CommaText zerlegen kann: klick
  Mit Zitat antworten Zitat
Jack23

Registriert seit: 20. Sep 2007
215 Beiträge
 
#10

Re: Rechnen mit Werten aus der DB

  Alt 16. Okt 2007, 17:29
Ich habe Delphi11. Also so ganz komme ich noch nicht klar.

Ich habe jetzt ein StringList:

'Test' ist der .FieldByName Name.

Dann weise ich in der gleichen Procedur der ComboBox die felder zu:

ComboBox1.Items.Add(Query1.FieldByName('Test')); Wie baue ich nun aber das mit dem Delimiter ein?
  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 09:38 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