Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Wie am besten Daten visualisieren und auswahl verarbeiten (https://www.delphipraxis.net/128558-wie-am-besten-daten-visualisieren-und-auswahl-verarbeiten.html)

ryLIX 2. Feb 2009 16:52

Re: Wie am besten Daten visualisieren und auswahl verarbeite
 
*push*
:duck:

mjustin 2. Feb 2009 17:40

Re: Wie am besten Daten visualisieren und auswahl verarbeite
 
Zitat:

Zitat von ryLIX
Bezieht sich das SELCET Stmt nicht immer auf Columns?

Man kann in der SELECT Klausel auch dann konstante Ausdrücke angeben, wenn man mit der Ergebnisdatenmenge ein INSERT durchführt.

SQL-Code:
INSERT INTO NeueTabelle (NeuesFeld, sonstige Felder ...)
SELECT KonstanterAusdruck, sonstige Felder ...
FROM AlteTabelle
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.

ryLIX 2. Feb 2009 18:21

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.

ryLIX 3. Feb 2009 18:24

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?

shmia 4. Feb 2009 18:32

Re: Wie am besten Daten visualisieren und auswahl verarbeite
 
Du kannst auch mehrere Datensätze im DBGrid markieren.
Delphi-Quellcode:
DBGrid1.Options := DBGrid1.Options + [dgMultiSelect]
Damit könnte der Benutzer auswählen, welche Datensätze er exportieren will.
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.

ryLIX 4. Feb 2009 18:44

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:
SELECT SERIES, ECU, COMMENT FROM DATA WHERE COMMENT !=""
Ist das Stmt was ich verwende um den Tree aufzubauen.
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:
    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;
Die Connection von dbqry ist Databaseconn.
Könnte es daran liegen?

nahpets 5. Feb 2009 13:19

Re: Wie am besten Daten visualisieren und auswahl verarbeite
 
Hallo,

probiere mal bitte:
SQL-Code:
SelectSQL := 'SELECT SERIES, ECU, COMMENT FROM DATA WHERE COMMENT != "" AND COMMENT IS NOT NULL';
Noch ein "blöder" Vorschlag:
SQL-Code:
SELECT SERIES, ECU, COMMENT FROM DATA WHERE COMMENT is not null and COMMENT > " "

ryLIX 5. Feb 2009 13:42

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:
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 !="")'
Funktioniert wunderbar aber

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 ECU FROM DATA WHERE COMMENT !="")'
Macht mir Probleme.
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.

nahpets 5. Feb 2009 15:15

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 !="")'

ryLIX 5. Feb 2009 15:25

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 12:44 Uhr.
Seite 2 von 3     12 3      

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