[Gelöst] Dialog übergreifend Aktualisieren

11. März 2009 11:14

Hallo,

besteht die Möglichkeit, einen Dialog, der von einer Codeunit geöffnet wurde, z.B. von einer Form aus zu aktualiseren?
Wenn ja, wie????
Zuletzt geändert von winkelsbr am 11. März 2009 13:10, insgesamt 1-mal geändert.

Re: Dialog übergreifend Aktualisieren

11. März 2009 11:17

Könntest du ein kleines Anwendungsbeispiel nennen?
In welcher Reihenfolge wird dabei was geöffnet?

Re: Dialog übergreifend Aktualisieren

11. März 2009 11:27

Hallo Natalie,

über eine Form wird wird ein Dialog geöffnet
Code:
import.DIALOG('Prüfe Datei #1#####'

Im Anschluß findet in der Form eine Abfrage statt, ob eine bestimmte Datei existiert.
Ist das der Fall, wird ein Dateport gestartet.
Innerhalb des Dataport finden verschiedene Abfrage statt, deren Ergebniss über das Dialogfeld (import.DIALOG) ausgegeben werden soll.

Re: Dialog übergreifend Aktualisieren

11. März 2009 11:40

Müsste nach diesem Schema funktionieren (was du brauchst, ist eine Variable vom Typ Dialog, ich nenne sie wie im Standard Window):

Quelltext auf deiner Form (noch besser in einer Codeunit):
Code:
Window.OPEN(...);
Window.UPDATE(...); // "Prüfe Datei"
IF DateiExistiert THEN BEGIN
  Dataport.RUNMODAL;
  Dataport.GetErgebnis(Ergebnisvariable);
  Window.UPDATE(...); // verwende hier die Ergebnisvariable.
END;

Window.CLOSE;


Mehr zum Thema: siehe Onlinehilfe und
Einen Fortschrittfsbalken realisieren
Einen Platzhalter einsetzen

Re: Dialog übergreifend Aktualisieren

11. März 2009 12:14

Hallo Natalie,

jetzt stehe ich gerade auf dem Schlauch!
Ich bin schon auf eine Codeunit umgeschwenkt. Hier mal der Code der Codeunit:
Code:
importdialog.OPEN('Starte Importschnittstelle:\\' +
                  '#1################');

D1 := EXISTS('Datei.csv'); // Abfrage, ob Datei existiert

IF D1 = TRUE THEN
   importdialog.UPDATE(1,'Prüfe B1S OK')     // Zeigt dem Benutzer an, ob die Datei  existiert
ELSE
   importdialog.UPDATE(1,'Prüfe B1S FEHLT');

importer.FILENAME('Datei.csv');
importer.RUNMODAL;

Da es innerhalb der Codeunit mehrere Dialoge geben wird, benenne ich sie entsprechend deren Verwendung

Natalie hat geschrieben:Dataport.GetErgebnis(Ergebnisvariable);

In welchem Trigger muß die Variable befüllt werden? Ich habe im Dataport eine Globale Variable ("zähler" => INTEGER), die entsprechend der tatsächlich importierten Datensätze hochgezählt wird.
Nur wie kann ich diese VAriable von der Codeunit angesprochen werden?

Re: Dialog übergreifend Aktualisieren

11. März 2009 12:19

GetErgebnis steht für eine Funktion, die du selbst innerhalb des Dataports schreiben musst. Diese braucht einen var-Parameter.
Innerhalb dieser Funktion setzt du den var-Parameter = deinem Zähler (oder was auch immer du außerhalb verwenden möchtest).

Re: Dialog übergreifend Aktualisieren

11. März 2009 12:37

Mmmh,

ich habe im Dataport die Funktion "fieldzähler" erstellt und dort als Parameter "datensätze" angelegt.

Wenn ich in der Codeunit jedoch den Wert übernehmen will, meckert mir beim speichern des Code Navision gleich von wegen "unbekannte Variable...."
Code:
//Code Dataport
impzähler := importer.fieldzähler(datensätze);

Re: Dialog übergreifend Aktualisieren

11. März 2009 12:40

datensätze muss in deiner aufrufenden Codeunit als Variable angelegt werden.

Re: Dialog übergreifend Aktualisieren

11. März 2009 13:10

Danke