Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Resume Next (https://www.delphipraxis.net/61699-resume-next.html)

DelphiAndreas 25. Jan 2006 08:19


Resume Next
 
Hallo,

als alter Visual Basic-Programmierer vermisse ich bei Delphi die schöne Möglichkeit derF ehlerbehandlung durch einfaches Ignorieren des Fehlers.

Ich habe zB eine Zuweisung von Datenbankfeldinhalten an ein Array, sollte hier ein Feld nicht existieren, so soll das vom Programm einfach ignoriert werden. Gibt es da vielleicht doch eine Möglichkeit? :gruebel:

Danke
Gruß
Andreas

Schaedel 25. Jan 2006 08:26

Re: Resume Next
 
Wenn ein Datenbankfeld nicht besteht ...
Dann sollte doch schon SQL anmeckern das es das Feld nicht gibt.
Wie willst du das im Delphi abfangen?

DelphiAndreas 25. Jan 2006 08:29

Re: Resume Next
 
:oops: jetzt passt es allmählich mehr ins Datenbank-Forum.

ich hab ein paar anweisungen in der art
Delphi-Quellcode:
v_data[55] := ttable.fieldbyname('FELDNAME').AsString;
geht das überhaupt mit SQL? ich wüsste nur
Delphi-Quellcode:
v_data[55] := tquery.fieldbyname('FELDNAME').AsString;
ist allerdings dann im prinzip das gleiche

Gruß
Andreas

marabu 25. Jan 2006 08:29

Re: Resume Next
 
Hallo Andreas,

greifst du auf ein nicht vorhandenes Datenbankfeld zu, dann wird eine exception geschmissen, die du auffangen, ignorieren oder vernichten kannst - alles schlechter Stil in deinem Fall. Besser du berücksichtigst in deinem Code bereits die Tatsache, dass ein Feld fehlen könnte.

Alle Zugriffskomponenten bieten die Möglichkeit sich über die tatsächlich vorhandenen Felder zu informieren. Zur Not hilft auch das:

SQL-Code:
SELECT * FROM table WHERE 1 = 0
Grüße vom marabu

dataspider 25. Jan 2006 08:40

Re: Resume Next
 
Hi,

es gibt immer 2 Möglichkeiten. Man verhindert eine Exception durch sinnvollen Code oder man benutzt das Delphi eigene Exeption - Handling.
Damit kann ich auch eine sogenannte stille Exception benutzen:

Delphi-Quellcode:
  with Query1 do
  begin

    // Verhindern einer Exception
    if FindField('FELDNAME') <> nil then
      v_data[55] := fieldbyname('FELDNAME').AsString;
   
    try
      v_data[56] := fieldbyname('FELDNAME2').AsString;
    except
      // stille Exception
    end

  end;
Cu, Frank

DelphiAndreas 25. Jan 2006 09:26

Re: Resume Next
 
naja, der code ist noch aus den anfangstagen meines vorgängers, vielleicht sollte ich ihn doch einfach ein bißchen umschreiben. :gruebel:

dann kommen die feldnamen halt zuerst auch in ein array, das wird dann durchgegangen und geguckt, ob das feld existiert, bevor es auszulesen versucht wird.

Schaedel 25. Jan 2006 09:49

Re: Resume Next
 
Das ist durchaus die bessere Lösung.
Alles andere is zu unsicher


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:09 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