AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Arbeitsweise dbGo ADO Query Komponente
Thema durchsuchen
Ansicht
Themen-Optionen

Arbeitsweise dbGo ADO Query Komponente

Ein Thema von Andidreas · begonnen am 29. Jul 2015 · letzter Beitrag vom 29. Jul 2015
Antwort Antwort
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Arbeitsweise dbGo ADO Query Komponente

  Alt 29. Jul 2015, 14:40
Datenbank: iSeries DB2 • Version: 7.1 • Zugriff über: dbGo ADO
Hallo zusammen,

wir arbeiten bei uns unter anderem mit der DB2 Datenbank der IBM iSeries.
Seit dem letzten IBM Patches erhalten wir nachdem Ausführen von unseren SQL Statements z.T. sehr komische SQL Fehlermeldungen (z.B. SQL901 Systemfehler, usw.)...
Ein Ticket an die IBM haben wir bereits erstellt...

Nun habe ich zu meinem Verständnis eine Frage zur Arbeitsweise der ADO Query Komponente (befindet sich in meiner Delphi IDE auf dem Tabreiter dbGO in den Komponenten)...

Bei Programmstart stellen wir die Verbindung über eine TADOConnection.Open her.
Alle verwendeten Queries sind dann mit dieser TADOConnection verbunden.
Ein SQL Statement wird wie folgt zusammengesetzt:

Delphi-Quellcode:

  Try
    With (ADOQuery1) Do
    Begin
      Active := False;
      SQL.Clear;
      SQL.Add(' Select * From Table1 ');
      SQL.Add(' Where FLD01 <> ''1'' ');
      Active := True;
    End;
  Except
    ShowMessage('Fehler');
    Exit
  End;
Nun ist die Aussage der IBM u.a. das mit jedem SQL.Add der SQL Befehl an die DB abgesetzt wird, kann das sein?
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Arbeitsweise dbGo ADO Query Komponente

  Alt 29. Jul 2015, 14:58
Erst ein paar allgemeine Anmerkungen:
Warum with?
Warum Clear/Add statt Text?

Warum kein Open?

Delphi-Quellcode:
  Try
      //Active := False; überflüssig
      //SQL.Clear; überflüssig
      AdoQuery1.SQL.Text := ' Select * From Table1 ' +
                            ' Where FLD01 <> ''1'' ';
      AdoQuery1.Open; //Besser als Active
...
Zitat:
Nun ist die Aussage der IBM u.a. das mit jedem SQL.Add der SQL Befehl an die DB abgesetzt wird, kann das sein?
Kann ich mir nicht vorstellen, sonst wäre das ein großer Bug
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Arbeitsweise dbGo ADO Query Komponente

  Alt 29. Jul 2015, 15:05
Nun ist die Aussage der IBM u.a. das mit jedem SQL.Add der SQL Befehl an die DB abgesetzt wird, kann das sein?
Wie kommen die zu dieser Annahme? Erhalten die ständig unvollständige DB-Abfragen von deiner Software?
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#4

AW: Arbeitsweise dbGo ADO Query Komponente

  Alt 29. Jul 2015, 15:20
Mir ist zudem neu, das IBM etwas von Delphi versteht.

Ich würde im Except-Teil den genauen Fehler mit ausgeben.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#5

AW: Arbeitsweise dbGo ADO Query Komponente

  Alt 29. Jul 2015, 19:08
Ich würde das zusätzlich noch das with eliminieren und die Abfrage parametrisieren.
Delphi-Quellcode:
Try
  ADOQuery1.Close;
  ADOQuery1.SQL.Text := ' Select * From Table1 Where FLD01 <> :SomeValue';
  ADOQuery1.Parameters.ParamByName('SomeValue').Value := '1';
  ADOQuery1.Open;
Except
  on E: Exception do
    ShowMessage('Es ist ein Fehler aufgetreten: ' + E.Message);
  Exit
End;
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 Sir Rufo
Sir Rufo

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

AW: Arbeitsweise dbGo ADO Query Komponente

  Alt 29. Jul 2015, 19:23
Ich würde das try except ganz weglassen, denn behandelt werden soll da nichts. Die Anzeige der Ausnahme erfolgt automatisch, unverfälscht und pur.

Man sieht direkt was für eine Fehlerklasse und den Text.

Aber warum einfach, wenn kompliziert ...
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 Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Arbeitsweise dbGo ADO Query Komponente

  Alt 29. Jul 2015, 20:31
Was passiert wenn du die entsprechenden SQL-Statements direkt auf der DB (mit IBM-Querytool) ausführst.
Manchmal machen solche Patches mehr kaputt als sie reparieren.

Alternativ ist natürlich immer die ADO/OLE DB-Schnittstelle gut für Probleme. M.E. kann man sie nur für MS-Datenquellen einsetzen.
Also wenn die Queries direkt funktionieren wäre Schnittstelle u.U. ein Problem wenn z.B. der Provider einfach nicht mehr mit diesem patch-Level zusammenspielt. Was wird den für ein Provider genommen?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Arbeitsweise dbGo ADO Query Komponente

  Alt 29. Jul 2015, 23:16
Bei Programmstart stellen wir die Verbindung über eine TADOConnection.Open her.
Warum?
Delphi-Quellcode:
aq.close;
aq.sql.text:='select irgendwas from irgendwo where wert=1';
aq.open;
while not aq.eof do begin
 ...
  aq.next;
end;
aq.close;
mehr braucht man nicht um funktionierende Abfragen zu haben.
Parameter und ggf. der Zugriff auf das recordset sind für Tests erst einmal unnötig, für den laufenden Betrieb aber nicht zu verachten.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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 07:57 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