![]() |
Re: Wie am besten Daten visualisieren und auswahl verarbeite
*push*
:duck: |
Re: Wie am besten Daten visualisieren und auswahl verarbeite
Zitat:
SQL-Code:
Damit können in diesem Fall die Tabellen-IDs bequem per SQL zusammen mit den sonstigen Daten aus den bisherigen Tabellen in die neue "Supertabelle" übernommen werden.
INSERT INTO NeueTabelle (NeuesFeld, sonstige Felder ...)
SELECT KonstanterAusdruck, sonstige Felder ... FROM AlteTabelle |
Re: Wie am besten Daten visualisieren und auswahl verarbeite
Ah ok danke für die erklärung.
War mir bisher nicht bekannt :) Bleibt immer noch die eigentlich Threadfrage. Da bin ich noch nciht weiter. |
Re: Wie am besten Daten visualisieren und auswahl verarbeite
So ich ein bisschen gewerkelt und überlegt...
Die Datenbank habe ich nun Umgebaut wie es empfohlen wurde. Sie hat nun folgende Struktur: SERIES: VARCHAR SG: VARCHAR FSW: VARCHAR PSW: VARCHAR COMMENT: NVARCHAR (Hab entdeckt das der Umlaute erlaubt :) ) Nun bin ich wieder bei der Visualisierung. Ich hatte überlegt hier ein record einzusetzten aber wieder verworfen weil es ja quatsch wäre und nur auf die Performance drücken würde. Mein derzeitiger Plan ist so: Ich hole mir aus der Tabelle alle Einträge von Series und SG wo Comment nicht NULL ist und baue daraus ein TreeView auf. Hier wäre schon eine Frage: Lieber alle auf einmal verarbeiten. In einem record array zwischen speichern und dann über eine funktion ins TreeView. Oder gleich in der while Schleife die Funktion für das TreeView aufrufen? Die anderen Daten würde ich dann wie im Hauptfenster über das selektierte TreeViewNode holen. Dann brächte ich nur noch einen "merker" damit ich weiß welche Datansätze in die DB geladen werden sollen bzw in die andere geschickt werden sollen. Hat jemand eine Idee dazu? |
Re: Wie am besten Daten visualisieren und auswahl verarbeite
Du kannst auch mehrere Datensätze im DBGrid markieren.
Delphi-Quellcode:
Damit könnte der Benutzer auswählen, welche Datensätze er exportieren will.
DBGrid1.Options := DBGrid1.Options + [dgMultiSelect]
Die markierten Datensätzen werden dann "abgegrasst" und als CSV-Datei oder XML auf Platte geschrieben. Zusätzlicher Komfort wäre das Markieren per Wildcards. Der Benutzer wählt im Menue "per Wildcard markieren..." und wird nach dem Muster gefragt. Wenn er z.B. *X2008 eingibt, dann werden alle Serien, die auf "X2008" enden markiert. |
Re: Wie am besten Daten visualisieren und auswahl verarbeite
Ich hab nun angefangen mit einer Hilfstabelle ein DB TreeView zu füllen und von da aus eine ListView mit Checkboxes.
Sieht alles schon relativ nett aus aber irgendwie macht mir DISQLite3 Probleme.
SQL-Code:
Ist das Stmt was ich verwende um den Tree aufzubauen.
SELECT SERIES, ECU, COMMENT FROM DATA WHERE COMMENT !=""
Seltsam ist das wenn ich im SQLiteAdministrator (der arbeitet mit ZEOS Kompos) das Stmt ausführe werden die richtigen zurück geliefert (das COMMENT holen soll dient nur der Kontrolle) aber wenn ich DISQLite3 das Stmt ausführen lass kommen auch einige Einträge die nicht da sein sollten. :? Ich habe schon versucht den FeldTypen fest zu legen auf WideString aber trotzdem kommen immer noch leere Felder mit. Es sind auch immer die gleichen. Auch das Manuelle Editieren der Felder, um diese zu leeren, bring nix. Edit: Hab nun och mal den Debug laufen lassen. Es scheint als würde es nicht an DISQLite liegen sondern daran wie ich die Tabelle aufbaue. Hier mal der Code:
Delphi-Quellcode:
Die Connection von dbqry ist Databaseconn.
with Main.dbqry do
begin SelectSQL := 'SELECT SERIES, ECU, COMMENT FROM DATA WHERE COMMENT !="" OR COMMENT !=NULL'; Open; while not Eof do begin Main.Databaseconn.Execute16('REPLACE INTO HELP (MASTER_ID, PARENT_ID, Name, Image) SELECT MASTER_ID, PARENT_ID, Name, Image FROM TreeView WHERE Name ="' + FieldByName('SERIES').AsString + '"'); Main.Databaseconn.Execute16('REPLACE INTO HELP (MASTER_ID, PARENT_ID, Name, Image) SELECT MASTER_ID, PARENT_ID, Name, Image FROM TreeView WHERE Name ="' + FieldByName('ECU').AsString + '"'); Next; end; Close; end; Könnte es daran liegen? |
Re: Wie am besten Daten visualisieren und auswahl verarbeite
Hallo,
probiere mal bitte:
SQL-Code:
Noch ein "blöder" Vorschlag:
SelectSQL := 'SELECT SERIES, ECU, COMMENT FROM DATA WHERE COMMENT != "" AND COMMENT IS NOT NULL';
SQL-Code:
SELECT SERIES, ECU, COMMENT FROM DATA WHERE COMMENT is not null and COMMENT > " "
|
Re: Wie am besten Daten visualisieren und auswahl verarbeite
Ich hab das Problem mittlerweile Isoliert in dem ich das ganze auf zwei qrys verkürzt habe.
SQL-Code:
Funktioniert wunderbar aber
REPLACE INTO HELP (MASTER_ID, PARENT_ID, Name, Image) SELECT T.MASTER_ID, T.PARENT_ID, T.Name, T.Image FROM TreeView AS T WHERE T.Name IN (SELECT SERIES FROM DATA WHERE COMMENT !="")'
SQL-Code:
Macht mir Probleme.
REPLACE INTO HELP (MASTER_ID, PARENT_ID, Name, Image) SELECT T.MASTER_ID, T.PARENT_ID, T.Name, T.Image FROM TreeView AS T WHERE T.Name IN (SELECT ECU FROM DATA WHERE COMMENT !="")'
Durch den IN Operator werden alle Einträge von ECU zurück geliefert die passen aber auch welche wo doppelt vorkommen. Sprich wenn ich bei Serie A das Steuergerät Z habe und dort ein Kommentar drin ist wird mir das geliefert. Ist aber Steuergerät Z auch in Serie C verbaut wird mir das auch aus der TreeView Tabelle geladen obwohl dort der Kommentar bei Data leer ist. Ich habs mit LIKE versucht aber dann wird mir nur der erste Treffer zurück geliefert. Im Moment suche ich nach einer Möglichkeit die doppelten Felder zu entfernen wenn kein Kommentar vorhanden ist. |
Re: Wie am besten Daten visualisieren und auswahl verarbeite
Hallo,
meinst Du das?
SQL-Code:
REPLACE INTO HELP (MASTER_ID, PARENT_ID, Name, Image) SELECT T.MASTER_ID, T.PARENT_ID, T.Name, T.Image FROM TreeView AS T WHERE T.Name IN (SELECT DISTINCT ECU FROM DATA WHERE COMMENT !="")'
|
Re: Wie am besten Daten visualisieren und auswahl verarbeite
Nein mit DISTINCT hab ich es auch schon Probiert.
Es kann ja vorkommen das dieses Steuergerät tatsächlich 2x vorkommt und auch 2x Kommentiert wurde. Edit. Jetzt hatte ich die zündende Idee :) So gehts:
Delphi-Quellcode:
with Main.dbqry do
begin SelectSQL := 'SELECT SERIES, ECU, COMMENT FROM DATA WHERE COMMENT !="" OR COMMENT !=NULL'; Open; while not Eof do begin Main.Databaseconn.Execute16('REPLACE INTO HELP (MASTER_ID, PARENT_ID, Name, Image) SELECT MASTER_ID, PARENT_ID, Name, Image FROM TreeView WHERE Name ="' + FieldByName('SERIES').AsString + '"'); Main.Databaseconn.Execute16('REPLACE INTO HELP (MASTER_ID, PARENT_ID, Name, Image) SELECT MASTER_ID, PARENT_ID, Name, Image FROM TreeView WHERE Name ="' + FieldByName('ECU').AsString + '" AND PARENT_ID = (SELECT MASTER_ID FROM TreeView WHERE Name ="'+FieldByName('SERIES').AsString+'")'); Next; end; Close; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:16 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-2025 by Thomas Breitkreuz