AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ADOQuery und Result

Ein Thema von Cosamia · begonnen am 27. Jun 2008 · letzter Beitrag vom 27. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Cosamia
Cosamia

Registriert seit: 27. Feb 2007
Ort: Emmendingen
221 Beiträge
 
Delphi 2007 Professional
 
#1

ADOQuery und Result

  Alt 27. Jun 2008, 11:47
Datenbank: Access • Version: 2003 • Zugriff über: ADO
Liefert mir die ADOQuery ein Ergeignis, wenn die AdoQuery einen SQL.TEXT erfolgreich ausgeführt hat?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: ADOQuery und Result

  Alt 27. Jun 2008, 11:51
Eher wenn nicht
Markus Kinzler
  Mit Zitat antworten Zitat
shmia

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

Re: ADOQuery und Result

  Alt 27. Jun 2008, 11:54
Nein, es gibt eine Exception, wenn ein Problem aufgetreten ist.
Wenn du UPDATE, INSERT oder DELETE - Anweisungen absendest, dann sollte man keine TAdoQuery sondern TAdoCommand verwenden.
(habe da zwischen den Zeilen gelesen, dass du keine normalen SELECT-Anweisungen ausführen möchtest)

TAdoCommand.Execute ist mehrfach überladen und liefert in einigen Varianten die Anzahl der betroffenen Datensätze zurück.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Cosamia
Cosamia

Registriert seit: 27. Feb 2007
Ort: Emmendingen
221 Beiträge
 
Delphi 2007 Professional
 
#4

Re: ADOQuery und Result

  Alt 27. Jun 2008, 11:55
Ich habe das Thema, dass ich eine Query mit einem SQL Statement befülle, und hinterher per Rave ausdrucke.

Jetzt stellt sich das Problem, dass ich nach dem Query.open das Ravemodul öffne, welches aber wohl schneller ist, als Query mit dem Ausführen des Statements.

Ein Delay einbauen, halte ich für Pfusch, oder?
  Mit Zitat antworten Zitat
Benutzerbild von Cosamia
Cosamia

Registriert seit: 27. Feb 2007
Ort: Emmendingen
221 Beiträge
 
Delphi 2007 Professional
 
#5

Re: ADOQuery und Result

  Alt 27. Jun 2008, 11:57
Der Code sieht so aus:

Delphi-Quellcode:
 {AdoQuery mit allen Werten aus tempdruck füllen}
    adoquerydruck.sql.Clear;
    adoquerydruck.sql.text := 'SELECT * FROM tempdruck'; // Hier wird die Query für Rave befüllt.
    adoquerydruck.Open;




    {Alle Datensätze  die aktiv sind im Grid anzeigen}
    adoquery1.Active := false;
    adoquery1.sql.Clear;
    adoquery1.sql.text := 'SELECT * FROM best WHERE active = TRUE';
    adoquery1.Open;
    adoquery1.First;

    
    {Rave Formular aufrufen}
    RvProject1.Open;
    RvProject1.Execute;
  Mit Zitat antworten Zitat
shmia

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

Re: ADOQuery und Result

  Alt 27. Jun 2008, 12:12
Zitat von Cosamia:
Jetzt stellt sich das Problem, dass ich nach dem Query.open das Ravemodul öffne, welches aber wohl schneller ist, als Query mit dem Ausführen des Statements.
Das kann nicht sein. Das Programm kann [TADOQuery.]Open erst verlassen, wenn alle Daten gelesen sind.
Bei CursorLocation = clUseServer werden zwar Daten nachgeladen während man durch die Datenmenge geht, das macht aber programmiertechnisch keinen Unterschied.
adoquery1.First kannst du weglassen; nach einem ausgeführten Open steht der aktuelle Datensatz immer auf dem 1. Satz.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Cosamia
Cosamia

Registriert seit: 27. Feb 2007
Ort: Emmendingen
221 Beiträge
 
Delphi 2007 Professional
 
#7

Re: ADOQuery und Result

  Alt 27. Jun 2008, 12:15
Dann steckt das Problem woanders. Wenn ich mit mit F7 durch die einzelnen Schritte gehe, bringt Rave das gewünschte Ergebnis.

Beim normalen Programmdurchlauf leider nicht.
  Mit Zitat antworten Zitat
shmia

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

Re: ADOQuery und Result

  Alt 27. Jun 2008, 12:52
Zitat von Cosamia:
Dann steckt das Problem woanders. Wenn ich mit mit F7 durch die einzelnen Schritte gehe, bringt Rave das gewünschte Ergebnis.
Beim normalen Programmdurchlauf leider nicht.
Dann setz doch mal einen sleep(5000) an strategisch wichtige Stellen und lass das Programm mit F9 rennen.

Also nach adoquerydruck.Open sollte keine Auswirkung haben.
Aber vor adoquerydruck.Open könnte ich mir einen Effekt vorstellen.
Arbeitest du mit vielleicht mit Access und befüllst die Tabelle "tempdruck" an anderer Stelle?
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Cosamia
Cosamia

Registriert seit: 27. Feb 2007
Ort: Emmendingen
221 Beiträge
 
Delphi 2007 Professional
 
#9

Re: ADOQuery und Result

  Alt 27. Jun 2008, 12:53
Ja, ich arbeite mit Access.

Die Tempdruck wird vorgelagert hier befüllt:

Delphi-Quellcode:
While Not ADOQuerydruck.Eof do
       begin

    {Linsentyp bestimmen}
    cltype := adoquerydruck.FieldByName('TYP').AsString;
    selectedid := adoquerydruck.FieldByName('Zahl').AsInteger;

    {Felder aus der INI lesen}
    IniFile := TIniFile.create(GetIniFilename);
        try
          clprintfields := IniFile.ReadString ('CLTYPES-PRINT',cltype,'');
        finally
          inifile.Free;
        end;
    {Printfields zusammensetzen / CL-Felder mit Stammdaten}
    Printfields := 'Name,Kundennummer,Strasse,Ort,PLZ,Fax,Telefon,EMail,Zahl,Kommission,'+clprintfields;

    {Felder aus der INI in ein SELECT bügeln / Stammdaten nicht vergessen}
    adoquerytemp.SQL.Clear;

    adoquerytemp.sql.text := 'insert into tempdruck ('+printfields+') SELECT '+printfields+' FROM qryDruck where zahl ='+inttostr(selectedid);
    adoquerytemp.ExecSQL;

    {nächsten Datensatz aus der Querydruck lutschen}
    adoquerydruck.Next;
        end; {For I}
  Mit Zitat antworten Zitat
Benutzerbild von Cosamia
Cosamia

Registriert seit: 27. Feb 2007
Ort: Emmendingen
221 Beiträge
 
Delphi 2007 Professional
 
#10

Re: ADOQuery und Result

  Alt 27. Jun 2008, 13:52
unglaublich, aber leider wahr.

ein sleep (5000) funzt.
ein sleep (2000) scheint zu kurz, und ein sleep (3000) führt fast immer zum richtigen Ergebnis.

Ich habe es jetzt vor das Query.open gesetzt.

Kann mir jemand den Effekt erklären?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:04 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