AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Selektierte Datenätze in neue Abfrage
Thema durchsuchen
Ansicht
Themen-Optionen

Selektierte Datenätze in neue Abfrage

Ein Thema von TKanne · begonnen am 25. Mai 2011 · letzter Beitrag vom 26. Mai 2011
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Selektierte Datenätze in neue Abfrage

  Alt 25. Mai 2011, 21:24
Am elegantesten geht es, wenn du eine temp. Tabelle anlegst und bei jedem Auswählen eines Datensatzes diesen in die temp. Tab einfügst bzw. auch wieder löschst (nur den PK)

Das ist für den User gefühlt die schnellste Art
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
TKanne

Registriert seit: 6. Aug 2007
Ort: Berlin
25 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Selektierte Datenätze in neue Abfrage

  Alt 25. Mai 2011, 21:29
Hmm, das mit der Temp-Tabelle wäre evtl. auch eine Variante, allerdings in diesem Fall ungünstig, da ich nur zu Auswertungen auf eine 'fremde' Datenbank zugreife und dort nur Leserechte habe.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: Selektierte Datenätze in neue Abfrage

  Alt 25. Mai 2011, 21:45
Ich würde mich allen anschließen.

Code:
where [] in (...)
ist sicher eine einfache und preiswerte Möglichkeit.

Code:
[temptable]
bietet sich vor allem wegen der Performance an. Das hängt aber auch stark mit den erreichbaren Ausführungsplänen und Mengengerüsten zusammen. Weiß nicht, was der mySQL Optimizer alles kann.
Es muss nicht mal unbedingt "temp" sein. Eine permanente, userspezifische Tabelle könnte nicht nur die gewünschten Subselects liefern, sondern bspw. die letzten 10 Selektionen speichern....

P.S.: nur Leserechte passen natürlich eher zur ersten Variante
Gruß, Jo

Geändert von jobo (25. Mai 2011 um 21:47 Uhr) Grund: Sekundenschlaf
  Mit Zitat antworten Zitat
TKanne

Registriert seit: 6. Aug 2007
Ort: Berlin
25 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Selektierte Datenätze in neue Abfrage

  Alt 25. Mai 2011, 22:05
Hallo,

danke für Eure Vorschläge.

So, ich habe es jetzt mit der
Code:
where [] in (...)
Variante gemacht.

Funktioniert erst einmal soweit, zumindest mit 1342 selektierten Datensätzen, und die Select-Zeit ist auch akzeptabel, zumindest wenn man temporär das Dataset auf DisableControls setzt.
Allerdings bin ich mir noch etwas unsicher, das es ab einer gewissen Anzahl evtl. zu Problemen kommen kann.

Das war ja im Prinzip auch mein Ansatz, hatte nur gedacht, das wäre etwas laienhaft und es gäbe eine elegantere Lösung.

Aber die Temp-Tabellen-Version bzw. das speichern der Selektion in einer speziellen Tabelle werde ich mir mal für ein anderes Projekt merken.

Also Vielen Dank erst einmal,
TKanne
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: Selektierte Datenätze in neue Abfrage

  Alt 25. Mai 2011, 22:09
Zu "where.. in.." sollte es je nach DB Version Limits geben (Doku, ..).
Welcher normale Benutzer selektiert aber per Klick mehr als 1000 Sätze?
Hier würde ich notfalls in der Anwendung ein Limit setzen oder auch in der Benutzerunterstützung. "select all" dürfte es dann nicht geben.
Gruß, Jo
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#6

AW: Selektierte Datenätze in neue Abfrage

  Alt 26. Mai 2011, 08:36
Eine andere Methode, die ich mal bei einer Access-DB angewendet habe. Da hatte die Tabelle eine weitere (im normalen Verlauf nicht genutzte und nicht sichtbare) Spalte, die einen Boolean-Wert oder 0/1 hatte. Da wurde dann einfach beim Selecten, oder Doppelklicken der Datansatz von 0 auf 1 geändert oder umgekehrt.

Dann braucht die ursprüngliche Query nicht nach ausgewählten Elementen durchgeeiert zu werden, und auch kein langes "in (..)" oder "..or..or..or.." SQL-Statement, sondern nur der Select auf True oder 1 (in dieser Spalte) eingeschränkt zu werden.

Keine Ahnung ob das eine sonst sinnvolle Lösung ist, der DB eine Spalte mitzugeben, die nicht wirklich Daten enthält, sondern nur der bequemen Steuerung dient. Dazu hab ich noch zu wenig Erfahrung und bin kein Datenbankler.

OT: Wieso heißt es eigentlich Datenbankler und nicht Datenbanker?
Ralph
  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
 
#7

AW: Selektierte Datenätze in neue Abfrage

  Alt 26. Mai 2011, 08:41
Das ist aber auch nur dann sinnvoll beim Single-User Betrieb.
Sobald mehrere gleichzeitig mit den Daten arbeiten geht das nicht mehr.

Aber er hat nur einen rein lesenden Zugriff auf die Daten
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
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#8

AW: Selektierte Datenätze in neue Abfrage

  Alt 26. Mai 2011, 08:56
Das ist aber auch nur dann sinnvoll beim Single-User Betrieb.
Sobald mehrere gleichzeitig mit den Daten arbeiten geht das nicht mehr.
Stimmt. Daran hab ich gar nicht gedacht.

Aber er hat nur einen rein lesenden Zugriff auf die Daten
Und das hab ich gepflegt überlesen.
Ralph
  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 13:09 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