Einzelnen Beitrag anzeigen

coderi

Registriert seit: 13. Jun 2008
Ort: Unterfranken
13 Beiträge
 
Delphi 10.3 Rio
 
#1

Wie ist der Programmierstil "professionell"

  Alt 16. Nov 2012, 16:16
Delphi-Version: 5
Hallo Zusammen,

ich habe hier mal eine Grundsatzfrage zum Thema Programmieren in Delphi

Delphi-Quellcode:
procedure TfrmXXX.ZeileDelExecute(Sender: TObject);
begin

   dmXXX.qGETFertigteileeingang.ParamByName('AZID').AsInteger := dmXXX.AZQ.fieldbyname('AZ.ID').asinteger;
   dmXXX.qGETFertigteileeingang.Open;
   if (dmXXX.qGETFertigteileeingang.FieldByName('Anzahl').AsInteger > 0) then
   begin
      MessageDlg('Löschen der Auftragszeile NICHT möglich, da bereits Fertigteile daraus eingebucht wurden!', mtError, [mbOK], 0);
      dmXXX.qGETFertigteileeingang.close;
      exit;
   end;
   dmXXX.qGETFertigteileeingang.close;
    .
. .
..
code hier noch nicht zu ende.
Erklärung:

Es geht hier um einen Rowcount mit anschließender Auswertung, wenn die Anzahl > 0 dann soll er nach Meldung direkt abbrechen und die Procedure verlassen.
Die query möchte ich aber immer geschlossen wissen.

Frage:
Unter Berücksichtigung von gutem Programmierstyle, Codewartbarkeit u.a. :

Ist es so korrekt wie oben dargestellt?

Oder benutze ich eine Variable als Zwischenspeicher wie hier:

Delphi-Quellcode:
procedure TfrmAuftrag.ZeileDelExecute(Sender: TObject);
var
 azid:Integer;
begin

   dmAuftrag.qGETFertigteileeingang.ParamByName('AZID').AsInteger := dmauftrag.AZQ.fieldbyname('AZ.ID').asinteger;
   dmAuftrag.qGETFertigteileeingang.Open;
   azid := dmAuftrag.qGETFertigteileeingang.FieldByName('Anzahl').AsInteger;
   dmAuftrag.qGETFertigteileeingang.close;
   if (azid > 0) then
   begin
      MessageDlg('Löschen der Auftragszeile NICHT möglich, da bereits Fertigteile daraus eingebucht wurden!', mtError, [mbOK], 0);
      exit;
   end;

Oder gib es einen ganz anderen Ansatz dafür?

Antworte bitte mit Begründung

danke euch
grüße
Coderi
  Mit Zitat antworten Zitat