Abfrage: Druckformular abrechen in Abhängigkeit von M. Feld

Alles über Formulare, deren Erstellung und deren eventueller Austausch

Moderator: SYNERPY

Antworten
koch
Beiträge: 97
Registriert: Mo Dez 11, 2006 1:28 pm

Abfrage: Druckformular abrechen in Abhängigkeit von M. Feld

Beitrag von koch »

Hallo,

ich hänge an einem kleinen Problem. Ich habe für die Maske 'BAUF_B_' ein neues Druckformular erstellt, dieses darf aber nur gedruckt werden
in Abhängigkeit der Auftragssart, in unserem Fall 'SA' für Sterilisationsauftrag. Das Skript unten habe ich auf das Ereignis 'BtnOkOnClick' gelegt.
Die Abfrage funktioniert aber nur bedingt, im Falle dass es sich wirklich um einen Steri-Auftrag handelt, ist alles OK.
Ist die Auftragsart kein Steri-Auftrag, öffnet sich die MessageBox mit der Fehlermeldung und nach Bestätigung, friert AvERP mit der Fehlermeldung
'Element " hat kein übergeordnetes Fenster' ein. Weitere Skripte befinden sich nicht in dem Druckformular.
Was mache ich hier falsch :?:

Code: Alles auswählen

Begin
  DebugOn := True;
  B := lbFormName.Caption;
  Z := Application.FindComponent(B);
  
  //Auftragsart aus der Auftragsverwaltung holen
  AufArtIst := AsString(Z.q_1.FieldByName('BTOUR_MASKENKEY'));
  
  //Zuweisung des Kürzels für Sterilisationsauftrag
  AufArtSoll := 'SA';

  //Auftragsart Ist und Soll vergleichen
  //Wenn ungleich- Fehlermeldung ausgeben und Fenster schliessen
  if (AufArtIst <> AufArtSoll) then
  begin
    MessageBox('Ausdruck nur für Sterilisationsaufträge !',Self.Caption,0+64);
    Self.Close();
  end;
End;
Im voraus vielen Dank für euere Hilfe ...
SYN20
Beiträge: 95
Registriert: Do Aug 23, 2007 1:54 pm

Beitrag von SYN20 »

Hallo,

ich habe den Code, ohne 'DebugOn := true;', in's OnFormShow einer Auftragsbestätigung eingebaut. Dort funktioniert er wie gewünscht.

Gruß,
Syn20
koch
Beiträge: 97
Registriert: Mo Dez 11, 2006 1:28 pm

Beitrag von koch »

Wenn ich den Code in's OnFormShow einbaue, passiert leider nichts, weder die Message wird ausgeworfen,
noch der Druckauftrag wird abgebrochen. Es öffnen sich bei allen Auftragsarten die Druckformulare.

Wo kann mein Fehler liegen? Kann ich noch irgendwelche zusätzlichen Informationen posten?
Der Code wird nur im Ereignis 'BtnOkOnClick' ausgeführt, dort halt mit oben genannten Fehler ...

Gruß
Koch

Edit: Bin wieder ein Schritt weiter 8)
Damit der Code in OnFormShow funktioniert, musste ich in TDBasis Form die Option bformShow auf True setzen.
Nun funktioniert der Abbruch des Drucks....Juchuu
Der Nachteil ist: bei jedem korrekten Druck öffnet sich ein Fenster mit dem OK und Cancel Button.
Kann man dieses unterdrücken?
SYN20
Beiträge: 95
Registriert: Do Aug 23, 2007 1:54 pm

Beitrag von SYN20 »

Hallo,

Ergänzen Sie den Code folgendermaßen:

Code: Alles auswählen

  if (AufArtIst <> AufArtSoll) then 
  begin 
    MessageBox('Ausdruck nur für Sterilisationsaufträge !',Self.Caption,0+64); 
    Self.Close(); 
  end
  else
    BTNOK.click();
In das AfterPrint - Ereignis:

Code: Alles auswählen

self.close();
Es ist keine elegante Lösung, sollte aber funktionieren.

Gruß,
Syn20
koch
Beiträge: 97
Registriert: Mo Dez 11, 2006 1:28 pm

Beitrag von koch »

Perfekt :D Vielen Dank für die Hilfe.
Antworten