AGB  ·  Datenschutz  ·  Impressum  







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

Resume Next

Ein Thema von DelphiAndreas · begonnen am 25. Jan 2006 · letzter Beitrag vom 25. Jan 2006
Antwort Antwort
DelphiAndreas

Registriert seit: 25. Okt 2005
124 Beiträge
 
Delphi 2006 Professional
 
#1

Resume Next

  Alt 25. Jan 2006, 09:19
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?

Danke
Gruß
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Schaedel
Schaedel

Registriert seit: 5. Jan 2006
Ort: Saarland
174 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Resume Next

  Alt 25. Jan 2006, 09:26
Wenn ein Datenbankfeld nicht besteht ...
Dann sollte doch schon SQL anmeckern das es das Feld nicht gibt.
Wie willst du das im Delphi abfangen?
Michael S.
  Mit Zitat antworten Zitat
DelphiAndreas

Registriert seit: 25. Okt 2005
124 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Resume Next

  Alt 25. Jan 2006, 09:29
jetzt passt es allmählich mehr ins Datenbank-Forum.

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

Gruß
Andreas
  Mit Zitat antworten Zitat
marabu

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

Re: Resume Next

  Alt 25. Jan 2006, 09:29
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:

SELECT * FROM table WHERE 1 = 0 Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Resume Next

  Alt 25. Jan 2006, 09:40
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
Frank Reim
  Mit Zitat antworten Zitat
DelphiAndreas

Registriert seit: 25. Okt 2005
124 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Resume Next

  Alt 25. Jan 2006, 10:26
naja, der code ist noch aus den anfangstagen meines vorgängers, vielleicht sollte ich ihn doch einfach ein bißchen umschreiben.

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.
  Mit Zitat antworten Zitat
Benutzerbild von Schaedel
Schaedel

Registriert seit: 5. Jan 2006
Ort: Saarland
174 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Resume Next

  Alt 25. Jan 2006, 10:49
Das ist durchaus die bessere Lösung.
Alles andere is zu unsicher
Michael S.
  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 22: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