![]() |
Check-Group und case of...
Delphi-Quellcode:
i:= cgfilter;
case i.ItemChecked of [0]: begin qTelefonliste.SQL.Strings [2] := 'BEZUGSPERSON =' end;
Wie soll ich das am besten Lösen? Ich möchte eine abfrage machen was ausgewählt wurde ohne tausend mal(oder auch 8 mal) das Gleiche zufragen... :gruebel: |
Re: Check-Group und case of...
Zitat:
Delphi-Quellcode:
Evtl. solltest du aber mal erklaeren was die CheckGroup sein soll :gruebel:
procedure TForm1.HandleItems(ix: Integer);
begin case ix of 0: qTelefonliste.SQL.Strings [2] := 'BEZUGSPERSON ='; end; end; //... for i := 0 to i.Items.Count-1 do if i.ItemChecked[i] then HandleItems(i); Greetz alcaeus |
Re: Check-Group und case of...
Liste der Anhänge anzeigen (Anzahl: 1)
TRzCheckGroup
ist eine Kompi von Raize und sieht so aus. Es gibt mir die Möglichkeit "Items" hinzuzufügen und diese über die Komponente direkt auszusprechen. Besonders gut wenn's viele sind... Sieht so ungf. aus: |
Re: Check-Group und case of...
Zitat:
![]() |
Re: Check-Group und case of...
Delphi-Quellcode:
:wall: :wall: :wall:
[Fehler] fTelefonliste.pas(162): Ordinaltyp erforderlich
|
Re: Check-Group und case of...
Wenn du jetzt noch schreiben würdest wie dein Source mittlerweile aussieht....
Auf deinen ersten Post bezogen gehst du aber falsch an die Sache ran. Case ist für eine Bedingung unnötig. und diese prüfst du auch noch falsch. Zitat:
Was du vermutlich machen willst ist
Delphi-Quellcode:
evtl. isses auch
if i.Itemchecked[0] Then
Begin qTelefonliste.SQL.Strings [2] := 'BEZUGSPERSON =' End;
Delphi-Quellcode:
Kommt auf den Aufbau dieser Liste an.
if i[0].Itemchecked Then
Begin qTelefonliste.SQL.Strings [2] := 'BEZUGSPERSON =' End; |
Re: Check-Group und case of...
Das kann ich auch (if....then....)
Soll ich dir den Code dafür zeigen?
Delphi-Quellcode:
Ich glaube so progt nur MICROSOFT ...
if cgfilter.ItemChecked [0] = true then
begin qTelefonliste.SQL.Strings [2] := 'BEZUGSPERSON = ' + '''' + dDatabase.iqLogin.fieldbyname('MitarbeiterID').AsString + '''' + ' and'; end else if cgfilter.ItemChecked [1] = true then begin // qMitarbeiter.SQL.Strings [3] := '''' + dDatabase.iqLogin.fieldbyname('MitarbeiterID').AsString + ''''; qMitarbeiter.Active := True; codesite.SendMsg('Abteilung= ' + qMitarbeiter.fieldbyname('ABTEILUNG').asString + ' ' + 'TAETIGKEITSBEREICH= ' + qMitarbeiter.FieldByName('TAETIGKEITSBEREICH').AsString); // ShowMessage ('MitarbeiterID= ' + qMitarbeiter.fieldbyname('ID').AsString); // ShowMessage ('Abteilung= ' + qMitarbeiter.fieldbyname('ABTEILUNG').asString + ' ' + 'TAETIGKEITSBEREICH= ' + qMitarbeiter.FieldByName('TAETIGKEITSBEREICH').AsString); if (qMitarbeiter.fieldbyname('ABTEILUNG').AsString = '') and (qMitarbeiter.FieldByName('TAETIGKEITSBEREICH').AsString = '') then MessageDlg('Der Filter: "Mein Bereich",'+#13+#10+'kann nicht verwendet werden!'+#13+#10+'Bitte prüfen Sie ob die Felder ABTEILUNG '+#13+#10+'und TÄTIGKEITSBEREICH in den Mitarbeiterdaten gefüllt '+#13+#10+'wurden!'+#13+#10+'Wenden Sie sich ggf. an den Administrator!', mtError, [mbOK], 0) else qTelefonliste.SQL.Strings [3] := 'BEREICH = ' + '''' + qMitarbeiter.fieldbyname('ABTEILUNG').AsString + '''' + ' or BEREICH =' + '''' + qMitarbeiter.fieldbyname('TAETIGKEITSBEREICH').AsString + '''' + ' and '; end else if cgfilter.ItemChecked [2] = true then qtelefonliste.SQL.Strings [4] := 'Datum = ' + '''' + (DateToStr(Date)) + '''' + ' and' else if cgfilter.ItemChecked [3] = true then qtelefonliste.SQL.Strings [5] := 'Prioritat = "1" and' else if cgfilter.ItemChecked [4] = true then qtelefonliste.SQL.Strings [6] := 'Prioritat = "2" and' else if cgfilter.ItemChecked [5] = true then qtelefonliste.SQL.Strings [7] := 'Prioritat = "3" and' else if cgfilter.ItemChecked [6] = true then qtelefonliste.SQL.Strings [8] := 'Datum > ' + '''' + (DateToStr(IncDay(Date,-sptage.value))) + '''' + ' and' else if cgfilter.ItemChecked [7] = true then qtelefonliste.SQL.Strings [9] := 'Erledigt = T and' else if cgfilter.ItemChecked [8] = true then qtelefonliste.SQL.Strings [10] := 'Erledigt = F and'; Unübersichtlich, langsam, kompliziert, nicht nachvollziebar... :wink: |
Re: Check-Group und case of...
Zitat:
Wie gesagt, du koenntest auch meine Moeglichkeit mit einer Schleife verwenden. Allerdings ist deine Sache mit if-elseif IMHO nicht ganz richtig, denn damit erlaubst du nur eine angeklickte Checkbox, und das waere dann ja wieder die TRadioGroup. Du erlaubst dass ich mich selbst zitiere: Zitat:
Greetz alcaeus |
Re: Check-Group und case of...
Zitat:
|
Re: Check-Group und case of...
Ich habe nicht gemeint das du bei MICRROSOFT arbeitest!
(Wie könnte/kann man nur darüber glücklich sein? =SCHADE!.?) Das ist ja das Prob. Ich möchte mehrere Auswahlen möglich machen. Eine TRadioGroup kann nicht das Richtige sein. Eine CheckList schon.... ABER: WIE! |
Re: Check-Group und case of...
Indem du die ganzen Else weglässt und einfach die Ifs hintereinander machst.
Delphi-Quellcode:
Da du für jeden Filter einen anderen Text hinzufügst, musst du zwangsläufig jedes einzeln abfragen.
if cgfilter.ItemChecked [2] = true then
qtelefonliste.SQL.Strings [4] := 'Datum = ' + '''' + (DateToStr(Date)) + '''' + ' and' ; if cgfilter.ItemChecked [3] = true then qtelefonliste.SQL.Strings [5] := 'Prioritat = "1" and' ; if cgfilter.ItemChecked [4] = true then qtelefonliste.SQL.Strings [6] := 'Prioritat = "2" and' ; usw. |
Re: Check-Group und case of...
Zitat:
Zitat:
Hast du denn die Moeglichkeit mit der Schleife probiert, oder ueberhaupt angesehn? Greetz alcaeus |
Re: Check-Group und case of...
Zitat:
[Fehler] fTelefonliste.pas(162): Ordinaltyp erforderlich :!: :!: :!: :!: |
Re: Check-Group und case of...
Meinen Beitrag beachtet wieder niemand beachtet :cry:
Über ein Schleife wirst du es nicht vernüftig lösen können solange die Filter für die einzelnen Checkboxen einen unterschiedlichen Aufbau haben. |
Re: Check-Group und case of...
Danke! Aber es ist immer noch zuviel aufwand ... :cry:
|
Re: Check-Group und case of...
Wie wär's denn mit
Delphi-Quellcode:
for i := 0 to Pred(cgfilter.Count) do
if cgfilter.Checked[i] then case i of 0: qTelefonliste.SQL.Strings [2] := 'BEZUGSPERSON ='; {...} end; |
Re: Check-Group und case of...
Delphi-Quellcode:
Klappt...
procedure TfmTelefonliste.pbOKClick(Sender: TObject);
var i: Integer; begin for i := 0 to Pred(cgfilter.Items.Count) do if cgfilter.ItemChecked[i] then case i of 0: qTelefonliste.SQL.Strings [2] := 'BEZUGSPERSON ='; 1: begin qMitarbeiter.SQL.Strings [3] := '''' + dDatabase.iqLogin.fieldbyname('MitarbeiterID').AsString + ''''; qMitarbeiter.Active := True; codesite.SendMsg('Abteilung= ' + qMitarbeiter.fieldbyname('ABTEILUNG').asString + ' ' + 'TAETIGKEITSBEREICH= ' + qMitarbeiter.FieldByName('TAETIGKEITSBEREICH').AsString); // ShowMessage ('MitarbeiterID= ' + qMitarbeiter.fieldbyname('ID').AsString); // ShowMessage ('Abteilung= ' + qMitarbeiter.fieldbyname('ABTEILUNG').asString + ' ' + 'TAETIGKEITSBEREICH= ' + qMitarbeiter.FieldByName('TAETIGKEITSBEREICH').AsString); if (qMitarbeiter.fieldbyname('ABTEILUNG').AsString = '') and (qMitarbeiter.FieldByName('TAETIGKEITSBEREICH').AsString = '') then MessageDlg('Der Filter: "Mein Bereich",'+#13+#10+'kann nicht verwendet werden!'+#13+#10+'Bitte prüfen Sie ob die Felder ABTEILUNG '+#13+#10+'und TÄTIGKEITSBEREICH in den Mitarbeiterdaten gefüllt '+#13+#10+'wurden!'+#13+#10+'Wenden Sie sich ggf. an den Administrator!', mtError, [mbOK], 0) else qTelefonliste.SQL.Strings [3] := 'BEREICH = ' + '''' + qMitarbeiter.fieldbyname('ABTEILUNG').AsString + '''' + ' or BEREICH =' + '''' + qMitarbeiter.fieldbyname('TAETIGKEITSBEREICH').AsString + '''' + ' and '; end; end; end; Danke!! :cheers: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:58 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 by Thomas Breitkreuz