AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Schleife zum aktivieren von Queries
Thema durchsuchen
Ansicht
Themen-Optionen

Schleife zum aktivieren von Queries

Ein Thema von f4k3 · begonnen am 10. Jun 2009 · letzter Beitrag vom 11. Jun 2009
Antwort Antwort
Benutzerbild von f4k3
f4k3

Registriert seit: 15. Aug 2007
Ort: Nürnberg
313 Beiträge
 
Delphi 2007 Architect
 
#1

Schleife zum aktivieren von Queries

  Alt 10. Jun 2009, 14:44
Datenbank: Firebird • Version: 2.1 • Zugriff über: ZEOS
Moin Moin liebe DPler

hab folgendes Problem und versteh die Logik momentan grad nicht

Also ich hab eine Routine geschrieben die mir meine Komponenten vom Typ TZQuery (ZEOS) aktiviert.
Da ich zwei Queries habe die ich von der Aktivierung auschliessen möchte, überprüfe ich den
Namen der Komponenten ... ich post euch mal meinen Code ...

Delphi-Quellcode:
...
for I := 0 to frmMain.ComponentCount - 1 do
begin
  // Überprüfen ob Komponente vom Typ "TZQuery"
  if frmMain.Components[I] is TZQuery then
  begin
    // >>>>>>>>>>>>>>>> Hier passiert die Überprüfung <<<<<<<<<<<<<<<<<
    if ((frmMain.Components[I] as TZQuery).Name <> 'qryB') OR
       ((frmMain.Components[I] as TZQuery).Name <> 'qryK') then
    begin
       // Log: Versuch Query zu aktivieren
       frmDbProgress.mLog.Lines.Append('Query "' + (frmMain.Components[I] as TZQuery).Name +
                                       '" wird versucht zu aktivieren ...');

       // Query aktivieren
       try
         (frmMain.Components[I] as TZQuery).Active := True;
         frmDbProgress.mLog.Lines.Append('Query "' + (frmMain.Components[I] as TZQuery).Name +
                                         '" wurde erfolgreich aktiviert ...');
         frmDbProgress.prgDb.StepIt;
         except on E: Exception do
           begin
             Cursor := crDefault;
             // Fehlermeldung ausgeben
             frmDbProgress.mLog.Lines.Append('Query "' + (frmMain.Components[I] as TZQuery).Name +
                                            '" konnte nicht aktiviert werden ...');
             // Errors um 1 erhöhen
             Inc(Errors);
         end;
       end;
    end;
  end;
end;
...
Die besagten Queries sind "qryB" und "qryK" ...

// >>>>>>>>>>>>>>>> Hier passiert die Überprüfung <<<<<<<<<<<<<<<<< ...
kennzeichnet den Teil in dem die Überprüfung stattfindet

Der teil dieses Codes wird im AfterConnect Event der Connection ausgeführt ... nur so als info am rande
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Schleife zum aktivieren von Queries

  Alt 10. Jun 2009, 15:51
Zitat:
Delphi-Quellcode:
if ((frmMain.Components[I] as TZQuery).Name <> 'qryB') OR
       ((frmMain.Components[I] as TZQuery).Name <> 'qryK') then
Der nachfolgende Code wird immer ausgeführt, hab ich recht?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Schleife zum aktivieren von Queries

  Alt 10. Jun 2009, 16:27
if (Name <> 'qryB') OR (Name <> 'qryK') then Name ist niemals mit beiden Strings gleich ... es kann ja immer nur einen Wert gleichzeitig annehmen

eventuell wolltest du AND verwenden?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Schleife zum aktivieren von Queries

  Alt 10. Jun 2009, 16:33
Spielverderber , ich wollte mal sehen, ob er selbst drauf kommt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Schleife zum aktivieren von Queries

  Alt 10. Jun 2009, 16:36
Um das ganze flexibler zu gestalten, könntest Du ja einfach eine bestimmte Zahl als Delphi-Referenz durchsuchenTag an die Komponente zuweisen. Damit sparst Du die lästigen String-Vergleiche (und Probleme wenn du den Namen änderst).

Viele Grüße
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Schleife zum aktivieren von Queries

  Alt 10. Jun 2009, 16:38
es muß ja nichtmal das AND sein ... immerhin kann man auch was mit den <> machen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von f4k3
f4k3

Registriert seit: 15. Aug 2007
Ort: Nürnberg
313 Beiträge
 
Delphi 2007 Architect
 
#7

Re: Schleife zum aktivieren von Queries

  Alt 11. Jun 2009, 14:03
Zitat von DeddyH:
Der nachfolgende Code wird immer ausgeführt, hab ich recht?
Damit hast du recht ja ...

nur ich versteh es irgendwo nicht ... step by step ...

if frmMain.Components[I] is TZQuery then Ich überprüfe ob die aktuelle Componente vom Typ TZQuery ist ...

Delphi-Quellcode:
if ((frmMain.Components[I] as TZQuery).Name <> 'qryB') or
   ((frmMain.Components[I] as TZQuery).Name <> 'qryK') then
Dann überprüfe ich ob der Name der Komponente ungleich "qryB" oder ungleich "qryK" ist ...
da immer nur das eine oder dass andere zutreffen kann müsst dass doch funktionieren ...

Angenommen "qryB" ist momentan in "frmMain.Components[I]" ...
die erste Bedingung ergiebt natürlich ein "TRUE" ... dann gehts an die zweite ...
ist der Name ungleich "qryB" = FALSE ... ist der Name ungleich "qryK" = TRUE

ow ... xD ... ja okay ... somit wird die schleife immer ausgeführt ...

jetzt versteh ich auch warum es funktioniert hat ... als ich nur auf "qryB" überprüft habe ...

Naja ... kurz vorm Feiertag xD ... okay ... danke für die schnelle hilfe jungs

Euer f4k3
Sascha
  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 18:27 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