Datenbank: egal • Version: egal • Zugriff über: egal
Status von 12 DBCheckboxen abspeichern in einer Datenbank
Hallo zusammen,
ich muss in einer Anwendung 12 DBCheckboxen (Januar - Dezember) einfügen. Eine Umstellung auf normale Checkboxen wird sehr schwierig, da die ganze Anwendung auf die DB-Komponenten ausgelegt ist. Wie kann ich die Werte der DBCheckboxen am geschicktesten in einem Feld in einer Datenbanktabelle abspeichern ? Als Ergebnis sollte folgendes rauskommen : Zitat:
Delphi-Quellcode:
DBFeldMonate enthält zum Beispiel das Ergebnis aus dem Zitat als String. Wie bekomme ich die Werte der 12 DBCheckboxen in so ein Ergebnis ?
procedure TForm6.FormCreate(Sender: TObject);
var I: Integer; begin for I := 1 to Length(DBFeldMonate) do begin case StrToInt(DBFeldMonate[i]) of 0 : // Aktion für False 1 : // Aktion für True end; end; end; |
AW: Status von 12 DBCheckboxen abspeichern in einer Datenbank
DB-Komponenten sind nunmal dafür ausgelegt, daß sie ihre Werte selbständig aus einem DataSet einer DataSource holen.
Da würde es sich einfach mit Nicht-DB-Komponenten machen, welche mam manuell auslesen und befüllen könnte. Aber notfalls kannst'e dir ja eine TDateSource und ein TClientDataSet, TMemDataSet oder Dergleichen als Zwischenspeicher benutzen. Wenn es nur ums Anzeigen ginge, dann könntest du beim Abrufen mehrere "Felder" aus diesem einem Feld erzeugen, wo dann die jeweiligen Komponenten drangehangen werden.
SQL-Code:
, oder so.
SELECT (substr(deinfeld, 1, 1) = '1') AS feld1, (substr(deinfeld, 2, 1) = '1') AS feld2, ...
Alternativ eben auch über CalcFields. |
AW: Status von 12 DBCheckboxen abspeichern in einer Datenbank
Hallo...
Zitat:
|
AW: Status von 12 DBCheckboxen abspeichern in einer Datenbank
Zitat:
|
AW: Status von 12 DBCheckboxen abspeichern in einer Datenbank
Unsauber:
Warum ein (unsichtbares) DBEdit, wo man auch direkt an das DataSet rankommt? Das ist ja wie ein TMemo, welches man als TStringList mißbraucht. :stupid: |
AW: Status von 12 DBCheckboxen abspeichern in einer Datenbank
Du musst doch nur auf einen Recordwechsel reagieren und beim Clicken die Bits setzen. Falls das Dataset noch nicht im Editmodus ist, rufst Du einfach DataSet.Edit auf.
|
AW: Status von 12 DBCheckboxen abspeichern in einer Datenbank
Liste der Anhänge anzeigen (Anzahl: 1)
Das Control TDBBitwiseCheckBox kann man mit einem Integerfeld in einem Dataset verbinden und so bis zu 32 Checkboxen mit einem Feld verknüpfen.
|
AW: Status von 12 DBCheckboxen abspeichern in einer Datenbank
Hallo zusammen,
danke für Eure Antworten. Ich habe jetzt nochmal eine Nacht drüber geschlafen und werde es jetzt folgendermaßen machen. Die Zustände der 12 DBCheckboxen werden jeweils einzeln in einem Feld in der Datenbanktabelle gespeichert. Wenn ich auf die Werte zugreifen möchte, werden diese im SQL-Befehl zu dem Ergebnis aus meinem Zitat im ersten Beitrag zusammengebaut, so das der SQL-Befehl mir ein Feld mit dem Ergebnis ausgibt und nicht 12 Felder. Zitat:
|
AW: Status von 12 DBCheckboxen abspeichern in einer Datenbank
ist doch nur eine Frage der Darstellung
5 = 101 = 00000000000000000000000000000101 = 000000000101 |
AW: Status von 12 DBCheckboxen abspeichern in einer Datenbank
Du musst ja deine 12 Monate nicht als String verpacken. So ginge es ja auch:
Delphi-Quellcode:
Das klingt mir alles sehr nach 'von Hinten durch die Brust ins Auge'. Was willst Du denn mit den angekreuzten Monaten anfangen?
For Monat :=1 to 12 do
if (1 shl Monat) and DatenbankFeldDasDieMonateAlsBitsSpeichert <> 0 then // Aktion für 'Monat ist angekreuzt' else // Aktion für 'Monat ist nicht angekreuzt' |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:13 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