Anfängerfrage: Artikel-Nr. in Report übergeben

2. August 2007 09:20

Hallo,

ich bin Anfänger in Sachen Navision und brauche eure Hilfe.
Wie oben geschrieben, möchte ich gerne aus dem aktuellen Artikel-Blatt, die Artikel-Nr. in den Report übergeben. Dieser wird dann in einen Barcode umgesetzt und auf einem Labeldrucker ausgegeben. Das mit der Umsetzung als Barcode und dem Ausdruck habe ich ohne größere Probleme hinbekommen. Was aber störend ist, dass ich meinen Report aufrufe und ich dann erst die Artikel-Nr. im Filter eingeben muss. Das möchte ich umgehen, so dass ich direkt aus dem Artikel-Blatt die Artikel-Nr. übergebe. Vielleicht hat mir hier jemand eine Lösung.
Suchfunktion habe ich auch schon benutzt, aber leider nicht das passende gefunden.

Vielen Dank
Thomas

2. August 2007 09:43

Hi,
also du must in deinem Report eine Funktion und eine globale Variable g_ItemNo anlegen:

SetItemNo(p_ItemNo)
{
g_ItemNo := p_ItemNo;
}

Dann die Funktion vor dem Starten des Reports von außen aufrufen.
Dann kannst du z.b. im PreDataItem das als Filter übertragen.

Grüße Steffen

2. August 2007 10:16

Hi Steffen,

hab es leider noch nicht ganz kappiert.
Ich lege also ein globale Variable in meinem Report an:
"g_ItemNo" als "Record" und als Subtype "Item"

Dann unter PreDataItem die Funktion eintragen?

Wie rufe ich dann die Funktion vor dem Starten von außen auf.
Kannst Du das vielleicht noch ein wenig ausführlicher beschreiben. Danke!

Sorry, aber ich hab glaub gerade ein Brett vor dem Kopf.

Gruß
Thomas

2. August 2007 10:17

Du musst nicht unbedingt eine Funktion erstellen, es geht auch so

Code:
Name        DataType   Subtype   Length
R_Item      Record     Item   

<Control72> - OnPush()
R_Item := Rec;
R_Item.SETRANGE("No.","No.");
REPORT.RUNMODAL(REPORT::"dein Reprt",FALSE,FALSE,R_Item);

2. August 2007 10:36

Hi mespelage,

da hast du natürlich recht. Wenn Thomas wirklich nur einen Filter für das Dataitem übergeben möchte dann reicht das.

"Meine" Variante ist eher dafür gedacht "echte" Parameter an den Report zu bergeben. Dafür muss man sich dann im aufrufenden Quellcode auch eine Variableninstanz vom Typ des Reports anlegen. An dieser ist dann auch die Funktion verfügbar.

Grüße Steffen

2. August 2007 11:25

Hi mespelage,

vielen Dank für die Infos.
Wo muss ich den Code eintragen?
Sorry, bin wirklich noch am Anfang von Navision.

Gruß
Thomas

2. August 2007 12:10

Auf der Aritkelkarte löst du doch an irgendeiner Stelle den Druck aus, entweder mit eigenem Button oder im Menü "Artikel" unten auf der Karte.
An der Stelle dann auf dem "OnPush" Trigger den Code eingeben.

mfg Michael

2. August 2007 13:10

Ich habe einen Menü Button erstellen. Unter dem Menu Items rufe ich dann unter "RunObject" meinen Report auf.
Den "OnPush" Trigger finde ich leider nicht.
Auch wenn ich euch auf den Keks gehe, könnt Ihr mir das bitte erklären wo ich den finde.
Edit: Ich habe auch schon einen neuen Button gemacht. Nur ist bei mir dann unter Ansicht->Das Feld C/A Code inaktiv.

Tausend Dank
Thomas
Zuletzt geändert von ThomasD am 2. August 2007 13:12, insgesamt 1-mal geändert.

2. August 2007 13:12

Genau an der Stelle einfach mal F9 drücken.

2. August 2007 13:18

Tut sich leider nichts. Das Feld Feld C/A Code ist inaktiv.
Edit: Habe ich vielleicht nicht genug Rechte?

2. August 2007 16:44

Hi forki,

gibt es noch eine andere Lösung? Funktioniert Deine Variante ohne "OnPush" Trigger?

3. August 2007 09:52

Leider nein. Du musst in jedem Fall das aufrufende Formular anpassen können...

15. August 2007 16:44

is vielleicht schon etwas her aber. . .
Wenn ich das richtig verstehe sollte das so gehen:

Erstmal kannst du ein "OnPush" Trigger bei einem MenuButton erstellen! Markiere das Menu Item und druecke dann F9 ;)

Vorher musst du aber ne CodeUnit erstellen in der du drei Globale Variablen deklarierst:
Code:
DieArtikelTabelle    Record   
DerBericht             Report
DieArtikelNr           Text

nun in den "OnRun" Trigger der CodeUnit:
Code:
DieArtikelTabelle.SETRANGE("Artikel Nr.", DieArtikelNr);
DerBericht.SETTABLEVIEW(DieArtikelTabelle);

DerBericht.RUN;

Nun is natuerlich die Variable "DieArtikelNr" leer. . . wuerde also in den Filter nichts eingeben. Darum erstellen wir nun eine Funktion:
GetArtikelNr mit einem Parameter des Typs Textes. Ich nenn den Parameter nun mal ArtikelNr2.

in diese Funktion muss nun dieser Code:
Code:
DieArtikelNr := ArtikelNr2;

Nun musst du in den OnPush Trigger des MenuButtons und dort musst du dann eine Globale Variable erstellen des Typs CodeUnit die mit deiner CodeUnit definieren.
Letzendlich kannst du nun in den Trigger dies schreiben:

Code:
DeineCodeUnit.GetArtikelNr("Feld aus Tabelle");
DeineCodeUnit.RUN;


voila! sollte funktionieren :D