AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Felder eines Datensatzes in Query zu einzelnen Datensätzen
Thema durchsuchen
Ansicht
Themen-Optionen

Felder eines Datensatzes in Query zu einzelnen Datensätzen

Ein Thema von haentschman · begonnen am 8. Jul 2007 · letzter Beitrag vom 10. Jul 2007
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.298 Beiträge
 
Delphi 12 Athens
 
#1

Felder eines Datensatzes in Query zu einzelnen Datensätzen

  Alt 8. Jul 2007, 21:26
Datenbank: Paradox • Zugriff über: SQL
Hallo alle...

ich habe eine Tabelle z.B. mit Feld1, Feld2, Feld3.

ist es mit Query möglich jedes Feld als einzelnen Datensatz in einem Feldx als Ergebnis zu erhalten ?

Ich hoffe auf eine Lösung...
Für Eure Hilfe Danke im Voraus...

Hintergrund: ich muß die einzelnen Felder nacheinander im Report darstellen in einem Band, da aber die
Feldwerte unterschiedlich sind kann ich es nicht statisch lösen. Desweiteren wird in Abhängigkeit des Feldwertes das Band gedruckt oder nicht.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Felder eines Datensatzes in Query zu einzelnen Datensätz

  Alt 9. Jul 2007, 06:17
Guten Morgen,

LocalSQL bietet leider keine komfortablen Sprachmittel zur Spalten-Zeilen-Transposition. Für eine überschaubare Menge an Feldern kannst du aber mit UNION nachhelfen:

SQL-Code:
SELECT id, feld1 FROM tabelle WHERE id = :id
UNION
SELECT id, feld2 FROM tabelle WHERE id = :id
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.298 Beiträge
 
Delphi 12 Athens
 
#3

Re: Felder eines Datensatzes in Query zu einzelnen Datensätz

  Alt 9. Jul 2007, 08:36
Guten Morgen...

Danke für die Richtung... werde mich mit Union eingehend beschäftigen.
Ich melde mich dann wieder
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.298 Beiträge
 
Delphi 12 Athens
 
#4

Re: Felder eines Datensatzes in Query zu einzelnen Datensätz

  Alt 9. Jul 2007, 11:06
Hallo...

mit UNION wäre es der Weg, wenn ich mich nicht verkehrt ausgedrückt hätte

ich benötige nicht den Feldinhalt als Ergebnis sondern den Feldnamen.

Beispiel:

Tabelle vorhanden:

SpalteA SpalteB SpalteC

TextA True True
TextB False True
TextC True False


Datensatzzeiger steht z.B. auf Datensatz 1, Abfage welche Spalte True enthält.
das Ergebnis sollte so aussehen:

SpalteX

SpalteB
SpalteC


bei Datensatz 2 so:

SpalteX

SpalteC


das ist natürlich etwas völlig anderes...sorry

Vieleicht gibt es eine simple Lösung.
Ich werde aber das Gefühl nicht los Umwege zu gehen...
  Mit Zitat antworten Zitat
noidic

Registriert seit: 21. Nov 2005
Ort: Mönchengladbach
25 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Felder eines Datensatzes in Query zu einzelnen Datensätz

  Alt 9. Jul 2007, 11:12
Ich wüsste da keine Möglichkeit, das in SQL abzubilden. Vielleicht kannst du die Anforderung, die dahinter steht, etwas weiter ausleuchten, dann kann man sich eventuell die ein oder andere Alternative überlegen.
The light at the end of the tunnel may be an oncoming dragon.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.298 Beiträge
 
Delphi 12 Athens
 
#6

Re: Felder eines Datensatzes in Query zu einzelnen Datensätz

  Alt 9. Jul 2007, 12:29
Danke für die schnelle Reaktion...

Der Hintergrund:

in der Tabelle werden Grundeinstellungen gespeichert.

SpalteA enthält die Typenbezeichnung der Anlage. Die weiteren Spalten entsprechen den Komponenten. der Spalteninhalt ist True oder False. Je nach Typbezeichnung sind Komponenten vorhanden oder nicht.

Diese Tabelle benutze ich u.a. für das ein- bzw. ausblenden von Registerkarten.

zu jeder Komponente existiert eine weitere Tabelle mit je nach Komponente unterschiedlichen Feldern.

Jetzt möchte ich mit FreeReport die einzelnen Spalten / Daten darstellen. (Wechsel von QuickReport)

Der Report sollte etwa so aussehen:

1. Anlagentyp auswählen --> Datensatzeiger setzen in Tabelle Grundeinstellungen
2. Abfrage... Komponente vorhanden -- > Ergebnis Tabelle mit den vorhandenen Komponenten (Feldnamen)
3. Abfrage... Tabellen der Komponenten ( Felder, Daten )

Überschrift - Typbezeichnung (Tabelle Grundeinstellungen)
Feldname1 in TabelleKomponente---Feldname2 in TabelleKomponente---Feldname3 in TabelleKomponente ...
Daten Feld1----------------------Daten Feld2----------------------Daten Feld3

in der Query müssen dann alle Daten der Tabellen vorhanden sein. Über Master/Detail (Gruppierung ) läßt sich das dann leicht darstellen.
Oder...vor jedem Print des Bandes neue Query mit der nächsten Tabelle für die Daten. Grundlage für den Report wäre aber eine Tabelle mit der Menge der vorhandenen Komponenten...

Fazit:
mit Quickreport war es ungleich einfacher Eigenschaften zuzuordnen oder den Bericht von extern zu steuern. ( Lernphase FreeReport ) Deshalb habe ich nach einer Möglichkeit über Query gesucht um die Daten zusammenzufassen. Der Ausschlaggebende Punkt zu wechseln war die Möglichkeit mehrere Seiten zu definieren und jeder Seite eigene Eigenschaften zuzuordnen ( z.B. Ausrichtung ).

Kein einfacher Weg... aber kriege ich irgendwie !

Ich hoffe, mich verständlich ausgedrückt zu haben. Viel Spaß beim Nachdenken... Viele Wege führen nach Rom...mir raucht schon der Kopf.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.298 Beiträge
 
Delphi 12 Athens
 
#7

Re: Felder eines Datensatzes in Query zu einzelnen Datensätz

  Alt 10. Jul 2007, 09:53
Hallo alle miteinander...

ich habe das jetzt über Umwege gelöst...

1. dynamisch eine Tabelle erzeugt
2. Datensatz mit den Komponenten mit Schleife durchlaufen und in der neuen Tabelle die Feldnamen
als einzelne Datensätze abgelegt.
Jetzt habe ich eine Datenmenge als Grundlage für den Report.
3. im BeforePrint des Bandes hole ich mir dann über eine Query die passenden Daten.

Delphi-Quellcode:
procedure TempTable1;
var
  Tabelle: TTable;
begin
  Form1.TabTemp.Active:= False;
  if FileExists(Form6.Verzeichnis.Text + '\Temp.DB') then DeleteFile(Form6.Verzeichnis.Text + '\Temp.DB');
  Tabelle:= TTable.Create(nil);
  with Tabelle do
    begin
      SessionName:= Form1.TabKunden.SessionName;
      TableType := ttParadox;
      TableName := Form6.Verzeichnis.Text+ '\Temp.DB';
      with FieldDefs do
        begin
          Clear;
          Add('Bezeichnung', ftString, 30);
        end;
      CreateTable;
    end;
  Form1.TabTemp.Active:= True;
end;
Delphi-Quellcode:
procedure Anlagenschema;
var
  A: Integer;

begin
  for A:=0 to 8 do
    begin
      if Form1.TabAnlagenschema.Fields.Fields[A].AsBoolean then
        begin
          Form1.TabTemp.Append;
          Form1.TabTemp.Edit;
          Form1.TabTemp.FieldValues['Bezeichnung']:= Form1.TabAnlagenschema.Fields.Fields[A].FieldName;
          Form1.TabTemp.Post;
        end;
    end;

end;
Vieleicht hilft es ja jemandem mit ähnlichen Sorgen....
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:44 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