[Gelöst] Noch ne Frage zum Excel Import

Bild Speziell fĂĽr Probleme der Office-Integration in die Dynamics Produkte

Beitragvon Timo Lässer » 8. März 2006 14:11

Michael Schumacher hat geschrieben:wegen der Umlaute musst du die Exceltabelle als Text(MSDOS) abspeichern, [...]

Alternativ befindet sich im Download Center eine Codeunit, welche ASCII nach ANSI und umgekehrt konvertieren kann.

[url=http://mbs-support.info/dload.php?action=file&file_id=48]TextManagement
Diese Codeunit (ID: 99996) enthält verschiedene Text-Konvertierungs-Funktionen[/url]

In Navision 4.0 ist zwar eine einfache ASCII<->ANSI-Konvertierung vorhanden, jedoch umfasst diese nicht alle gemeinsamen Zeichen der Zeichentabellen und braucht (aus eigenen Erfahrungen) 8-mal so lange.
(Mein erster Entwurf verwendete die gleiche Technik, bis ich meine Codeunit ein wenig "getunt" habe.)
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 Michael Schumacher » 8. März 2006 14:21

Es geht einfacher und schneller, gleich in Excel so zu speichern, als zig mal die Codeunit fĂĽr die Wandlung aufzurufen.
Das Tool ist aber trotzdem unverzichtbar, denn nicht jedes Programm kann so komfortabel wie excel speichern ;-)
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 mgerhartz » 8. März 2006 14:50

Ich werde noch wahnsinnig :shock:

Habe die Exceltabelle wie beschrieben als DOS TXT gespeichert. Im Editor geöffnet sieht das ganze dann so aus:

1010000 50,00 50,00
1010100 0,00 150,00 150,00
1010101 25,00 25,00
1010102 25,00 25,00

Im Dataport habe ich als Seperator <TAB> eingestellt. Die Felder in der zu befüllenden Tabelle lauten 1. Gliederungsnummer (Code, Länge 20) und 2. Betrag (Decimal). Als DataportFlields habe ich diese ausgewählt und die Felder Startpos und Width leer gelassen. Ich bekomme immer noch die Fehlermeldung

"Typenkonvertierung des Ausdrucks Boolean in einen Code Wert ist nicht möglich"

Ich raff das nicht. WIe der Inhalt der Textdatei aussieht steht ja oben. Ich habe doch ĂĽberhaupt kein Booleanfeld :cry:
mgerhartz
 
Beiträge: 308
Registriert: 13. Februar 2006 15:18
Wohnort: Koblenz

Beitragvon Michael Schumacher » 8. März 2006 14:52

schalte doch mal den debugger ein, ob der anzeigt, wo der Fehler auftritt.
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 Marc Teuber » 8. März 2006 14:56

mgerhartz hat geschrieben:1010000 50,00 50,00
1010100 0,00 150,00 150,00
1010101 25,00 25,00
1010102 25,00 25,00

Im Dataport habe ich als Seperator <TAB> eingestellt. Die Felder in der zu befüllenden Tabelle lauten 1. Gliederungsnummer (Code, Länge 20) und 2. Betrag (Decimal).


Also ich seh da mehr als zwei Spalten. Mindestens drei, bei der zweiten Zeile sogar vier Spalten.

GruĂź, Marc
Benutzeravatar
Marc Teuber
Microsoft Partner
Microsoft Partner
 
Beiträge: 1064
Registriert: 2. Oktober 2005 13:36
Wohnort: Greven
Arbeitsort: MĂĽnster, Dortmund
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Beitragvon Michael Schumacher » 8. März 2006 15:02

das macht nichts, ĂĽberflĂĽssige Spalten werden ignoriert
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 Marc Teuber » 8. März 2006 15:03

Michael Schumacher hat geschrieben:das macht nichts, ĂĽberflĂĽssige Spalten werden ignoriert

Stimmt ja, da hast du recht!
Benutzeravatar
Marc Teuber
Microsoft Partner
Microsoft Partner
 
Beiträge: 1064
Registriert: 2. Oktober 2005 13:36
Wohnort: Greven
Arbeitsort: MĂĽnster, Dortmund
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Beitragvon mgerhartz » 8. März 2006 15:11

Könnte es sein, dass sich Navision an den Kommas in den Beträgen stört?
mgerhartz
 
Beiträge: 308
Registriert: 13. Februar 2006 15:18
Wohnort: Koblenz

Beitragvon JanV » 8. März 2006 15:14

Könnte es sein, dass du deinen alten Dataport irgendwie neu abgespeichert hast und nun noch in irgendeinem Trigger eine Anweisung hast dass ein Feld auf TRUE gesetzt werden soll?
JanV
 

Beitragvon mgerhartz » 8. März 2006 15:22

Ich OBERHIRNI hatte tatsächlich noch einen dummen Code im Trigger stehen. Manchmal .....und so weiter. Hoffe ich habe eure Nerven nicht allzu sehr strapaziert.

Nochmals 1000 Dank fĂĽr Eure UnterstĂĽtzung :wink:
mgerhartz
 
Beiträge: 308
Registriert: 13. Februar 2006 15:18
Wohnort: Koblenz

Beitragvon mgerhartz » 13. März 2006 16:31

Hallo Leute, ich muss mich leider doch noch mal zu dem Thema bei euch melden. Ich habe jetzt mit dem Dataport die Daten der Excel Tabelle in eine neu angelegt Navision Tabelle importiert. Ich habe mir schon einiges angesehen, verstehe aber immer noch nicht, wie ich die Daten jetzt in die Tabelle Sales Line bzw. Sales Header bekomme.

Der Sales Header erzeugt doch fĂĽr jede neue Rechnung eine laufende Nummer. Muss ich jetzt nur noch die Daten der neue Navision Tabelle in die Tabelle Sales Line schreiben? Wie funktioniert denn die erstellung einer neuen lfd. Nr. im Sales Header? Fragen ĂĽber Fragen :?:
mgerhartz
 
Beiträge: 308
Registriert: 13. Februar 2006 15:18
Wohnort: Koblenz

Beitragvon Marc Teuber » 13. März 2006 16:43

Hi Markus,

du erzeugst den Verkaufskopf und anschlieĂźend die Verkaufszeile wie folgt:

Code: Alles auswählen
SalesHeader.INIT;
SalesHeader."Document Type" := SalesHeader."Document Type"::Order;
SalesHeader.VALIDATE("No.", '');
SalesHeader.VALIDATE("Posting Date", WORKDATE);
SalesHeader.VALIDATE("Sell-to Customer No.", "xxx");
SalesHeader.INSERT(TRUE);

SalesLine.INIT;
SalesLine."Document Type" := SalesLine."Document Type"::Order;
SalesLine."Document No." := SalesHeader"No.";
SalesLine."Line No." := 10000;
SalesLine.Type := SalesLine.Type::Item;
SalesLine.VALIDATE("No.", "xxx");
SalesLine.VALIDATE(Quantity, 1);
SalesLine.VALIDATE("Unit Price", "xxx");
SalesLine.INSERT;


Wenn du einen Report benutzt, der über deine neue Tabelle geht und die Aufträge erzeugen soll, musst du den o. g. Code in den Trigger "OnAfterGetRecord" stellen.

Die "xxx" sind durch deine Angaben/Variablen zuersetzen.

GruĂź, Marc
Benutzeravatar
Marc Teuber
Microsoft Partner
Microsoft Partner
 
Beiträge: 1064
Registriert: 2. Oktober 2005 13:36
Wohnort: Greven
Arbeitsort: MĂĽnster, Dortmund
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Beitragvon mgerhartz » 13. März 2006 17:01

Wow, das ging aber wieder schnell. Danke! Nun noch eine Frage. Meine Gliederungsnummer ist eigentlich 8stellig. Die Zahlen aus der Excelliste haben aber leider die 1.Stelle gekillt. Bsp. (Die Gliederungsnummer sollte lauten 01234567 und Excel hat daraus 1234567 gemacht) Die Gliederungsnummer ist ein Codefeld.

Also
BuHaPauschale2003.Gliederungsnummer := 1 + BuHaPauschale2003.Gliederungsnummer;

funktioniert leider nicht.
mgerhartz
 
Beiträge: 308
Registriert: 13. Februar 2006 15:18
Wohnort: Koblenz

Beitragvon Marc Teuber » 13. März 2006 17:04

Da es sich um ein Code-Feld handelt und somit alphanumerische Zeichen enthalten kann, mĂĽssen die Zeichen mit dem Hochkomma eingeschlossen werden.

BuHaPauschale2003.Gliederungsnummer := '1' + BuHaPauschale2003.Gliederungsnummer;
Benutzeravatar
Marc Teuber
Microsoft Partner
Microsoft Partner
 
Beiträge: 1064
Registriert: 2. Oktober 2005 13:36
Wohnort: Greven
Arbeitsort: MĂĽnster, Dortmund
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Beitragvon mgerhartz » 13. März 2006 17:24

Danke! Funktioniert jetzt, aber wenn ich den Report laufen lasse, kommt ein Hinweis, dass die SalesLine bereits existiert und ich eine neue Auftragsnummer vergeben muss
:-(
mgerhartz
 
Beiträge: 308
Registriert: 13. Februar 2006 15:18
Wohnort: Koblenz

Beitragvon JanV » 13. März 2006 17:35

Lagere den Teil der die Verkaufszeilen erstellt in eine Funktion aus. In dieser Funktion deklarierst du die Record Variable Verkaufszeile als lokale Variable, dadurch wird jedesmal eine neue "Instanz" angezogen.
JanV
 

Beitragvon mgerhartz » 13. März 2006 17:50

Hab ich probiert, funktioniert leider nicht. Die Fehlermeldung verweist auf den Trigger (No. - OnValidate) und dort steht u. a.:

GetSalesHeader;
IF SalesHeader."Document Type" = SalesHeader."Document Type"::Quote THEN BEGIN
IF (SalesHeader."Sell-to Customer No." = '') AND
(SalesHeader."Sell-to Customer Template Code" = '')
THEN
ERROR(Text031, SalesHeader.FIELDCAPTION("Sell-to Customer No."),
mgerhartz
 
Beiträge: 308
Registriert: 13. Februar 2006 15:18
Wohnort: Koblenz

Beitragvon Marc Teuber » 13. März 2006 17:58

Also bei mir funktioniert das. Hier noch mal den original-Code aus Navision (etwas anders als oben):
Code: Alles auswählen
SalesHeader.INIT;
SalesHeader."Document Type" := SalesHeader."Document Type"::Order;
SalesHeader.VALIDATE("No.", '');
SalesHeader.VALIDATE("Posting Date", WORKDATE);
SalesHeader.VALIDATE("Sell-to Customer No.", '10021001');
SalesHeader.INSERT(TRUE);

SalesLine.INIT;
SalesLine."Document Type" := SalesLine."Document Type"::Order;
SalesLine."Document No." := SalesHeader."No.";
SalesLine."Line No." := 10000;
SalesLine.Type := SalesLine.Type::Item;
SalesLine.VALIDATE("No.", '20031001');
SalesLine.VALIDATE(Quantity, 1);
//SalesLine.VALIDATE("Unit Price", "xxx");
SalesLine.INSERT;
Benutzeravatar
Marc Teuber
Microsoft Partner
Microsoft Partner
 
Beiträge: 1064
Registriert: 2. Oktober 2005 13:36
Wohnort: Greven
Arbeitsort: MĂĽnster, Dortmund
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Beitragvon mgerhartz » 13. März 2006 18:04

Ich sehe gerade den Unterschied. Da ich eine ganze Reihe von Daten für unterschiedliche Rechnungsempfänger habe, habe ich das Feld "Sell-to Customer No." so befüllt:


SalesHeader.VALIDATE("Sell-to Customer No.", '1' + BuHaPauschale2003.Gliederungsnummer);

Scheint aber nicht zu funktionieren.
mgerhartz
 
Beiträge: 308
Registriert: 13. Februar 2006 15:18
Wohnort: Koblenz

Beitragvon mgerhartz » 13. März 2006 18:11

So, muss mich jetzt auf den Weg zum Zug machen. Schon mal Danke fĂĽr all eure Hilfe. Setze mich im Zug wieder dran und melde mich dann morgen wieder. So long......
mgerhartz
 
Beiträge: 308
Registriert: 13. Februar 2006 15:18
Wohnort: Koblenz

Beitragvon Marc Teuber » 13. März 2006 18:13

Sicher dass es den Debitor '1'+BuHaPauschale2003.Gliederungsnummer gibt? Trage doch testweise eine Debitornummer direkt rein. Also so:

Code: Alles auswählen
SalesHeader.VALIDATE("Sell-to Customer No.", '12345');


NatĂĽrlich die 12345 durch eine reale Nummer ersetzen. Wenn der Fehler dann nicht mehr auftritt, weiĂźt du das die Angabe '1'+BuHaPauschale2003.Gliederungsnummer eine Debitor-Nummer zurĂĽckgibt, die es nicht gibt.
Benutzeravatar
Marc Teuber
Microsoft Partner
Microsoft Partner
 
Beiträge: 1064
Registriert: 2. Oktober 2005 13:36
Wohnort: Greven
Arbeitsort: MĂĽnster, Dortmund
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Beitragvon JanV » 13. März 2006 18:16

Du könntest die Anweisung mit dem Get auch durch ein IF bla.get abfangen und dann in deiner Tabelle entsprechend markieren wenn keine Entsprechung gefunden wurde.
JanV
 

Beitragvon Marc Teuber » 13. März 2006 23:19

JanV hat geschrieben:Du könntest die Anweisung mit dem Get auch durch ein IF bla.get abfangen und dann in deiner Tabelle entsprechend markieren wenn keine Entsprechung gefunden wurde.

Das wĂĽrde ich ehrlich gesagt nicht machen. Der GET-Befehl wird wohl aus gutem Grund dort ohne einem IF-Befehl aufgerufen.
GruĂź, Marc
Benutzeravatar
Marc Teuber
Microsoft Partner
Microsoft Partner
 
Beiträge: 1064
Registriert: 2. Oktober 2005 13:36
Wohnort: Greven
Arbeitsort: MĂĽnster, Dortmund
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Beitragvon JanV » 14. März 2006 10:13

Ă„hem, ok ich habs verrafft, das ist ja eine Funktion im OnValidateTrigger dann wĂĽrd ich auch die Finger davon lassen :oops:
JanV
 

Beitragvon mgerhartz » 14. März 2006 17:38

Hallo zusammen, sorry, dass ich mich heute gar nicht gemeldet hatte. Hab heute morgen einen Weisheitszahn gezogen bekommen, AUA! Morgen bin ich wieder frohen Mutes auf der Arbeit und werde mich wieder melden. So long....
mgerhartz
 
Beiträge: 308
Registriert: 13. Februar 2006 15:18
Wohnort: Koblenz

VorherigeNächste

ZurĂĽck zu Microsoft Office

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast