AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Unterschiedliche Datensätze selektieren
Thema durchsuchen
Ansicht
Themen-Optionen

Unterschiedliche Datensätze selektieren

Ein Thema von HPB · begonnen am 9. Dez 2014 · letzter Beitrag vom 9. Dez 2014
Antwort Antwort
HPB

Registriert seit: 2. Jun 2008
365 Beiträge
 
Delphi XE7 Professional
 
#1

Unterschiedliche Datensätze selektieren

  Alt 9. Dez 2014, 08:03
Datenbank: Interbase • Version: 3 • Zugriff über: Server
Guten Tag Delphianer,
ich möchte aus einer Tabelle einzelne Datensätze selektieren.

Z. B. befinden sich in einer Tabelle die Datensätze:

Key Artikelnummer Artikelanme
1 Artikel1 Irgendetwas
2 Artikel56 Nochwas
3 Artikel89 Anderer Artikel
4 Artikel100 Zuerst
5 Artikel899 Immer
6 Artikel34456 Verschieden
7 Artikel111 Nicht den
8 Artikel000 Dies und das
usw.

Ich möchte nun z. B. die Datensätze 1, 3, 4, 6, 7, 118 zusammen auswählen
um sie mit Fastreport auszudrucken.

Aber wie selektiere ich nun diese Datensätze?
Mit select * from artikel where ??? kann ich die Datensätze ja nicht filtern.

Ich könnte der Tabelle eine neue Spalte "drucken J/N" hinzufügen und dann
auf dieses Feld abfragen where drucken = J .

Aber vielleicht kennt noch jemand eine andere Lösung?

Mit Gruß

HPB
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Unterschiedliche Datensätze selektieren

  Alt 9. Dez 2014, 08:16
  1. Temporäre Tabelle mit den ausgewählten IDs füllen und dann damit die Abfrage gestalten
  2. ClientDataSet mit den ausgewählten IDs füllen und dann per MasterDetail-Verbindung nur die markierten Sätze verwenden
  3. ClientDataSet mit den kompletten ausgewählten Sätzen füllen und die dem Report geben
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.314 Beiträge
 
Delphi 12 Athens
 
#3

AW: Unterschiedliche Datensätze selektieren

  Alt 9. Dez 2014, 08:28
WHERE Key IN (1, 3, 4, 6, 7, 118) oder denke ich da jetzt zu falsch?

Wie entscheidest du eigentlich was gedruckt werden soll, also wo kommen die Keys her?
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 9. Dez 2014 um 08:39 Uhr)
  Mit Zitat antworten Zitat
HPB

Registriert seit: 2. Jun 2008
365 Beiträge
 
Delphi XE7 Professional
 
#4

AW: Unterschiedliche Datensätze selektieren

  Alt 9. Dez 2014, 08:58
WHERE Key IN (1, 3, 4, 6, 7, 118) oder denke ich da jetzt zu falsch?

Wie entscheidest du eigentlich was gedruckt werden soll, also wo kommen die Keys her?
Danke an Euch beiden.
Den Vorschlag von Sir Rufo werde ich noch testen.

Zu himutsu:
Ich stelle die Daten in einem VirtualStringTree mit einer CheckBox dar.
Nun kann ich jeden zu druckenden DS aktivieren (CheckBox = Checked)
Im Node des VirtualStringTree ist der PrimaryKey der Tabelle mit hinterlegt.
Dein Vorschlag mit WHERE Key IN (1, 3, 4, 6, 7, 118) sieht doch sehr viel versprechend aus. Muss ich aber noch prüfen.
Vielen Dank nochmals
HPB
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.314 Beiträge
 
Delphi 12 Athens
 
#5

AW: Unterschiedliche Datensätze selektieren

  Alt 9. Dez 2014, 09:16
Selektierte Items durchgehen und die IDs mit Komma in einem String zusammenhängen.
Alternativ die IDs in eine Liste/Array und dann eine Funktions, welche die Einträge (Integer/String) mit Kommas zu einem Strig verbindet.
z.B. eine TStringList -> Add(IntToStr(Key)) > CommaText

Query.SQL := '... WHERE Key IN (' + KommaListe + ')'
oder
Delphi-Quellcode:
Query.SQL := '... WHERE Key IN (&KommaListe)';
Query.MacroByName('KommaListe').Value := KommaListe;
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
HPB

Registriert seit: 2. Jun 2008
365 Beiträge
 
Delphi XE7 Professional
 
#6

AW: Unterschiedliche Datensätze selektieren

  Alt 9. Dez 2014, 09:26
Selektierte Items durchgehen und die IDs mit Komma in einem String zusammenhängen.
Alternativ die IDs in eine Liste/Array und dann eine Funktions, welche die Einträge (Integer/String) mit Kommas zu einem Strig verbindet.
z.B. eine TStringList -> Add(IntToStr(Key)) > CommaText

Query.SQL := '... WHERE Key IN (' + KommaListe + ')'
oder
Delphi-Quellcode:
Query.SQL := '... WHERE Key IN (&KommaListe)';
Query.MacroByName('KommaListe').Value := KommaListe;
Danke himitsu,
ich habe es gerade mal ausprobiert.
Mit dem SQL-Befehl:
Delphi-Quellcode:
select * from ksopreise
where ksoid IN (323933, 94970, 504926)
bekomme ich das korrekte Ergebnis.
Es ist gelöst!

Gruß
HPB
  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 02:40 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