AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Checkbox als Array in DB Speichern
Thema durchsuchen
Ansicht
Themen-Optionen

Checkbox als Array in DB Speichern

Ein Thema von Jens Hartmann · begonnen am 14. Mai 2009 · letzter Beitrag vom 20. Mai 2009
 
nahpets
(Gast)

n/a Beiträge
 
#3

Re: Checkbox als Array in DB Speichern

  Alt 14. Mai 2009, 16:47
Hallo,

Methode mal schnell und billig so dahingeschrieben:

VarChar(45) in die Datenbank, 1. Checkbox = 1 Zeichen, 2. Checkbox = 2. Zeichen...
Ist ein Zeichen = 1 dann Checkbox.Checked sonst eben nicht.

Quasi ein überdimensionierter Bitschalter.

Appropooopopoopo Bit-Schalter:

Über einen INT64-Wert in der DB und entsprechende AND's sollte das aber auch gehen.

Im Ansatz könnte das so gehen
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var
          w : Int64;
          i : Integer;
begin
  // Tag der Checkboxen belegen, einmal beim Programmstart.
  w := 1;
  for i := 0 to ComponentCount - 1 do begin
    If Components[i] is TCheckBox then begin
      with Components[i] as TCheckBox do Tag := w;
      w := w shl 1;
    end;
  end;
  // Hier ist w = 2 ^ 45 -> 35184372088832

  // gespeicherter Wert für den Checkboxstatus aus Datenbank holen
  w := 5; // oder 47 oder 1234567963 oder... was sonst in der Datenbank steht.
  for i := 0 to ComponentCount - 1 do begin
    If Components[i] is TCheckBox then begin
      with Components[i] as TCheckBox do begin
        Checked := w and Tag = Tag;
      end;
    end;
  end;

  // Wert für's Speichern in der Datenbank ermitteln.
  w := 0;
  for i := 0 to ComponentCount - 1 do begin
    If Components[i] is TCheckBox then begin
      with Components[i] as TCheckBox do begin
        if Checked then w := w + Tag;
      end;
    end;
  end;
  // und w in die Datenbank schreiben.
end;
Diese Lösung hat einen Nachteil: Der Wertebereich für Tag reicht nicht aus, da nur Integer, wir hier aber 2^45 brauchen oder Int64. Einfachste Lösung: Nachfahren von TCheckbox bauen, der ein zusätzliches Attribut vom Typ Int64 hat.
  Mit Zitat antworten Zitat
 


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 01:37 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