![]() |
Datenbank: MySQL • Version: 5.5 • Zugriff über: MyDAC
Änderung in einer Tabelle von 2 auf 4 Felder
Hallo zusammen,
ich habe folgendes Problem. Ich habe eine Tabelle die zwei Felder enthält. Im ersten Feld wird ein Boolean-Wert abgespeichert. Im zweiten Feld ein Integer-Wert zwischen 1 und 4. Der Integer-Wert ist der Indexwert einer Combobox. Jetzt ist die Anforderung das erste Feld zu behalten und die vier Werte, die aus der Combobox auszuwählen waren in Booleanfelder zu speichern. Jetzt ist meine Frage, wie würdet Ihr die alten Werte auf die vier neuen Booleanfelder verteilen ? Es werden DB-Komponenten verwendet. Meine Überlegungen sind folgende :
Bei der zweiten Überlegung, habe ich noch nicht so den richtigen Plan, wie ich in einer DBRadioGroup entsprechend den Wert manuell setze. Ich hoffe Ihr könnt mir weiterhelfen, wenn euch noch Infos fehlen, dann bitte einfach nachfragen. |
AW: Änderung in einer Tabelle von 2 auf 4 Felder
1, Für die DB-Änderung schickst du ein alter-table-statement zur DB
2, Um die Datan in die neuen Felder zu bekommen schickst du ein Update-Statement los: update <meinetabelle> set neuesfeld1 = true where altesfeld = 0; update <meinetabelle> set neuesfeld2 = true where altesfeld = 1; ... 3, Lösche Altes Feld wenn du sicher bist es nicht mehr zu gebrauchen. Kannst hierzu ein ein alter table-Statement verwenden |
AW: Änderung in einer Tabelle von 2 auf 4 Felder
Warum nutzt Du DB-Komponenten?
Wickel den Datenverkehr über Queries ab, dann hast Du alles im Griff, auch die Umsetzung von boolschen Feldern auf Indices. Gruß K-H |
AW: Änderung in einer Tabelle von 2 auf 4 Felder
Zitat:
Zitat:
|
AW: Änderung in einer Tabelle von 2 auf 4 Felder
Irgendwie verstehe ich die Anforderung und deine Umsetzung nicht.
Da ist von ComboBox und RadioGroup die Rede und du möchtest statt einem Wert (integer) jetzt mehrere Werte haben (Boolean). Allerdings können beide nur einen Wert annehmen. Von daher ist es kontraproduktiv in der DB mehrere Felder dafür zu verwenden. Ausnahme: Du möchtest jetzt CheckBoxen einsetzen, dann würde ich das auch noch verstehen. Wenn du (aus welchen Gründen auch immer) jetzt aber trotzdem eine Boolean-Sicht des Wertes wünscht, dann würde ich eine View empfehlen statt die Tabelle zu ändern. |
AW: Änderung in einer Tabelle von 2 auf 4 Felder
Zitat:
|
AW: Änderung in einer Tabelle von 2 auf 4 Felder
Und was passiert, wenn zur RadioGroup ein weiteres Item dazukommen soll?
Brauchst du dann wieder in der Tabelle ein weiteres Feld? Hat deine Tabelle genau einen Datensatz? |
AW: Änderung in einer Tabelle von 2 auf 4 Felder
Zitat:
Zitat:
Zitat:
Edit: Der Kunde braucht diese Boolean-Werte für Auswertungen und um auch eine mehrfach Auswahl der vier Punkte zuzulassen. |
AW: Änderung in einer Tabelle von 2 auf 4 Felder
Ok, hier liegt dann aber eine sehr starke Bindung der Tabellenstruktur an die Benutzeroberfläche vor.
Wenn das Programm nur bei einem Kunden läuft ist das kein Problem. Bei vielen Kunden gibt es Drausen aber verschiedene Versionen der Software, wobei die Datenbankstruktur immer zur Anwendung passen muss. Manchmal macht ein Programmupdate nicht das was es soll und der Kunde muss wieder die Vorgängerversion benützen. Das Problem ist nur, dass die Struktur der DB geändert wurde und es keinen Weg zurück gibt. Lange Rede, kurzer Sinn - die Datenbankstruktur sollte so gebaut werden, dass sie sich nicht ändern muss, nur weil die Anwendung neue Optionen zur Konfiguration bekommen hat. Dazu kann man z.B. eine Key/Value Tabelle verwenden.
Code:
Die Keys werden durch die Punkt-Notation strukturiert, damit man leicht erkennen kann was zusammengehört.
Key | Value
============================================================== UI.Reporting.DefaultPrinter | Epson 4200 UI.Reporting.AllowCangePrinter | True UI.Reporting.DefaultCopies | 1 Logger.File | C:\Users\xxx\Logs\info.log Logger.LogLevel | 2 Da mehrere Rechner mit einer Datenbank verbunden sein können, sollte man die Tabelle noch um den Rechner- oder Terminalname aufbohren:
Code:
Instance varchar(50)
Key varchar(50) Value varchar(250) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:55 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