Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi %? Alles vor und nach String abfragen? (https://www.delphipraxis.net/100712-alles-vor-und-nach-string-abfragen.html)

Ultimator 3. Okt 2007 15:41

Re: %? Alles vor und nach String abfragen?
 
Zitat:

Zitat von Jack23
Und was mache ich wenn ich ungefähr hm ... 600 Checkboxen habe?

:shock:
Dann hat dein Programm einen Designfehler. 600 Checkboxes is wirklich n bisschen viel. Bist du sicher, dass du die alle brauchst? Das kann ma bestimmt anders lösen.

DeddyH 3. Okt 2007 15:41

Re: %? Alles vor und nach String abfragen?
 
Zitat:

Zitat von Jack23
Und was mache ich wenn ich ungefähr hm ... 600 Checkboxen habe?

1. Hast Du wahrscheinlich ein sehr großes Formular. :mrgreen:
2. Wird die SQL-Abfrage halt sehr lang und dauert auch dementsprechend.

Der Abfragestring lässt sich aber recht simpel über eine Schleife zusammenbauen.

Jack23 3. Okt 2007 15:52

Re: %? Alles vor und nach String abfragen?
 
Ok ich gebe zu bis jetzt sind es ja nur 300 Checkboxen. Wie kann ich die abfrage denn aus dem Array zusammen bauen?

Bis jetzt habe ich immer das hier im Zusammenhang mit dem String genutzt:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Boxes: array[0..3] of TCheckbox;
    sText: string;
    i: integer;
begin
  //Array belegen
  Boxes[0] := CheckBox1;
  Boxes[1] := CheckBox2;
  Boxes[2] := CheckBox3;
  Boxes[3] := CheckBox4;
  ...

DeddyH 3. Okt 2007 16:11

Re: %? Alles vor und nach String abfragen?
 
Versuch es mal so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const InitialText = 'SELECT * FROM Tabelle WHERE ';
var Boxes: array[0..3] of TCheckbox;
    sText: string;
    i: integer;
begin
  //Array belegen
  Boxes[0] := CheckBox1;
  Boxes[1] := CheckBox2;
  Boxes[2] := CheckBox3;
  Boxes[3] := CheckBox4;
  sText := InitialText;
  for i := Low(Boxes) to High(Boxes) do
    if Boxes[i].Checked then
      sText := sText + 'wert LIKE ' + QuotedStr('%' + Boxes[i].Caption + '%') +
               ' AND ';
  if Length(sText) > Length(InitialText) then
    begin
      Delete(sText,Length(sText) - 4, Length(sText));
      Query.SQL.Text := sText;
      Query.Open;
    end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:02 Uhr.
Seite 2 von 2     12   

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