Procedureaufruf im AfterPrint von FRDCMLISMB

Alles über Formulare, deren Erstellung und deren eventueller Austausch

Moderator: SYNERPY

Antworten
NPLADMIN
Beiträge: 163
Registriert: Di Okt 07, 2008 7:54 am
Wohnort: Oxbüll / Wees

Procedureaufruf im AfterPrint von FRDCMLISMB

Beitrag von NPLADMIN »

Ich möchte das nach Bestätigung "Druck ok"
die "ID" und die zugehörigen "MASKEDIT_n.TEXT"-Werte in eine Procedur übergeben werden.

Mit (q_1.FieldByName('ID')) wird die "ID" nicht ausgegeben.
Wenn ich in den AfterPrint schaue wird dort per sLoopProcedure eine Procedure aufgerufen mit Übergabe der aktuellen "ID".
Ich möchte aber zusätzlich noch die Werte aus "MASKEDIT_n.TEXT" übergeben bekommen.
MyProc.ParamByName('MASKWERT_n', MASKEDIT_n.TEXT);

Wie muss ich den Aufruf der Procedure gestalten?
Welche Werte muss ich vorher in Variablen laden?

Habe leider weder im Forum noch in der Doku etwas entsprechendes gefunden und meine bisherigen Versuche sind leider gescheitert.

Bin dankbar für jede Hilfe!
Gruß
KTS

AvERP-Exe: 4.2.1.6
Datenbank: AvERP2009-A.01
_________________________
Suchen heißt finden und je mehr man sucht um so mehr findet man. ;-)
SYN20
Beiträge: 95
Registriert: Do Aug 23, 2007 1:54 pm

Beitrag von SYN20 »

Hallo NPLADMIN,

bitte testen Sie folgende Belegung der sLoopProcedure im BtnOk.OnClick:

Code: Alles auswählen

sLoopProcedure := 'P_REP_IhreLoopProcedure(:ID,'+QuotedStr(MASKEDIT_n.Text)+')';
Gruß,
Syn20
NPLADMIN
Beiträge: 163
Registriert: Di Okt 07, 2008 7:54 am
Wohnort: Oxbüll / Wees

Beitrag von NPLADMIN »

Hallo Syn20,

wie sieht der übergebene Wert für "ID" aus?
Bekomme offenbar keinen verwertbaren Wert übergeben.

Bei Einzeldruck der Belege kann ich mir mit:

Code: Alles auswählen

  q_rep1.open();
  sID := AsInteger(q_rep1.FieldByName('ID'));
  
	MyProc := frmData.StP_Universal;
	MyProc.StoredProcName := 'P_TESTSZE_BRLS_DRUCKEN';
	MyProc.ParamByName('BRLS_ID', sID);
	MyProc.ParamByName('MASKWERT_n', QuotedStr(MASKEDIT_n.Text));
	MyProc.Execute(); 
helfen und funktioniert wunderbar.

Hätte es nur gerne im AfterPrint.
Es soll halt nur dann ausgelöst werden, wenn alles "OK" ist.

Zum AfterPrint hätte ich auch noch eine weitere Frage:
Ist es überhaupt möglich, das sich ein Datensatz in BJOBDRUCK selber aktualisiert durch SQL-Nachdruck?
Wenn ja, wie?
..oder müsste ich hier auch über eine Procedure im Afterprint des Beleges arbeiten?
Gruß
KTS

AvERP-Exe: 4.2.1.6
Datenbank: AvERP2009-A.01
_________________________
Suchen heißt finden und je mehr man sucht um so mehr findet man. ;-)
SYN20
Beiträge: 95
Registriert: Do Aug 23, 2007 1:54 pm

Beitrag von SYN20 »

Hallo NPLADMIN,

Die ID sollte automatisch aus der q_rep1 übernommen werden. Ich habe das ganze in den AfterPrint des Lieferscheins verlegt. Beide Werte werden sowohl bei Einzeldruck, als auch Druck aus der Datenübersicht übergeben.

Code: Alles auswählen

Begin
  mbRes := -1;

  if (sReturnVar2 <>'') then
    messagebox(LB_offeneFA.Caption+': '+sReturnVar2,Self.Caption,0);

  sLoopProcedure := '';
  if (sReturnVar1 = 'ExistsNichtGedruckt') then begin
    mbRes := MessageBox(LB_IO.Caption,LB_LS1.caption, 4+256);
    if mbRes = 6 then 
    begin
      sLoopProcedure := 'P_REP_LOOP_TEST(:ID,'+QuotedStr(MASKEDIT_1.Text)+')';     
    end;
  end;
End;
Im SQL-Nachdruck können Sie ein Update auf den Datensatz ausführen, den Sie sich über die SQL-Anweisung geholt haben.
Bsp: UPDATE BRLS SET DRUCKJOB = 0

Gruß,
Syn20
NPLADMIN
Beiträge: 163
Registriert: Di Okt 07, 2008 7:54 am
Wohnort: Oxbüll / Wees

Beitrag von NPLADMIN »

An Montagen sollte man echt nicht programmieren. :roll:
Funktioniert bei mir jetzt auch wunderbar, danke!
Einfach nur die Prozedur "P_REP_BRLS_DRUCKKENNZ" in meine Prozedur verlegt und schon klappt es mit der sLoopProcedure.

*Kleiner Hinweis am Rande: In der Programmierdoku steht das mit sLoopProcedure nichts ausser der ID übergeben werden kann.
Hatte gestern abend vorm zu Bett gehen extra nochmal ein bissel geblättert*

Sehe ich es richtig, das der AfterPrint im Druckformular ignoriert wird wenn es per JobDruck angesteurt wird? Wird er jedenfalls bei meinen Test´s.
Was nicht so schön ist, da ich im SQLNachdruck nichts ausser dem zu druckenden Belegdaten ändern kann.
Der Jobdruck schränkt mich ziemlich ein, was die Flexibilität angeht.

..und ist es möglich die Abfrage "Programm beenden?" auf einfachem Wege abzuschalten?
Ich könnte das Programm bei uns als Dienst laufen lassen, wenn beim Runterfahren nicht eine Eingabe benötigt würde.


Zum Hintergrund meiner Fragerei:
Der Jobdruck soll bei uns genutzt werden um die Schachtansteuerung für Beleg-Kopien zu regeln.
Den Jobdruck mit einer Standardkonfiguration laufen zu lassen ist recht leicht. (Wenn man sich einmal reingefuchst hat, die Doku ist da sehr kurz)
Nur was ist, wenn in dem Beleg abweichend zum Standard ein MASK_EDIT genutzt wird?
Meine Prozedur ruft die aktuellen Werte ab und legt einen JobDruck für diesen Datensatz an bzw. soll einen bereits genutzten überschreiben(sonst habe ich nachher 1000e Datensätze).
Ich möchte im BJOBDRUCK ein Kennzeichen setzen, damit erkannt wird das er bereits durchgelaufen ist. AKTIV_JN=N war meine Überlegung.
Somit verhindere ich auch das nicht mehr zutreffende Abfragen laufen.
Nur leider komme ich nicht an diesen Datensatz per sofort heran.
Das einzige was mir noch einfiele ist einen Job anzulegen...
Gruß
KTS

AvERP-Exe: 4.2.1.6
Datenbank: AvERP2009-A.01
_________________________
Suchen heißt finden und je mehr man sucht um so mehr findet man. ;-)
Antworten