Microsoft Dynamics NAV 2013 Suchen und Ersetzen

Microsoft Dynamics NAV 2013 Suchen und Ersetzen

  • Comments 2

In Microsoft Dynamics NAV 2009 und im Classic Client konnte man über “Suchen und Ersetzen” Datenänderungen durchführen ohne dafür einen Batch programmieren zu müssen. Im RTC wurde das Suchen durch Filtern ersetzt und das Ersetzen suchte man vergeblich. In Microsoft Dynamics NAV 2013 nun ist das Suchen zurückgekehrt:

image

Standard Page zum Suchen

 

Aber manchmal vermisst man doch das Ersetzen noch. Vielleicht haben Sie den Blog Post von Robert Miller schon gesehen. Er ist es auf jeden Fall Wert einen genaueren Blick hinein zuwerfen. Deswegen hier die eingedeutschte Version des Beitrags, ergänzt um eigene Anmerkungen. Viel Spaß beim Experimentieren.

Auch wenn Microsoft Dynamics NAV 2013 mit Rapid Start und den bekannten Möglichkeiten einen kleinen Report / Funktion zur Änderung von Stammdaten zu schreiben, schon ein ganzes Arsenal an Werkzeugen bietet, so ist es für den Endanwender doch oft einfacher mittels Suchen und Ersetzen einen Wert durch einen anderen zu ersetzen. Wie man mit einfachen Mitteln eine Page zum Ersetzen erstellen und mit unterschiedlichsten Daten benutzen kann zeigt die nachfolgende Beschreibung. So könnte das ganze Aussehen:

 

image

Ersetzen Page

 

Beschreibung

  • Feld: Mittels AssistEdit oder auch durch Eingeben des Feldnamens können Sie das Feld auswählen, welches Ersetzt werden soll
  • Suche nach: enthält den Wert der gesucht werden soll
  • Ersetzen durch: enthält den Wert, der mit dem gefundenen ersetzt werden soll

Options:

  • Entsprechung – Sie können wählen zwischen “Ganzes Feld” oder “Jeden Teil des Feldes”
  • Groß-/Kleinschreibung – Legt fest, ob Groß-/Kleinschreibung beachtet werden soll
  • Ganzes Feld ersetzen – Ersetzt das ganze Feld und nicht nur Teile, wenn markiert
  • Anzahl Sätze im Dataset – Zeigt an, wie viele Datensätze im aktuellen Filter enthalten sind. Nicht die Anzahl der Treffer.

 

Wie wird diese Page nun genutzt?

Sie können das angehängte .TXT Objekt importieren und kompilieren. Sie werden dann in der Lage sein, die Page von fast überall aus zu benutzen. Versuchen Sie dies zum Beispiel bei der Kunden List Page (Page 22):

1. Importieren und Kompilieren Sie “Replace NAV2013DE.txt”. (Neue Page 50050)

2. Öffnen Sie die Entwicklungsumgebung und dort die Page 22 per Design öffnen.

3. Fügen Sie eine globale Variable hinzu, die Sie auf die neue Page (50050) zeigen lassen

4. Erzeugen Sie eine neue Action

5. Im OnAction Trigger der neuen Action, kommt der folgende Code hinein…

6. Speichern und Kompilieren Sie und schon können Sie die Funktion nutzen

 

Wie funktioniert es nun?

  • “LoadDataSet” läd das gefilterte Dataset, somit ist Filtern vor dem Ersetzen möglich
  • Die SetValidations Funktion ist Optional, diese Funktion hat zwei Parameter. Der erste Bestimmt, ob der Modify Trigger benutzt wird und der zweite, ob OnValidate() aufgerufen wird.

Noch ein paar Hinweise / Ideen:

  • Wenn Sie Time oder DATETIME Ersetzen, denken Sie daran, dass zwar nur Stunden, Minuten und Sekunden angezeigt werden, aber eventuell Millisekunden gespeichert sind. Am besten wäre also, denn zu findenden Wert über die Zwischenablage in die Page zu kopieren.
  • Setzen Sie die Funktion dort ein, wo es sinnvoll ist und denken Sie daran, dass es eine mächtige Funktion ist. Es gibt kein “Undo”. Im Moment kommt nur eine “Fertigmeldung” nachdem das Ersetzen durchgeführt wurde. Eine Idee wäre, dort noch eine Abfrage hinzuzufügen. “Sind Sie wirklich sicher?” oder so etwas
  • Vielleicht ist es nicht gewünscht, dass alle Felder ersetzt werden können. Sie könnten über eine zusätzliche Einrichtungstabelle die Funktionen so erweitern, dass eingerichtet werden kann, welche Felder mit dieser Funktion bearbeitet werden dürfen

 

These postings are provided "AS IS" with no warranties and confer no rights. You assume all risk for your use.

 

Mit freundlichen Grüßen und Viel Spaß damit

Andreas Günther

Microsoft Dynamics Germany

Attachment: Replace NAV2013_DE.txt
Leave a Comment
  • Please add 8 and 3 and type the answer here:
  • Post
  • Ist ja super.

    Ich bau das gerade für einen Kunden ein.

    Hat er gut gemacht der Miller.

    Besonders die ganze rec ref Geschichte. Habe ich immer noch vollständig durchdrungen.

    Zum Teil schon deutsch hinterlegt. In den Texten fehlt es aber noch.

    Was jedoch nicht funktioniert ist der Filter.

    Den braucht man beim Aufruf aus einem Buchblatt

    Hängt auch mit der Sprache zusammen.

    Filtertext ist deutsch Name Feld englisch

    //IF FilteredFldRef.NAME = Filters[ICount][1] THEN BEGIN

    IF FilteredFldRef.CAPTION = Filters[ICount][1] THEN BEGIN

    Gibt es eine neuere Version davon in ML. Der Blog ist ja schon etwas älter

  • Hallo Helge,

    wenn du folgendes änderst, dann funktionierst auch mit Captions.

    1. In page 6218 die Caption mit reinnehmen

    2. Im Code "SelectedField" in der Replace page im OnValidate()

    //Fields.SETRANGE(FieldName,SelectedField);

    Fields.SETRANGE("Field Caption",SelectedField);

    Ändern und im OnAssistEdit:

    //SelectedField := Fields.FieldName;

    SelectedField := Fields."Field Caption";

    Damit kann man dann die Felder auf der aktuellen Sprache auswählen oder eingeben. Der Rest funktioniert schon automatisch, weil er nur die Feldnummern speichert.

    Gruß

    Andreas

Page 1 of 1 (2 items)