[Gelöst]Komplexer DATAPORT

Bild Microsoft Dynamics NAV 1.xx und 2.xx
(ehem. Navision Financials)

[Gelöst]Komplexer DATAPORT

Beitragvon mikka » 6. Februar 2006 19:05

Hallo,
in Dataports habe ich bisher nur ein DataItem benutzt und habe daher folgende Frage:

Ich möchte eine eine Textdatei einlesen, dabei soll ein Teil den Verkaufskopf füllen und der Rest die Verkaufszeilen.

Ist das Möglich, und wenn ja, wie muss ich vorgehen?
GruĂź Mikka
Zuletzt geändert von mikka am 21. Juni 2006 20:56, insgesamt 1-mal geändert.
Benutzeravatar
mikka
Microsoft Partner
Microsoft Partner
 
Beiträge: 1832
Registriert: 26. September 2005 11:54
Wohnort: Bremen
Realer Name: Michael
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.6, 3.7, 4, 5, 2009/13/15

Beitragvon Timo Lässer » 6. Februar 2006 20:36

Prinzipiell ist das möglich, allerdings müssen in der Textdatei zuerst alle Verkaufsköpfe und anschließend die dazugehörigen Verkaufszeilen gespeichert sein.
Die elegantere Methode, die Daten zusammenhängend (Kopf, Zeile, Zeile, ... ; Kopf, Zeile, Zeile, ... ; ...) in die Datei zu exportieren bzw. aus ihr zu importieren ist mit Dataports nicht möglich.
Gruß, Timo Lässer

Frage beantwortet? Schreibe bitte "[Gelöst]" vor den Titel deines ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, E-Mail, Instant Messanger, Soziale Netzwerke, Telefon oder Fax! DafĂĽr ist dieses Forum da.
Hier kannst du fĂĽr MSDynamics.de spenden.
Benutzeravatar
Timo Lässer
Administrator
Administrator
 
Beiträge: 5274
Registriert: 14. November 2004 22:18
Wohnort: DE 49716 Meppen
Arbeitsort: DE 49733 Haren (Ems)
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 1.10a - 2018, BC14, BC21

Beitragvon mikka » 6. Februar 2006 22:34

hmm,
das klingt nicht gut. :cry:
Ich werde vermutlich die Daten in folgender Form bekommen:
Kopf1;Zeile1;
Kopf1;Zeile2;
Kopf2;Zeile1;
Kopf2;Zeile2; ... usw.

Habt Ihr gute Ideen, wie soetwas "sauber" zulösen ist?
GruĂź Mikka
GruĂź, Mikka

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.
Benutzeravatar
mikka
Microsoft Partner
Microsoft Partner
 
Beiträge: 1832
Registriert: 26. September 2005 11:54
Wohnort: Bremen
Realer Name: Michael
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.6, 3.7, 4, 5, 2009/13/15

Beitragvon Otschko » 6. Februar 2006 23:27

Hi Mikka,

hmm...ich würd mal probieren, evtl. AutoSave/Update/Insert auf No zu setzen und die Datensätze per Hand einzusetzen, oder in Temporäre Tabellen zu speichern und später "richtig" einzusetzen.
Oder halt ansonsten fällt mir da nur der Umweg über ExcelPuffer oder das Parsen "per Hand" ein...

Gruss, Otschko
# Heut debugg' ich, morgen browse ich und ĂĽbermorgen caste ich die
Königin nach int!
Benutzeravatar
Otschko
 
Beiträge: 70
Registriert: 17. Juni 2005 14:34
Wohnort: Wittichenau
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 4.x,5.x

Beitragvon Timo Lässer » 7. Februar 2006 00:48

Wenn immer Kopf und Zeile in einem Datensatz zusammen in der Textdatei aufgeführt sind, können die Daten auch per Dataport eingelesen werden.
Werden die Kopf- und Zeilen-Daten in getrennten Zeilen zur VerfĂĽgung gestellt, dann sehe ich mit einem Dataport keine Chance.
Gruß, Timo Lässer

Frage beantwortet? Schreibe bitte "[Gelöst]" vor den Titel deines ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, E-Mail, Instant Messanger, Soziale Netzwerke, Telefon oder Fax! DafĂĽr ist dieses Forum da.
Hier kannst du fĂĽr MSDynamics.de spenden.
Benutzeravatar
Timo Lässer
Administrator
Administrator
 
Beiträge: 5274
Registriert: 14. November 2004 22:18
Wohnort: DE 49716 Meppen
Arbeitsort: DE 49733 Haren (Ems)
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 1.10a - 2018, BC14, BC21

Beitragvon W_Kattenbusch » 7. Februar 2006 10:43

Du kannst mehrere Dataitems verwenden, die nicht eingerĂĽckt sind.
Dann muĂźt Du die Datei zweimal durchlaufen und ausfiltern, ob du einen Kopf oder eine Zeile vor dir hast. Dann mit Currdataport.Skip die "falschen" Zeilen auslassen.
Ich hab auf die Methode aus einer Datei sowohl Anlagen, als auch die Anlagen AfA-Buch Zeilen importiert.
Wenn VkKopf und VkZeile in einer Zeile sind, die nicht gebrauchten Einträge in einer Dummy-Variablen speichern und diese bei der Verarbeitung ignorieren.
W_Kattenbusch
 
Beiträge: 13
Registriert: 21. Oktober 2005 14:28

Beitragvon mikka » 7. Februar 2006 11:01

Das ist ein gute und Simple Idee.
Das die DataItems nicht eingerückt (engl.: indented) werden können wusste ich.
Nur wie die Verarbeitung von zwei DataItems Funktioniert war mir nicht klar.

Ich habe in meiner bisherigen Lösung, da ich keinen anderen Weg gefunden habe einfach ein DataItem genommen und alle Werte die nicht in das DataItem gehören als Variable der zweiten Tabelle zugewiesen.

Ich vermute, dass die Verarbeitung von zwei DataItems schneller ist, als wenn ich wie zuvor beschrieben nur ein DataItem nutze und die restlichen Daten via Variable einen anderen Record zuweise, den ich jedesmal Filtern muss? (Ich möchte die Aspekte der Performance nicht aus den Augen Verlieren!)


Danke fĂĽr den Tipp.
GruĂź Mikka
GruĂź, Mikka

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.
Benutzeravatar
mikka
Microsoft Partner
Microsoft Partner
 
Beiträge: 1832
Registriert: 26. September 2005 11:54
Wohnort: Bremen
Realer Name: Michael
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.6, 3.7, 4, 5, 2009/13/15

Beitragvon W_Kattenbusch » 7. Februar 2006 11:07

Ach ja, vergiss nicht zu Beginn des zweiten Dataitems den Befehl
File.seek(0).
Ist mir passiert :oops: und ich hab mich gewundert, wo die Daten hin sind...
W_Kattenbusch
 
Beiträge: 13
Registriert: 21. Oktober 2005 14:28

Beitragvon Kowa » 7. Februar 2006 12:03

Wenn in der Importdatei eventuell Debitoren und Artikel vorhanden sind, die Navision nicht kennt, brechen solche Verarbeitungen immer wieder mit Fehlermeldungen ab. Wenn dies im Betrieb stört und die chronologische Abarbeitung nicht unbedingt notwendig ist, sollte eine Zwischentabelle eingeschaltet werden, in die die Belege erst mal eingelesen werden und nach Verarbeitung gelöscht werden. Wenn dann die Erstellung von VK-Kopf oder Zeile nicht möglich ist, diesen Beleg als "nicht verarbeitet" kennzeichnen und mit dem nächsten weitermachen. Diese Zwischentabelle muss dann natürlich regelmäßig kontrolliert werden, die fehlenden Stammdaten nachgetragen und die VK-Belege nacherstellt werden.
GruĂź, Kai

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, Messenger oder Telefon! DafĂĽr ist dieses Forum da.

Download: Dynamics NAV Object Text Explorer (Alternativlink). MVP Alumni
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7835
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01

Beitragvon mikka » 7. Februar 2006 13:43

@ KOWA:
Danke fĂĽr den Einwurf, ich werde es berĂĽcksichtigen


Frage / Feststellung zu: File.seek(0).
Die C/SIDE Referrence schreibt:
Use this function to set a file pointer to a new position in an ASCII or binary file.

Wenn ich das richtig Verstehe, dann setzt der Befehl den Pointer wieder auf den ersten Datensatz, so das der DataPort die Datei nochmal einliest.
Ist das Korrekt?

Ich habe tatsächlich das Problem gehabt, das die Daten nicht in die VK-Zeilen eingelesen wurden :roll:
Deshalb hatte ich die Variante mit nur einem DataItem ausprobiert!
GruĂź Mikka
GruĂź, Mikka

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.
Benutzeravatar
mikka
Microsoft Partner
Microsoft Partner
 
Beiträge: 1832
Registriert: 26. September 2005 11:54
Wohnort: Bremen
Realer Name: Michael
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.6, 3.7, 4, 5, 2009/13/15

Beitragvon Michael Schumacher » 7. Februar 2006 13:51

genau so ist es, damit kannst du z.B. auch eine Zeile mit den Feldtiteln überspringen, wenn sowas in der Textdatei ist, indem du einfach die Zeichen in der Titelzeile zählst und dann seek(anzahl+1) setzt.
mfg
Michael Schumacher


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.
Hmmm, ach heut' ist Backup-Tag, also alles schnell nach /dev/nul sichern!
Benutzeravatar
Michael Schumacher
Ehrenmitglied
 
Beiträge: 1762
Registriert: 1. August 2005 11:12
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 3.x, 4.x, 5.x

Beitragvon mikka » 7. Februar 2006 14:53

Feine Sache, das werde ich mir merken.
Ich habe bisher immer nach Stichworten in der ersten Zeile gesucht,
aber wehe die erste Zeile ändert sich!

Danke.
GruĂź Mikka
GruĂź, Mikka

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.
Benutzeravatar
mikka
Microsoft Partner
Microsoft Partner
 
Beiträge: 1832
Registriert: 26. September 2005 11:54
Wohnort: Bremen
Realer Name: Michael
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.6, 3.7, 4, 5, 2009/13/15

Beitragvon mikka » 7. Februar 2006 15:23

@TIMO
TIMO Lässler hat geschrieben:Wenn immer Kopf und Zeile in einem Datensatz zusammen in der Textdatei aufgeführt sind, können die Daten auch per Dataport eingelesen werden.
Werden die Kopf- und Zeilen-Daten in getrennten Zeilen zur VerfĂĽgung gestellt, dann sehe ich mit einem Dataport keine Chance.


Mit dem File.seek(0) bzw. seek(anzahl+1) müsste auch das Funktionieren. Jedoch muss die Datei immer gleich aufgebaut sein mit festen Zeichenkettenlängen. Da die abstände immer gleich sind, kann der pointer mit seek(position) immer genau gesetzt werden!

Aber ich glaube keiner möchte soeinen DataPort wirklich erstellen :lol:
GruĂź Mikka
GruĂź, Mikka

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.
Benutzeravatar
mikka
Microsoft Partner
Microsoft Partner
 
Beiträge: 1832
Registriert: 26. September 2005 11:54
Wohnort: Bremen
Realer Name: Michael
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.6, 3.7, 4, 5, 2009/13/15

Beitragvon Timo Lässer » 7. Februar 2006 23:17

Ich favorisiere bei solchen Aufgabenstellungen immer die Ein-/Auslesung "zu Fuß" per Report und FILE-Variable, da weiß ich wenigstens, was da genau in der Datei abläuft.
Wenn es keine Benutzer-Interaktion benötigt (zum Filter setzen o. ä.), dann nehme ich auch gleich eine Codeunit und programmiere das ganze im OnRun()-Trigger.
Gruß, Timo Lässer

Frage beantwortet? Schreibe bitte "[Gelöst]" vor den Titel deines ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, E-Mail, Instant Messanger, Soziale Netzwerke, Telefon oder Fax! DafĂĽr ist dieses Forum da.
Hier kannst du fĂĽr MSDynamics.de spenden.
Benutzeravatar
Timo Lässer
Administrator
Administrator
 
Beiträge: 5274
Registriert: 14. November 2004 22:18
Wohnort: DE 49716 Meppen
Arbeitsort: DE 49733 Haren (Ems)
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 1.10a - 2018, BC14, BC21


ZurĂĽck zu NAV 2.xx

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast