AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ZQuery mit Daten aus anderem DataSet füttern (2 ZQrs verkn.)
Thema durchsuchen
Ansicht
Themen-Optionen

ZQuery mit Daten aus anderem DataSet füttern (2 ZQrs verkn.)

Ein Thema von SMALLID · begonnen am 12. Nov 2007 · letzter Beitrag vom 12. Nov 2007
Antwort Antwort
SMALLID

Registriert seit: 10. Aug 2004
78 Beiträge
 
#1

ZQuery mit Daten aus anderem DataSet füttern (2 ZQrs verkn.)

  Alt 12. Nov 2007, 12:33
Datenbank: MySQL • Version: 4.1 • Zugriff über: ZeosLib
Hello,

folgendes "Problem":

Ich habe eine Client-Anwendung, die über die Zeos-Komponenten auf eine MySQL Datenbank zugreift. Im Hauptfenster der Anwendung habe ich eine ZTable und zwei ZQueries mit folgender Verknüpfung platziert:

ZConnection1 <--- ZTable1 <--- DataSource1 <--- ZRestrictionQuery <--- DataSource2 <--- ZDisplayQuery

Die beiden Queries haben ebenfalls eine Eigenschaft "Connection", die ich auch auf ZConnection1 setzen muss, da sonst eine Ausnahme mit einem entsprechenden Hinweis kommt, dass diese Eigenschaft doch bitte gesetzt werden soll. Die Eigenschaft "DataSource" der jeweiligen DataSet-Komponente ist auf das oben jeweils vorliegend gezeigte DataSource gesetzt, um - so der Gedanke - die Datenmenge, mit der das DataSet arbeitet, entsprechend auf vorherliegende Datenmenge zu beschränken.

Anyway, was ich konkret machen will, ist folgendes: Ich habe am Anfang der Anwendung einen kleinen Login-Dialog. Je nach dem, wer sich einloggt, soll die Abfrage in ZRestrictionQuery.SQL geändert werden, sodass idealerweise ZDisplayQuery nur mit den Daten arbeitet, die der Nutzer sehen "darf". ZDisplayQuery ist dann für das normale arbeiten (mit suchen, etc.) innerhalb dieser eingeschränkten Menge von Daten zuständig.

Nur leider zeigt mir ZDisplayQuery mehr an, als es soll. Ein Beispiel:

ZRestrictionQuery.SQL sagt:

SELECT * FROM Table1 WHERE Col1 = Valx; ZDisplayQuery sagt initial einfach:

SELECT * FROM Table1 Nun scheint es so zu sein, dass nur diese letzte Abfrage zählt und er mir eben alle Daten aus Table1 anzeigt. Meine Hoffnung war aber vielmehr, dass mit dem Setzen der Eigenschaft "DataSource" von ZDisplayQuery auf DataSource2 nur die Daten für die SQL-Abfrage verwendet werden, die mir von ZRestrictionQuery auch zur Verfügung gestellt werden.

Hmm, mache ich was falsch? Habe ich einen Denkfehler gemacht? Wenn ihr mehr Infos braucht, bitte melden. Ist echt ein ärgerliches Problem
Muh
  Mit Zitat antworten Zitat
marabu

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

Re: ZQuery mit Daten aus anderem DataSet füttern (2 ZQrs ver

  Alt 12. Nov 2007, 12:50
Hallo,

ich glaube du machst das viel zu kompliziert. Ich würde nur mit einer einzigen Query arbeiten und die wertmäßige Beschränkung bzw. die WHERE-Klausel gleich nach dem Anmelden erstellen.

Grüße vom marabu
  Mit Zitat antworten Zitat
SMALLID

Registriert seit: 10. Aug 2004
78 Beiträge
 
#3

Re: ZQuery mit Daten aus anderem DataSet füttern (2 ZQrs ver

  Alt 12. Nov 2007, 12:53
Ja die Idee hatte ich natürlich auch. Das Problem ist, dass ich einen Button "Alle anzeigen" habe, der sozusagen ZDisplayQuery auf "SELECT * FROM Table1" setzt. Darüberhinaus habe ich Suchfunktionen, die das SQL verändern. Wenn ich das in einer Query machen will, müsste ich ja an all diesen Stellen prüfen, welcher Nutzer eingeloggt ist und die SQL-Abfrage an all diesen Stellen entsprechend unterschiedlich formatieren, oder?
Muh
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: ZQuery mit Daten aus anderem DataSet füttern (2 ZQrs ver

  Alt 12. Nov 2007, 12:53
Du kannst keine Query auf eine Query ausführen.
Die Vorstellung, man könnte Daten über eine Query filtern und dann über eine 2. Query nochmals weiter filtern funktioniert so nicht.
Andreas
  Mit Zitat antworten Zitat
SMALLID

Registriert seit: 10. Aug 2004
78 Beiträge
 
#5

Re: ZQuery mit Daten aus anderem DataSet füttern (2 ZQrs ver

  Alt 12. Nov 2007, 12:54
Hmm, gibt es dann eine weitere Möglichkeit, das elegant zu lösen?
Muh
  Mit Zitat antworten Zitat
marabu

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

Re: ZQuery mit Daten aus anderem DataSet füttern (2 ZQrs ver

  Alt 12. Nov 2007, 13:01
Ich verwende in fast allen SQL-Anwendungen mit Rollenkonzept eine Funktion GetSQL(), die ich so implementiert habe, dass sie jede benutzer-einstellbare Projektion und Selektion der Daten als SQL-Statement zurückliefert. Dabei wird die wertmäßige Beschränkung aufgrund der Benutzer- bzw. Anwendungsrolle einfach als zusätzliches (auch mehrere) Kriterium behandelt. Das ist nicht sehr aufwändig.
  Mit Zitat antworten Zitat
SMALLID

Registriert seit: 10. Aug 2004
78 Beiträge
 
#7

Re: ZQuery mit Daten aus anderem DataSet füttern (2 ZQrs ver

  Alt 12. Nov 2007, 13:03
Das klingt sehr interessant. Ich werd das mal testweise ausprobieren ... melde mich dann wieder... Vielen Dank an alle erstmal!
Muh
  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 01:23 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