![]() |
Datenbank: Access • Zugriff über: ADO
Rechnen mit Werten aus der DB
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. |
Re: Rechnen mit Werten aus der DB
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:
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.
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; Grüße vom marabu |
Re: Rechnen mit Werten aus der DB
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. |
Re: Rechnen mit Werten aus der DB
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'));
|
Re: Rechnen mit Werten aus der DB
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? |
Re: Rechnen mit Werten aus der DB
Zitat:
Eine Stringliste hat die Eigenschaft .DelimitedText, wenn man der etwas zuweist, wird anhand der Eigenschaft .Delimiter getrennt. |
Re: Rechnen mit Werten aus der DB
Wo finde ich?
Oder gibt es dafür ein Tutorial? |
Re: Rechnen mit Werten aus der DB
ist in der unit classes enthalten.
tutorial= delphi hilfe, sollte reichen. wenn du eine alte version zur verfügung hast nutze die (<Delphi 7) |
Re: Rechnen mit Werten aus der DB
Zitat:
Zitat:
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: ![]() |
Re: Rechnen mit Werten aus der DB
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:
Delphi-Quellcode:
Wie baue ich nun aber das mit dem Delimiter ein?
ComboBox1.Items.Add(Query1.FieldByName('Test'));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz