[gelöst] Report Design Expressions GET DATA

Bild Microsoft Dynamics NAV 2016

[gelöst] Report Design Expressions GET DATA

Beitragvon simon.sprenger » 5. August 2018 17:30

Hallo Liebe Community,

ich habe bereits mehrere Jahre erfolgreich im Classic Client mit NAV 5 programmiert und entwickelt.

Jetzt soll ich einen Report in NAV 16 erstellen.
Ich soll einen individuellen Einkaufs-Retourenlieferschein grafisch ähnlich dem VK-Lieferschein einbauen.

Hierbei komme ich jedoch mit den GetData Expressions nicht zurecht.
Wo ist definiert welche Werte dort drin stehen etc....
Kann mir jemand hilfreiche Tipps und Seiten empfehlen wie man sich dort am besten einarbeiten kann?

Vielen Dank im Voraus.
Zuletzt geändert von simon.sprenger am 7. August 2018 08:18, insgesamt 1-mal geändert.
simon.sprenger
 
Beiträge: 54
Registriert: 5. August 2018 17:25

Re: Report Design Expressions GET DATA

Beitragvon Natalie » 6. August 2018 07:43

Herzlich Willkommen bei uns!

simon.sprenger hat geschrieben:ich habe bereits mehrere Jahre erfolgreich im Classic Client mit NAV 5 programmiert und entwickelt.

Jetzt soll ich einen Report in NAV 16 erstellen.

Das ist eine sportliche Herausforderung, weil du komplett umdenken musst :shock:

Kann mir jemand hilfreiche Tipps und Seiten empfehlen wie man sich dort am besten einarbeiten kann?

Bei uns ;-)
viewtopic.php?f=19&t=12763

Unter "Aufgaben" findest du auch Artikel speziell zu GetData.
GruĂź, Natalie

Frage beantwortet oder Problem von allein gelöst? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.

Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Report Design Expressions GET DATA

Beitragvon fiddi » 6. August 2018 09:31

Hallo,

ich fĂĽr meinen Teil habe GetData und SetData durch eigene Funktionen ersetzt, die meiner Meinung nach das Leben erheblich erleichtern.

Code: Alles auswählen
Public Function GetArrayStr(ByVal What as String, ByVal Field as object) as String
  return (What & "|" & iif(isnothing(Field),"",Replace(Field.tostring,"|","<&#124>"))) & "|"
End Function

Public Function GetRealVal(ByVal Value as String) as String
 if (Value <> "") then
   return Replace(Value,"<&#124>","|")
 else
   return Value
 end if
End Function


Public Shared DataActPars As New System.Collections.Hashtable

Public Function SetDataValueArray(byval Data as object) as String
  dim StrArray() as string
  AfterTotal = false
  if isnothing(Data) or (Cstr(Data) ="") then
    return"&nbsp;"
  end if

  DataActPars.clear
  if not isnothing(Data) then
    StrArray = split(Cstr(Data),"|")
    For index as integer = 0 To StrArray.GetUpperBound(0) Step 2
      if StrArray(index)<>"" then
        DataActPars(Strarray(index)) = GetRealVal(StrArray(index+1))
       end if
    next index
  end if
  Return "&nbsp;"
End Function

Public Function GetDataValue(ByVal What as string) as Object
  if isnothing(DataActPars(What)) then
    return("*XxXxXxXxXxXxX*")
'    return(What)
  else
    return DataActPars(What)
  end if
end Function




Der Aufruf von SetData erfolgt bei mir in der Expression einem sichtbaren Feld ganz oben Links im Boddy des Reports. Das hat zumindest ab NAV2015 den Vorteil, das man GetData sowohl in Header, Footer als auch im Boddy benutzen kann.
Der Aufbau des SetData ĂĽbergebenen Strings ist in der Form 'VARNAME|Wert|' also z.B. 'NameLbl|Name|Name2Lbl|Name 2|'

Da ich den String fĂĽr SetData zum groĂźen Teil schon im C/AL- Teil des Reports aufbaue (die ĂĽbergebenen Werte/Texte sind in fast jedem Beleg die gleichen) sieht die Expression dieses Feldes etwa so aus:
Code: Alles auswählen
=Code.SetData(fields!DataText.Value+
GetArrayStr("CompanyInfo__Phone_No__Caption" , Fields!CompanyInfo__Phone_No__Caption.Value) +
GetArrayStr("CompanyInfo__Phone_No__" , Fields!CompanyInfo__Phone_No__.Value) +
GetArrayStr("CompanyInfo__Fax_No__Caption" , Fields!CompanyInfo__Fax_No__Caption.Value) +
GetArrayStr("CompanyInfo__Fax_No__" , Fields!CompanyInfo__Fax_No__.Value) +
GetArrayStr("CompanyInfo__VAT_Registration_No__Caption" , Fields!CompanyInfo__VAT_Registration_No__Caption.Value) +
GetArrayStr("CompanyInfo__VAT_Registration_No__" , Fields!CompanyInfo__VAT_Registration_No__.Value) +
GetArrayStr("CompanyInfo__Giro_No__Caption" , Fields!CompanyInfo__Giro_No__Caption.Value) +
GetArrayStr("CompanyInfo__Giro_No__" , Fields!CompanyInfo__Giro_No__.Value) +
GetArrayStr("CompanyInfo__Bank_Name_Caption" , Fields!CompanyInfo__Bank_Name_Caption.Value) +
GetArrayStr("CompanyInfo__Bank_Name_" , Fields!CompanyInfo__Bank_Name_.Value) +
GetArrayStr("CompanyInfo__Bank_Account_No__Caption" , Fields!CompanyInfo__Bank_Account_No__Caption.Value) +
GetArrayStr("CompanyInfo__Bank_Account_No__" , Fields!CompanyInfo__Bank_Account_No__.Value) +
GetArrayStr("Sales_Header___Bill_to_Customer_No__Caption" , Fields!Sales_Header___Bill_to_Customer_No__Caption.Value) +
GetArrayStr("Sales_Header___Bill_to_Customer_No__" , Fields!Sales_Header___Bill_to_Customer_No__.Value) +
GetArrayStr("VATNoText" , Fields!VATNoText.Value) +
GetArrayStr("Sales_Header___VAT_Registration_No__" , Fields!Sales_Header___VAT_Registration_No__.Value) +
GetArrayStr("ReferenceText" , Fields!ReferenceText.Value) +
GetArrayStr("Sales_Header___Your_Reference_" , Fields!Sales_Header___Your_Reference_.Value) +
GetArrayStr("Sales_Header___Shipment_Date_Caption" , Fields!Sales_Header___Shipment_Date_.Value)+
GetArrayStr("Sales_Header___No__Caption" , Fields!Sales_Header___No__Caption.Value) +
GetArrayStr("Sales_Header___No__" , Fields!Sales_Header___No__.Value) +
GetArrayStr("Sales_Header___Prices_Including_VAT_Caption" , CStr(Fields!PricesInclVAT_YesNo.Value) +
GetArrayStr("SalesPersonText" , Fields!SalesPersonText.Value) +
GetArrayStr("SalesPurchPerson_Name" , Fields!SalesPurchPerson_Name.Value) +
GetArrayStr("FORMAT__Sales_Header___Document_Date__0_4_" , Fields!FORMAT__Sales_Header___Document_Date__0_4_.Value))


"DataText" ist eine Variable, die den in C/AL aufbereiteten Text in der oben beschriebenen Form enthält. Die Funktion "GetDataArrStr" ermöglicht es SetData aus dem Report zusätzliche Parameter zu übergeben. Das Ergebnis von GetDataArrStr wird einfach als zusätzlicher Text SetData angehängt.

Der Zugriff auf die Daten erfolgt mit "GetData". Der ĂĽbergebene Parameter ist der VARNAME aus dem SetData ĂĽbergebenen ArrayString. z.B.
Code: Alles auswählen
=GetData("Sales_Header___No__")


Wenn man sich an die Struktur hält, dann kann man mit dem Variablennamen auf das entsprechende Textfeld zugreifen, und man muss sich nicht mit irgendwelchen Indexen oder Gruppen herumschlagen.

Das mag zwar auf den ersten Blick mehr Schreibaufwand sein. Auf den zweiten Blick (Aufbereitung des ĂĽbergebenen Strings in C/AL und ein paar anderer Tricks erspart es sehr viel Arbeit)
Der größte Vorteil liegt aber darin, das man auch nach einem halben Jahr noch verstehen kann, was man da im RDLC angestellt hat. 8-)

Ein kleines Gimmick ist der Wert "*XxXxXxXxXxXxX*" der von GetData zurĂĽckgeben wird, wenn man eine Variable nicht ĂĽbergeben hat. Man sieht auf den Belegen relativ schnell, ob man etwas vergessen hat. :wink:

GruĂź Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7091
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: [gelöst] Report Design Expressions GET DATA

Beitragvon simon.sprenger » 7. August 2018 08:19

Erst einmal vielen Dank an alle die geholfen haben.

Um auch mal etwas nĂĽtzliches hier beizutragen:

Folgendes Youtube Video fand ich sehr gut und hat mir sehr geholfen.

https://www.youtube.com/watch?time_continue=3&v=dievcKyhoWU
simon.sprenger
 
Beiträge: 54
Registriert: 5. August 2018 17:25


ZurĂĽck zu NAV 2016

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast