[Gelöst] SourceExpr Abfrage erstellen

30. Mai 2012 13:26

Hallo Gemeinde,

ich bearbeite gerade den R752. Dort soll ein Verkäufer und ein Sachbearbeiter angegeben werden. Beide werden aus der Tabelle Salesperson gezogen.

Nun möchte ich im Feld Sachbearbeiter in der SourceExpr folgendes eingeben: "Salesperson/Purchaser".Name WHERE "Salesperson/Purchaser".Code="Sales Header"."Responsible Person Code"

Ich kann aber auch nicht zweimal die Tabelle Salesperson einbinden, da er mir auch beim Speichern einen Fehler auswirft.

Dort bringt er mir einen Syntaxfehler. Kann es sein, dass ich dort gar keine Abfragen erstellen kann?

Derzeit mach ich das Layout noch im CC.

Vielen Dank
Zuletzt geändert von aPeu am 30. Mai 2012 15:48, insgesamt 1-mal geändert.

Re: SourceExpr Abfrage erstellen

30. Mai 2012 13:36

Für 1 und 2 jeweils ne eigene Salesperson-Recordvariable und dann per GET setzen und entsprechend benutzen. (ohne where)

Re: SourceExpr Abfrage erstellen

30. Mai 2012 13:41

aPeu hat geschrieben:Kann es sein, dass ich dort gar keine Abfragen erstellen kann?

Das ist richtig. Textboxen können lediglich einen Wert darstellen. Jedoch hat man hier die Möglichkeit, eine Funktion einzutragen, welche den gesuchten Wert ausgibt.
Du könntest also eine Reportfunktion schreiben (ggf. mit Parametern), welche den Namen als Rückgabewert auswirft.
Dann stünde in deiner SourceExpr drin:
DeineFunktion[(...)] (mit den eckigen Klammern wollte ich nur die optionalen Parameter andeuten).

Alternativ - und so macht es der Standard - ermittelst du den Wert im C/AL-Code. Entweder speicherst du ihn in einer globalen Variablen (Datentyp Text) und trägst diesen Variablennamen als SourceExpr ein oder du trägst lediglich ein "Salesperson/Purchaser".Name - dann muss aber im Vorfeld mittels GET der Zeiger auf dem richtigen Sachbearbeiter sein.

Re: SourceExpr Abfrage erstellen

30. Mai 2012 13:44

Ich würde das wie folgt machen:

Gloable Variable vom Typ Record auf die Tabelle "Salesperson/Purchaser" (z.B. recVerkaeufer)
Globale Variable vom Typ Text (z.B. "VerkaeuferName") , dies ist dann der VariableName der in SourceExpr kommt

Dann im OnAfterGetRecord Trigger der Section wo das Feld angezeigt werden soll:
Code:
IF recVerkaeufer.GET('VERKAEUFERCODE') THEN
  VerkaeuferName := SalespersonPurchaser.Name;


Wobei ich nun auch nicht weiß ob das mit der Aufgabenstellung zusammenpasst :)

Re: SourceExpr Abfrage erstellen

30. Mai 2012 14:13

In dem Fall VerkaeuferName bei jedem Beleg zurücksetzen oder else VerkauferName = '' setzen, sonst ist der Verkäufername im Batchdruck auf mehreren Belegen wiederzufinden wo er eigentlich gar nicht stehen sollte.

Re: SourceExpr Abfrage erstellen

30. Mai 2012 14:20

Also ich habe das jetzt so gemacht.

Ich habe in den GlobalVars einmal einen "VerkName" als "Record" auf die Tabelle "Salesperson/Purchaser" und einmal einen "Sachbearb" als "Text" angelegt.
IM C/AL Code habe ich folgendes eingegeben.

Code:
IF VerkName.GET("Sales Header"."Responsible Person Code") THEN
  Sachbearb := "Salesperson/Purchaser".Name;


In der SourceExpr habe ich "Sachbearb" eingegeben. Leider bleibt das Feld im Report leer. Was könnte ich falsch machen?

Re: SourceExpr Abfrage erstellen

30. Mai 2012 14:32

aPeu hat geschrieben:Also ich habe das jetzt so gemacht.
In der SourceExpr habe ich "Sachbearb" eingegeben. Leider bleibt das Feld im Report leer. Was könnte ich falsch machen?


Dann gibt es wahrscheinlich keinen Eintrag in SalesPerson/Purchaser der den gleichen Code hat wie "Sales Header"."Responsible Person Code"

Kannst du ganz einfach testen in dem du ein Else hinzufügst:

Code:
IF VerkName.GET("Sales Header"."Responsible Person Code") THEN
  Sachbearb := "Salesperson/Purchaser".Name
ELSE
  Sachbearb := 'Nicht gefunden';


Angenommen der Verkäufercode ist 'VK1', und "Sales Header"."Responsible Person Code" = 'UWE'

Der Code würde nur funktionieren wenn beides gleich ist

Re: SourceExpr Abfrage erstellen

30. Mai 2012 14:43

Doch es gibt den Eintrag

Nehmen wir an, der Eintrag im "Sales Header"."Responsible Person Code" lautet aPeu. Dann gibt es unter der Tabelle "Salesperson/Purchaser" auch den Namen Andreas P.

Leider bekomme ich diesen aber nicht angezeigt. Was mache ich falsch?

Re: SourceExpr Abfrage erstellen

30. Mai 2012 14:57

Versuch doch mal vor dem VerkName.GET eine Message auszugeben:

Code:
Message('RespPerscode: ' + "Sales Header"."Responsible Person Code");


um gewissheit zu haben das dort was ankommt :)

Re: SourceExpr Abfrage erstellen

30. Mai 2012 15:24

elTorito hat geschrieben:Versuch doch mal vor dem VerkName.GET eine Message auszugeben:

Code:
Message('RespPerscode: ' + "Sales Header"."Responsible Person Code");


um gewissheit zu haben das dort was ankommt :)


Hab ich gemacht. Dort wird mir auch der richtige Code ausgegeben. Ich muss doch den C/AL Code beim Sales Header eintragen oder?

EDIT: Ich habe es gelöst bekommen: Man muss beim Sachbearb := VerkName.Name; eingeben dann funktioniert es auch

Bis dahin

aPeu
Zuletzt geändert von aPeu am 30. Mai 2012 15:48, insgesamt 1-mal geändert.

Re: SourceExpr Abfrage erstellen

30. Mai 2012 15:42

EDIT: Ich habe es gelöst bekommen: Man muss beim Sachbearb := VerkName.Name; eingeben dann funktioniert es auch


Ja, genau so :)