AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Problem mit checkboxen
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit checkboxen

Ein Thema von Jack23 · begonnen am 30. Sep 2007 · letzter Beitrag vom 30. Sep 2007
Antwort Antwort
Seite 1 von 3  1 23      
Jack23

Registriert seit: 20. Sep 2007
215 Beiträge
 
#1

Problem mit checkboxen

  Alt 30. Sep 2007, 12:24
Datenbank: Access • Version: 2003 • Zugriff über: ADO
Hallo

Ich möchte über ein paar checkboxen eine Datenbank abfrage machen.

Ich versuche es mal zu erklären.

Die Tabelle sieht so aus:

name datum text
test 24.7.67 1,2,3,4
test2 12.7.98 1,2,3
test3 32.7.45 1

Nun habe ich verschiedene checkboxen. Anzahl ist egal.
Beispiel checkbox:

checkbox 1 wert: 1
checkbox 2 wert: 2
checkbox 3 wert: 3
checkbox 4 wert: 4

Nehmen wir jetzt mal an checkbox 1,2,3 wären angekreuzt. Dann drücken ich unten auf den Button suchen und werden die Datensätze in einem dbgrid ausgeben die den text 1,2,3 haben(das können durchaus mehrere sein). Nicht die anderen obwohl die auch die werte teilweise haben.

Noch ein Beispiel:
Alle Chekcboxen(1,2,3,4) sind ausgewählt.
Dann müsste dieser Datensatz ausgegeben werden:
test 24.7.67 1,2,3,4

Natürlich können auch dies wieder mehrere sein.

Wie fange ich das am besten an?

Ich hoffe ich konnte das Problem verständlich rüberbringen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

Re: Problem mit checkboxen

  Alt 30. Sep 2007, 12:55
Mir scheint, Deine DB ist nicht normalisiert. Selbst, wenn man nun ad hoc eine Lösung zu diesem konkreten Problem findet, wird es nicht lange dauern, bis das nächste Problem auftritt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Problem mit checkboxen

  Alt 30. Sep 2007, 12:56
Hi,

wenn du kannst, dann ändere die Speicherung der CheckBox-Zustände von TEXT auf INTEGER und speichere die Zustände als Bit-Vektor. Wenn du über deine CheckBoxen iterierst, dann könntest du im Tag-Property der CheckBox die BitPosition angeben und so deinen Bit-Vektor in einer Variable vom Typ Cardinal (oder Word oder Byte) per SHL zusammenschieben.

Grüße vom marabu
  Mit Zitat antworten Zitat
Jack23

Registriert seit: 20. Sep 2007
215 Beiträge
 
#4

Re: Problem mit checkboxen

  Alt 30. Sep 2007, 13:02
Zitat von DeddyH:
Mir scheint, Deine DB ist nicht normalisiert. Selbst, wenn man nun ad hoc eine Lösung zu diesem konkreten Problem findet, wird es nicht lange dauern, bis das nächste Problem auftritt.
Was meinst du damit? Läuft doch alles.


Zitat von marabu:
Hi,

wenn du kannst, dann ändere die Speicherung der CheckBox-Zustände von TEXT auf INTEGER und speichere die Zustände als Bit-Vektor. Wenn du über deine CheckBoxen iterierst, dann könntest du im Tag-Property der CheckBox die BitPosition angeben und so deinen Bit-Vektor in einer Variable vom Typ Cardinal (oder Word oder Byte) per SHL zusammenschieben.

Grüße vom marabu
Verstehe leider kein Wort. Ich möchte doch nur ein DB Abfrage in der die Checkboxen berücksichtigt werden.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#5

Re: Problem mit checkboxen

  Alt 30. Sep 2007, 13:08
Zitat von Jack23:
test 24.7.67 1,2,3,4
Hier sollen mehrere Werte in einem Tabellenfeld gespeichert werden (wenn ich das richtig verstanden habe). Das ist schlechtes DB-Design, wie Du gerade selbst feststellst. Schau mal z.B. bei Wikipedia nach dem Begriff "Normalisierung", dann wirst Du sehen, dass Du 2 weitere Tabellen brauchen wirst, um Dein Modell "sauber" abzubilden. Eine andere Möglichkeit wäre, wie von marabu angesprochen, die Daten als Zahl abzuspeichern (genauer: als Bitmaske), sofern es nicht mehr als 32 bzw. 64 Möglichkeiten gibt. Durch Binärvergleiche könntest Du Dein Ziel dann auch erreichen. Ich verweise dazu mal wieder auf mein Tutorial.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Jack23

Registriert seit: 20. Sep 2007
215 Beiträge
 
#6

Re: Problem mit checkboxen

  Alt 30. Sep 2007, 13:11
sorry da habe ich wohl etwas falsch erklärt. Das sollen eigentlich nur Wörter sein. Keine zahlen.

statt 1 hallo und so weiter war nur ein beispiel.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#7

Re: Problem mit checkboxen

  Alt 30. Sep 2007, 13:15
Also in etwa so?
Zitat:
test 24.7.67 "Dies ist ein Text"
Und die Checkboxen haben dann den "Wert" Dies, ist, etc.?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Jack23

Registriert seit: 20. Sep 2007
215 Beiträge
 
#8

Re: Problem mit checkboxen

  Alt 30. Sep 2007, 13:27
Ja genau so.

test 24.7.67 "Dies ist ein Text" dann hat checkbox 1 den wert "dies" u.s.w. Wenn man nur checkbox 1 ausgewählt hat dürfte nur der datensatz wenn vorhanden:
test 24.7.67 "Dies" ich hoffe das ist jetzt klar.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#9

Re: Problem mit checkboxen

  Alt 30. Sep 2007, 13:42
Hmm... obwohl ich Dein Konzept nicht verstanden habe, hier eine Möglichkeit:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Boxes: array[0..3] of TCheckbox; //Array definieren
    sText: string;
    i: integer;
begin
  //Array belegen
  Boxes[0] := CheckBox1;
  Boxes[1] := CheckBox2;
  Boxes[2] := CheckBox3;
  Boxes[3] := CheckBox4;
  //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);
  //nur zum Testen, ggf. in SQL-Statement einfügen
  ShowMessage(sText);
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Jack23

Registriert seit: 20. Sep 2007
215 Beiträge
 
#10

Re: Problem mit checkboxen

  Alt 30. Sep 2007, 13:48
Ok danke das hilft mir schon mal sehr viel weiter. Nur wie bekomme ich das dann aus der Datenbank abgefragt? Und welche Checkbox muss ich dazu nehmen?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:54 Uhr.
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