Lookup auf Requestform programmieren

Bild Microsoft Dynamics NAV 3.xx
(ehem. Navision Attain)

Lookup auf Requestform programmieren

Beitragvon mgerhartz » 28. Dezember 2006 17:59

Hi,

in einem anderen Artikel hatte ich mich nach der Progammierung von LookUps erkundigt. Dies hat auch prima funktioniert. Jetzt möchte ich einen Loopup auf einer Requestform eines Report erstellen. Irgendwie finde ich aber nicht den richtigen Trigger. Es gibt von dem Feld, welches ich auf der Requestform angelegt und benannt habe, keinen OnLookUp Trigger. Geht das überhaupt?
mgerhartz
 
Beiträge: 308
Registriert: 13. Februar 2006 15:18
Wohnort: Koblenz

Beitragvon rotsch » 28. Dezember 2006 19:06

Ja, es gibt auch fĂĽr jedes Feld, dass du auf einem Request-Form ablegst, einen OnLookup-Trigger.

Dazu musst du das Feld zuerst markieren. Mit F9 bekommst du dann die verfĂĽgbaren Triggers zu sehen, unter anderen auch OnLookup.

Wenn du aber nur ein bestehendes Lookup-Form aufrufen willst, kannst du auch das Property 'TableRelation' dazu verwenden.
Gruss und besten Dank, Roger
Benutzeravatar
rotsch
Microsoft Partner
Microsoft Partner
 
Beiträge: 1703
Registriert: 8. März 2006 14:44
Bezug zu Microsoft Dynamics: Freiberufler
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: Ab Version 1.3 bis Aktuell

Beitragvon mgerhartz » 29. Dezember 2006 10:30

Hi Rotsch,

danke für die schnelle Antwort. Ich finde nur komisch, dass nicht der Name der Textbox, sondern der Name des letzten DataItem vor dem OnLookUp Trigger steht. Wie auch immer. Hier meine kurze Erklärung, was ich überhaupt vorhaben:

Der besagt Report soll später Beitragsdaten für einen Lastschrifteinzug in die Tabellen DTA_Header und DTA_Lines schreiben. Der Report wird über eine Funktion in einem TabellenFormular aufgerufen und übergibt direkt vorausgewählte Gliederungsnummern und Kontaktnummer (Filterfelder). Das funktioniert auch soweit. :-D

Der Report hat nun also die Gliederungsnummer und die Kontaktnummer bereits als Filterwerte übergeben bekommen. Jetzt möchte ich auf der Requestform ein Feld anbieten, das nach einem Lookup auf die Tabelle NoSeries automatisch die nächste freie Nummer der ausgewählten Gliederung liefert. Sprich, hier soll für die DTA-Datei/Diskette eine neue Nummer gezogen.

In dem Beispiel auf Navision24 wird hierfür eine Textbox in einer Form angelegt. Im Sourcetable des Formulars ist eine Funktion (AssistEdit) hinterlegt, die die neue freie Nummer aus der gewählten Nummernserie zieht. Die Funktion wird im OnAssistEdit Trigger der Textbox mit

Code: Alles auswählen
 IF AssistEdit(xRec) Then
  CurrForm.UPDATE;


ausgeführt. So, wie bekomme ich nun die gleich Funktionalität auf meine RequestForm???
mgerhartz
 
Beiträge: 308
Registriert: 13. Februar 2006 15:18
Wohnort: Koblenz

Beitragvon mgerhartz » 29. Dezember 2006 15:08

Keiner eine Idee? Hier noch mal eine komplette Beschreibung. Vielleicht habe ich mich ja unverständlich ausgedrückt.

Report
DataItem: Beitragstabelle

Recordvariablen: DTA_Header + DTA_Lines (diese sollen mit Beitragsdaten befĂĽllt werden)

Auf der Requestform wird ein Optionsfeld "Diskettennummer" eingeblendet. Klickt der User hier drauf, soll eine neue "freie" Nummer aus der entsprechenden Nummerserie gezogen werden.

In Recordvariable DTA_Header ist folgende Funktion hinterlegt:

Code: Alles auswählen
IF AssistEdit(xRec) THEN
  CurrForm.UPDATE;
WITH DTAUS DO BEGIN
  DTAUS := Rec;
  GLSetup.GET;
  GLSetup.TESTFIELD("DTAUS Beitrag Nummern");
  IF NoSeriesMgt.SelectSeries(GLSetup."DTAUS Beitrag Nummern",DTAUS_Alt.Nummernserie,Nummernserie) THEN BEGIN
    NoSeriesMgt.SetSeries(Diskettennummer);
    Rec := DTAUS;
    EXIT(TRUE);
  END;
END;


Im OnValidate Trigger des Feldes "Diskettenummer" der Recordvariable DTA_Header steht folgendes:

Code: Alles auswählen
IF Diskettennummer <> xRec.Diskettennummer THEN BEGIN
  GLSetup.GET;
  NoSeriesMgt.TestManual(GLSetup."DTAUS Beitrag Nummern");
  Diskettennummer := '';
END;


Im Moment hänge ich total. Wie schon beschrieben funktioniert der Aufruf der Funktion "AssistEdit" in einem normalen Formular einwandfrei. Hierfür habe ich im OnValidate Trigger des Feldes "Diskettennummer" auf dem Testformular folgenden Code hinterlegt:

Code: Alles auswählen
IF AssistEdit(xRec) THEN
  CurrForm.UPDATE;


Auf der Requestform kann ich die Funktion nicht mit "AssistEdit(xRec)" aufrufen. Also vielleicht sehe ich Wald vor lauter Bäumen nicht :cry:


ERGĂ„NZUNG:

Ich habe ja total vergessen den Code des OnInsert Triggers zu erwähnen:
Code: Alles auswählen
IF Diskettennummer = '' THEN BEGIN
  GLSetup.GET;
  GLSetup.TESTFIELD("DTAUS Beitrag Nummern");
  NoSeriesMgt.InitSeries(GLSetup."DTAUS Beitrag Nummern",xRec.Nummernserie,0D,Diskettennummer,Nummernserie);
END;
mgerhartz
 
Beiträge: 308
Registriert: 13. Februar 2006 15:18
Wohnort: Koblenz

Beitragvon rotsch » 29. Dezember 2006 16:22

Neue Nummern anhand einer Serie kannst du relativ einfach beziehen (2 Zeilen Code). Hier ein Beispiel:

Code: Alles auswählen
NewNo := '';
NoSeriesMgt.InitSeries(Setup.Serie,'',TODAY,NewNo,Setup.Serie);


Das Feld Serie ist ein Codefeld in einer Setuptabelle mit Verweis auf eine Nummernserie. In der Variable NewNo hast du anschliessend die neue Nummer. Die Nummernserie wird automatisch nachgefĂĽhrt (letzte Nummer etc.)
Gruss und besten Dank, Roger
Benutzeravatar
rotsch
Microsoft Partner
Microsoft Partner
 
Beiträge: 1703
Registriert: 8. März 2006 14:44
Bezug zu Microsoft Dynamics: Freiberufler
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: Ab Version 1.3 bis Aktuell

Beitragvon mgerhartz » 29. Dezember 2006 17:33

Hi Rotsch,

danke für den Hinweis. Habs gleich ausprobiert. Wünsche eine guten Rutsch. Bis zum nächsten Jahr.

GruĂź

Markus
mgerhartz
 
Beiträge: 308
Registriert: 13. Februar 2006 15:18
Wohnort: Koblenz

Beitragvon rotsch » 29. Dezember 2006 17:59

Hallo Markus,

dann hoffe, dass du dein Problem lösen kannst.

Auch dir einen guten Rutsch ins 2007. Das wird NAV-mässig sicher ein spannendes Jahr :-D
Gruss und besten Dank, Roger
Benutzeravatar
rotsch
Microsoft Partner
Microsoft Partner
 
Beiträge: 1703
Registriert: 8. März 2006 14:44
Bezug zu Microsoft Dynamics: Freiberufler
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: Ab Version 1.3 bis Aktuell


ZurĂĽck zu NAV 3.xx

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast