![]() |
Strings an eine Funktion übergeben
Hallo,
ich möchte die ausgewählten Strings einer Listbox an eine Funktion übergeben. Diese soll dann eine SQL Berechnung mit den übergebenen Strings durchführen. In etwa so: ListBox-Einträge AGT RET BGH TSB RZU FHG z. B. ausgewählt Eintrag 1,2,5 u. 6 Übergabe der Strings 1,2,5 u. 6 an SQL Funktion wie kann ich die Listbox-Einträge an die Funktion übergeben ???
Delphi-Quellcode:
Anschließend möchte ich das Ergebnis an eine TChart Komponente übergeben.
function CalcAlle(MYList :TStringList): TSTringlist;
var SQLTEXT: string; begin With Query do begin SQL.Clear; SQLTEXT := 'SELECT AG,SUM(Preis) AS GESPREIS' + ' FROM PosListe' + ' WHERE AG IN '+MyList+ ' GROUP BY AG; SQL.Add(SQLText); Close; Open; Result := ???? end end; Wer kann mir bei dieser Aufgabenstellung helfen. Bin noch kein Profi. |
Re: Strings an eine Funktion übergeben
Was ist dein konkretes Problem?
a) Du weißt nicht, wie man eine Funktion schreibt, der man einen String als Parameter übergeben kann. b) Du weißt nicht, wie man die Werte der ausgewählten Einträge einer Listbox ermittelt. c) Keins von beiden und ich habe dich falsch verstanden. ;) |
Re: Strings an eine Funktion übergeben
hi,
bin mir nicht ganz sicher was sql da erwartet, ich glaube (string1, string2, ...). also müsstest du dir vorher schon den string passend zusammenbasteln, also in einer schleife über die stringlist laufen und dann einen string an die funktion übergeben. mfg Jonny |
Re: Strings an eine Funktion übergeben
Hi,
Jonny hat Recht - die Strings müssen als Literale noch in Quotes verpackt werden:
Delphi-Quellcode:
Grüße vom marabu
function GetSelectedStrings(lb: TListBox): String;
var i: Integer; begin with TStringList.Create do try for i := 0 to Pred(lb.Count) do if lb.Selected[i] then Add(QuotedStr(lb.Items[i])); QuoteChar := #0; Result := DelimitedText; finally Free; end; end; |
Re: Strings an eine Funktion übergeben
Ja super, danke.
jetzt muss ich noch versuchen die SQL Prozedur zusammenzubauen; vielleicht kannst du mir da noch ein wenig behilflich sein. Hab so angefangen:
Delphi-Quellcode:
Funktioniert nicht !
procedure Calc;
var SQLTEXT: string; begin With Query do begin SQL.Clear; SQLTEXT := 'SELECT AG,SUM(Preis) AS GPREIS ' + 'FROM PListe ' + 'WHERE AG IN :AGListe '+ 'GROUP BY AG'; SQL.Add(SQLText); ParamByName('AGListe').AsString := GetSelectedStrings(lb); Close; Open; end end; Der Parameter :AGListe wird nicht ausgewertet. Woran liegts ? |
Re: Strings an eine Funktion übergeben
Du kannst einen Parameter nicht an jeder beliebigen Stelle verwenden.
Delphi-Quellcode:
Freundliche Grüße
procedure Calc;
const SEL = 'SELECT AG, SUM(Preis) AS GPREIS ' + 'FROM PListe ' + 'WHERE AG IN (%s) ' + 'GROUP BY AG' ; begin with Query do begin SQL.Text := Format(SEL, [GetSelectedStrings(lb)]); Open; end end; |
Re: Strings an eine Funktion übergeben
Ja wunderbar. Klappt jetzt alles super.
Vielen Dank nochmals. :bounce2: :bounce2: :bounce2: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:45 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