[Gelöst] Dateiverzeichnisse benutzen

13. Dezember 2007 10:29

Moin moin miteinander.

Ich stehe vor einem kleinen Problemchen und hab warscheinlich mal wieder n Brett vorm Kopp. Bei uns ist in der Tabelle 311 Sales & Receivables Setup Dateiverzeichnisse hinterlegt die für den Import und den Export von Daten genutzt werden (z.B. C:/Testordner/Testunterordner).

Jetzt habe ich diese Tabelle erweitert und neue Dateiverzeichnisse erstellt. Diese sind vom Typ Text und haben einen länge von 200. Die Verzeichnisse die ich eingetragen habe, sind deutlich unter den 200. Nun hab ich aber das Problem, wenn ich diese mir mit Message ausgeben lassen möchte, mir dann nichts angezeigt wird.

Liegt das warscheinlich an den Slashs?
Ich hab leider noch nicht gefunden wie die schon bestehenden Dateiverzeichnisse abgerufen werden... aber ich werde weitersuchen. Vielleicht find ich ja noch ne Antwort. Aber vielleicht könnt ihr mir auch schneller weiterhelfen. :wink:
Zuletzt geändert von Heike Bennerscheid am 13. Dezember 2007 10:36, insgesamt 1-mal geändert.

13. Dezember 2007 10:32

Die Verzeichnisse die ich eingetragen habe, sind deutlich unter den 200. Nun hab ich aber das Problem, wenn ich diese mir mit Message ausgeben lassen möchte, mir dann nichts angezeigt wird.


Hm - ein Backslash (du meintest doch den auf der ß-Taste?) wird von Navision als Zeilenumbruch interpretiert. Dies führt also/aber nicht dazu, dass du in deiner Message nichts lesen kannst.

13. Dezember 2007 10:35

Ja meinte den Backslash.

Ich weiß zwar immer noch nicht genau, warum er mir so gar nix ausgegeben hat. Aber ich hab doch noch den Code gefunden der mir die anzeige ermöglicht.

Code:
Dateiverzeichnis.GET;
Dateiverzeichnis.TESTFIELD("Dateiverzeichnis XML OrderDel");
Dateiverzeichnis."Dateiverzeichnis XML OrderDel" :=
  DELCHR(Dateiverzeichnis."Dateiverzeichnis XML OrderDel",'>','\') + '\';

13. Dezember 2007 10:38

Bei der Variante MESSAGE(MeinePfadVariable); werden die Backslashes als Zeilenumbruch interpretiert.
Schreibt man jedoch MESSAGE('%1',MeinePfadVariable); so werden die Backslashes nicht interpretiert und einfach mit ausgegeben.

13. Dezember 2007 10:53

MESSAGE('%1',MeinePfadVariable); <- Das habe ich auch benutzt. Jedoch ohne Ergebnis. Also es wurde mir nichts ausgegeben. :(

13. Dezember 2007 10:55

Kommt die Message mit leerem Inhalt oder kommt die Message gar nicht?
Bei Letzterem musst du deinen Debugger befragen, warum der Code nicht durchlaufen wird.

13. Dezember 2007 11:04

Nein es kommt leerer Inhalt. Also im Code steht zum Beispiel:

Code:
MESSAGE('Meine Pfad Variable: %1',MeinePfadVariable);


Und als Ausgabe kommt dann:

Meine Pfad Variable:

13. Dezember 2007 11:14

Halte mit dem Debugger an der von dir zitierten Stelle an und schau dort nach, was in der Variable MeinePfadVariable wirklich drin steht.
Könnte es sein, dass diese Variable tatsächlich leer ist?
Möglicherweise wurde sie erst gar nicht gefüllt oder nachträglich gelöscht (z.B. durch INIT, CLEAR, CLEARALL ...).

13. Dezember 2007 12:24

Nein. In der Tabelle steht der Pfad drinn (schon öfter kontrolliert). Zudem steht der Code ganz alleine in einer CodeUnit. Ohne was davor oder dahinter (habe diese CodeUnit ja extra angelegt weil ich auch zuerst dachte da zerschießt mir ein anderer Code die Variable).

Finde das irgendwie eigenartig :/

13. Dezember 2007 12:29

Zudem steht der Code ganz alleine in einer CodeUnit.


Aha! Machst du denn vorher auch ein GET auf deinen Datensatz? Ohne GET oder FIND wird deine Variable schließlich nie gefüllt ...

(Deswegen auch der Hinweis mit dem Debugger. Schließe doch bitte mit seiner Hilfe aus, dass die Variable tatsächlich leer ist.)

13. Dezember 2007 13:01

Nein ich mache keinen GET. Ich dachte, da es nur einen einzigen Datensatz in der Tabelle gibt, das er diesen dann auch nehmen würde. Aber da scheint dann wohl Navision nicht so zu denken wie ich :-P

13. Dezember 2007 13:05

Ohne GET und FIND kein Datenbankzugriff.
Ohne diese Befehle also auch kein "das er diesen dann auch nehmen würde" ;-)

13. Dezember 2007 19:41

Tabelle 311 Sales & Receivables Setup


Die Setup-Tabellen haben i.d.R. nur einen Datendatz mit leerem Primärschlüssel, d.h. ein Tab311.GET bedeutet das Gleiche wie Tab311.GET(''). Falls Du Dir die Tabelle über eine Form anschaust, macht die Form implizit ein FIND.