Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbank Abfrage Mit String (https://www.delphipraxis.net/100702-datenbank-abfrage-mit-string.html)

Jack23 2. Okt 2007 18:34

Datenbank: Access • Version: 2003 • Zugriff über: ADO

Datenbank Abfrage Mit String
 
Hallo

Ich mache mit Checkboxen eine Datenbank abfrage. Die Chekcboxen werden in einem String zusammen gesetzt. Code steht unten. Nun wird genau das Abgefragt. Ich möchte es aber so haben.....hm ich weiß ich bin schlecht im erklären. Ich mache ein Beispiel:

Tabelle abc:
wert:
wert1 wert2 wert3 /datensatz1
wert5 wert6 wert9 /datensatz2
wert5 wert13 wert34 /datensatz3

Ok das ist meine Tabelle.

Also WHERE wert. Wenn wert = wert1 wert2 wert3 ist wird der erste Datensatz abgefragt.
Alle durch Leerzeichen getrennt.
Wenn wert = wert5 wert6 wert9 ist wird der zweite Datensatz abgefragt.

So nun möchte ich es aber so haben wenn alle check boxen angekreuzt sind. Das sind 1,2,3,5,6,7.

Dann sollen beide Datensätze abgefragt werden. So holt er aber keinen aus der Datenbank weil er keine Übereinstimmung findet. Den dritten Datensatz dürfte er aber dennoch nicht ausgeben weil 13 und 34 nicht ausgewählt sind.
Ich hoffe ihr versteht was ich meine. Unten steht der Code zur Ansicht.
Delphi-Quellcode:
//String initialisieren
  sText := '';
  //Anhand des Zustandes String zusammenbauen mit Leerzeichen als Trenner
  for i := Low(Boxes) to High(Boxes) do
    if Boxes[i].Checked then
      sText := sText + Boxes[i].Caption + #32;
  //letztes Leerzeichen löschen
  if Length(sText) > 0 then
    Delete(sText,Length(sText),1);
    with Query do
  begin
    Close;
    SQL.Text := 'SELECT * FROM abc WHERE wert=' + QuotedStr(sText);
    Open;

DeddyH 2. Okt 2007 19:35

Re: Datenbank Abfrage Mit String
 
Zitat:

Zitat von Jack23
Ich hoffe ihr versteht was ich meine.

Ehrlich gesagt, nein. :gruebel:
Ich habe Dir im letzten Thread schon gesagt, dass ich Dein Konzept nicht verstehe. Daran hat sich nichts geändert.

Jack23 2. Okt 2007 20:22

Re: Datenbank Abfrage Mit String
 
Das ist auch kein Konzept. Das ist nur ein Code Schnipsel den ich ändern will.

Jack23 2. Okt 2007 20:41

Re: Datenbank Abfrage Mit String
 
Das was ich haben möchte steht in diesem Thread. Nur mit den oben genannten Änderungen.
http://www.delphipraxis.net/internal...t.php?t=119612

DeddyH 2. Okt 2007 20:42

Re: Datenbank Abfrage Mit String
 
Das weiß ich, ich habe den Source wiedererkannt ;)

Jack23 2. Okt 2007 21:03

Re: Datenbank Abfrage Mit String
 
Also ok. Ist das Problem lösbar? Und was verstehst du an meiner Erklärung nicht? Und bitte komm mir nicht wieder mit einem Konzept. Ich bin nämlich ganz konzeptlos. :duck:

marabu 2. Okt 2007 21:06

Re: Datenbank Abfrage Mit String
 
Hallo Jack,

du hast dein Problem leider nicht vollständig beschrieben. Vom Prinzip her ist folgendes möglich, wenn du für die möglichen Werte ein kanonisches Format definierst:

Delphi-Quellcode:
select * from abc
where ' wert1 wert2 wert3 wert5 wert6 wert9 ' like '% ' || wert || ' %'
So werden deine ersten beiden Beispielsätze gefunden. Sobald es dir gelingt dein Problem vollständig zu beschreiben, kann man auch eine allgemeine Lösung entwickeln.

Grüße vom marabu

DeddyH 2. Okt 2007 21:07

Re: Datenbank Abfrage Mit String
 
Es würde mir leichter fallen, wenn Du mal ein ganz konkretes Beispiel postest (inkl. der Beschriftung der Checkboxen), was angekreuzt sein soll und was Du als Ergebnis haben möchtest.

Geronimo 2. Okt 2007 21:15

Re: Datenbank Abfrage Mit String
 
Ok, ich versuch's mal mit einer Antwort.
Irgendein ein sinnvolles Konzept oder eine sinnvolle DB-Struktur erkenne ich nicht.
Das muss ich aber auch nicht verstehen.
Ich fasse mal zusammen:
Du hast eine Tabelle in einer DB, die das Feld mit dem Namen wert hat,
wahrscheinlich ein Char, Varchar oder so was.
Außerdem hast du eine Reihe von Checkboxen in einem Array organisiert mit den Captions
wert1, wert2 etc.
Die Abfrage soll nun so aussehen, dass die Datensätze ausgewählt werden sollen,
bei denen wert = der Aneinanderreihung der Captions der angklickten Checkboxen ist,
durch Leerzeichen getrennt.
Wenn alle Checkboxen geklickt sind, soll Datensatz1 und Datensatz2 ausgewählt werden,
oder was auch immer.
Diese Fallunterscheidung kann man in einem IF-Statement erledigen.
Den Status der Checkboxen kann man ja abfragen. Wenn die AND-Verknüpfung aller immer
noch true ist, dann sind wohl alle checked.
Dann brauchst du nur noch die Bedingung für wert formulieren,also:
WHERE (wert = 'wert1 wert2 wert3') OR (wert = 'wert5 wert6 wert9')
... oder so ähnlich.
Alle Klarheiten beseitigt?
Ehrlich gesagt, Sinn scheint das nicht zu haben.

Gruss
Geronimo

Geronimo 2. Okt 2007 21:20

Re: Datenbank Abfrage Mit String
 
Zitat:

Ich bin nämlich ganz konzeptlos.
Das ist, glaube ich, schon allen klar.
:drunken:


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:15 Uhr.
Seite 1 von 2  1 2      

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