Archiv für die Kategorie ‘Dynamics NAV RTC’

Hi Leute,

ich kam mal wieder dazu eine Laufendenummer in einem Report anzeigen lassen zu wollen. Bis Dato konnte/habe ich diese immer in NAV erstellt und dann in das Dataset mit übernommen. Nun aber musste dies im RDLC selber berechnen da die Sortierung im Dataset und im Layout unterschiedlich waren. Hier eine ganz simple Lösung:

1. Wir erstellen eine eigene Funktion + Variable im Custom Code Bereich des Reports

Custom Code Bereich

snap2188 snap2189

Der einzufügende Code:

Dim GroupCnt as Integer=0
Function GetGroupRownumber() as String
 GroupCnt=GroupCnt+1
 return GroupCnt.ToString()
 End Function

2. Diese sprechen wir in dem Control unserer Wahl an:

=Code.GetGroupRownumber()

3. Wir erfreuen uns an der hochzählenden, laufenden Nr. 🙂

 

Im Prinzip macht diese Funktion nichts anderes als eine integer Variable hochzuzählen. Da diese Funktion aber nur ausgeführt wird wenn sie auch angezeigt wird werden nicht eingeblendete Controls nicht mit gezählt! Werden Zeilen also aus diversen Gründen nicht angezeigt, werden diese auch nicht mit gezählt 🙂

 

Mit freundlichen Grüßen, Matthias König

Eine komische Headline für ein regelmäßig auftretendes Problem: Es sollen Daten importiert werden aber gewisse Felder werden (z.B.) als Integer geliefert und in NAV sind genau diese Felder vom Typ Code mit führenden Zeichen (häufig dann nullen). Dies kann relativ komfortable gelöst werden. Man Verwendet den PADSTR Befehl. Hier ein Auszug aus der NAV Hifle:

Changes the length of a string to a length that you define.
NewString := PADSTR(String, Length [, FillCharacter])

Diese Funktionalität können wir uns wie folgt zu nutze machen: Wir wissen die Länge des Feldes das wir befüllen wollen (Beispielhaft hat unser Feld 5 Zeichen) und wir wissen die Länge des importierten Strings ( STRLEN(ImportText) ). Nun können wir also, falls unser Code führende nullen haben soll, folgenden Code verwenden um den zu kurzen, importierten Text mit führenden nullen zu versehen:

myNewStr := PADSTR('', 5 - STRLEN(ImportText), '0') + ImportText;

Mit Freundlichen Grüßen,

Matthias König

Wer kennt es nicht? Es tritt ein Fehler mit einer langen, missverständlichen Meldung auf. Um diese nun ordentlich im Internet zu suchen, müsste man diese nun kopieren können…und das geht auch! Einfach das Fenster mit der Meldung anklicken und STRG+C (Copy) auf der Tastatur drücken. Daraufhin braucht man nur z.B. Notepad per STRG+V (Paste) den Text einfügen und TADAAA, die formatierte Fehlermeldung!

Beispiel:

Eine nur exemplarische Fehlermeldung!

Das Fenster wurde angeklickt und per STRG+V hier herreich gepasted!

---------------------------
Microsoft Dynamics NAV
---------------------------
Ein krtitischer Fehler ist aufgetreten!
Der Fehlercode lautet: 0x6AS589/6564451-0B2.

Bitte konfigurieren Sie Ihre Anwenundung korrekt!
---------------------------
OK   
---------------------------

Ich finde, dass dies eine schön einfache Möglichkeit ist, schnell nach einer Fehlermeldung im Internet zu suchen.

Gruß,

Matthias König

Fast jedes Objekt in NAV hat eine Versionsliste. Falls sich jemand mal gefragt hat, was welche Nr., Punkt oder was die  Zeichen bedeuten, hier ein Beispiel zur Erläuterung der Versionierung:

NAVDACH60.00.01

  • NAV – Produktname
  • DACH – Zeichencode für die Lokalisierung
  • 60 – maijor-release, Die NAV Version
  • .00 – Version des Servicepacks (falls vorhanden)
  • .01 – Version des hotfixes (falls vorhanden)

Die Umgebungsvariablen sind manchmal sehr nützliche Informationen, die man während der Programmierung gebrauchen kann. Zum Beispiel der Pfad zum TEMP Ordner, der Benutzername, der Clientname, das Homedrive und vieles mehr.

Wenn man sich ersteinmal anschauen will, welche Umgebungsvariablen auf dem aktuellen System zur Verfügung hat, öffnet man die Konsole (Start->Ausführen->cmd) und tippt set ein.Nach dem Du diese Eingabe bestätigt hast, werden dir alle zur Verfügung stehenden Umgebungsvariablen angezeigt. Eingrenzen kann man die Ausgabe, indem man die Anfangsbuchstaben (oder auch den gesamten Namen) der Variable eintippt.

Beispiel:

Beispiel der Umgebungsvariablen die mit comm beginnen.

environ comm...

Um diese Variablen in NAV abzufragen, kann man eigentlich die Funktion ENVIRON(‚<VARNAME>‘) verwenden. Leider wird diese nicht vom RTC und von Webservices unterstützt. Deswegen habe ich mir (aus performance Gründen) folgende Funktion gebaut:

XENVIRON(Value : Text[50]) : Text[1024]
// Webservices and RTC
IF ISSERVICETIER THEN BEGIN
  CREATE(WshShell, TRUE, TRUE);
  EXIT( WshShell.ExpandEnvironmentStrings('%' + Value + '%') );
END ELSE BEGIN
  EXIT( ENVIRON(Value) );

Hinweis: Der Code fragt: „Von wo werde ich aufgerufen?“

Die Automationvariable WshShell (‚Microsoft Shell Controls And Automation‘.Shell) (‚Windows Script Host Object Model‘.WshShell) macht genau das gleiche wie ENVIRON ist aber langsamer. Da ENVIRON aber Fehler wirft, wenn ein Webservice oder der RTC diese Funktion aufruft, wird nur dann die WshShell verwendet.