[Gelöst] Excel IMPORT nach Navision 4.0 (für Anfänger)

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

[Gelöst] Excel IMPORT nach Navision 4.0 (für Anfänger)

Beitragvon Roland » 18. April 2006 17:01

Hallo zusammen,

als neuer und begeisterter NAVSION Anwender haben wir so unsere Probleme mit dem importieren von Exeldateien (nicht mit Dataport CSV).

Es soll eine Exceldatei die täglich immer weiter wächst mit einem Report importiert werdern. Der Dateiname und das entsprechende Blatt sind immer gleich und bekannt. Die Datensätze sollen 1:1 in eine Navision Tabelle eingelesen werden. Mehr nicht ohne Abfragen oder Requestforms oder der gleichen - nur dumm einlesen. Ich habe mir den Bericht 81 und 82 schon angeschaut die sind aber leider für einen Anfänger zu kompliziert. :-( (Jeder fängt mal klein an) :cry:

Vielleicht hat jemand einen Tipp oder noch besser ein Beispiel wie man das am Besten löst.

Besten Dank schon mal fĂĽr Eure MĂĽhe

Roland
Zuletzt geändert von Roland am 5. Mai 2006 13:00, insgesamt 1-mal geändert.
Roland
 
Beiträge: 60
Registriert: 18. April 2006 16:37
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 4.01;2009

Beitragvon Marc Teuber » 18. April 2006 17:20

Hi Roland,

lege eine Variable vom Typ "Record" und Subtype "Excel Buffer" an. Ich habe die Variable in dem folgenden Beispiel "ExcelBuffer" genannt. Im Programmcode muss dann folgendes stehen:
Code: Alles auswählen
ExcelBuffer.OpenBook('C:\Test.xls', 'Blattname');
ExcelBuffer.ReadSheet;

Beim Ausführen der beiden o. g. Zeilen öffnet Navision die Exceldatei und schiebt den Inhalt der entsprechend gewählten Mappe (Blattname) in die Tabelle "Excel Buffer" (ID: 370). Du hast dann die Möglichkeit die Daten aus der Tabelle "Excel Buffer" zu lesen und in deine Tabellen zu verschieben.

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 Roland » 19. April 2006 10:50

Hallo Marc,

Danke erst mal für Deine schnelle Antwort. Das Importieren in den Buffer hat jetzt soweit funktioniert. Manchmal läuft er auf einen Fehler, wenn in der Exceldatei ein '#WERT!' steht, dann wird der Import abgebrochen und die Datei bleibt gesperrt. Muss ich mal schaun, dass der Fehler schon in Excel abgefangen wird. Wenn nicht, kann ich die Sperrung auch so in NAV wieder aufheben?

Mit dem verschieben in die Tabelle habe ich aber meine liebe Not. Ich habe mir nochmal den Report 81 angeschaut werde aber nicht schlau daraus, was ich da machen muss.

Vielleicht hat jemand erbarmen, und schreibt mir ein paar Codezeilen, die den Buffer in eine Tabelle ĂĽbertragen.
Wäre wirklich nett.

Besten Dank schon mal

Gruss
Roland
Roland
 
Beiträge: 60
Registriert: 18. April 2006 16:37
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 4.01;2009

Beitragvon Marc Teuber » 19. April 2006 10:55

Also ich wĂĽrde mir nicht den Report 81 anschauen. Der ist echt sehr groĂź und somit auch fĂĽr jemanden der sich mit Navision noch nicht hunderprozentig auskennt unĂĽbersichtlich.

Wie sieht denn die Struktur der Zieltabelle aus?
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
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 Roland » 19. April 2006 11:04

Hallo Marc,

die Zieltabelle hat vorerst folgende Felder:


Enabled Field No. Field Name Data Type Length Description
Yes 1 ZEICHNR Code 20
Yes 2 ART Text 50
Yes 3 Datum DateTime
Yes 4 ZNG NR Code 20
Yes 5 PROJEKT NR Code 10
Yes 6 Grafikname Text 40


die Quelldatei natĂĽrlich die gleichen.

Wenn das alles mal richtig läuft, kann es sein, dass weitere Felder in der Exceldatei angelegt werden die dann ebenfalls in der Tabelle noch angelegt werden.
Wenns hilft, kann ich auch die Tabelle und xls mailen.

Gurss
Roland
Roland
 
Beiträge: 60
Registriert: 18. April 2006 16:37
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 4.01;2009

Beitragvon Marc Teuber » 19. April 2006 11:25

Hey Roland,
auf die schnelle würde ich mal sagen, kann man das ungefähr so abbilden:
Code: Alles auswählen
ExcelBuffer.OpenBook('C:\\Test.xls','Tabelle1');
ExcelBuffer.ReadSheet;

IF ExcelBuffer.FIND('+') THEN
  CountRows:=ExcelBuffer."Row No.";

FOR Idx:=1 TO CountRows DO BEGIN
  TargetTable.INIT;

  IF ExcelBuffer.GET(Idx, 1) THEN
    TargetTable.ZEICHNR:=ExcelBuffer."Cell Value as Text";
  IF ExcelBuffer.GET(Idx, 2) THEN
    TargetTable.ART:=ExcelBuffer."Cell Value as Text";
  IF ExcelBuffer.GET(Idx, 3) THEN
    TargetTable.Datum:=ExcelBuffer."Cell Value as Text";
  IF ExcelBuffer.GET(Idx, 4) THEN
    TargetTable."ZNG NR":=ExcelBuffer."Cell Value as Text";
  IF ExcelBuffer.GET(Idx, 5) THEN
    TargetTable."PROJEKT NR":=ExcelBuffer."Cell Value as Text";
  IF ExcelBuffer.GET(Idx, 6) THEN
    TargetTable.Grafikname:=ExcelBuffer."Cell Value as Text";

  TargetTable.INSERT;
END;


Die Variablen "ExcelBuffer" und "TargetTable" sind vom Typ Record. "CountRows" und "Idx" vom Typ Integer.

Ich habe den Code nicht selber getestet...

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 » 19. April 2006 14:09

bei Zielfeldern, die nicht vom Typ Text oder Code sind, wirst Du aber wohl
Code: Alles auswählen
evaluate(TargetTable.Datum,ExcelBuffer."Cell Value as Text");

verwenden mĂĽssen.
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 » 19. April 2006 14:16

Stimmt, da hast du recht.
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
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 rotsch » 19. April 2006 14:22

Michael Schumacher hat geschrieben:bei Zielfeldern, die nicht vom Typ Text oder Code sind, wirst Du aber wohl 'evaluate(TargetTable.Datum,ExcelBuffer."Cell Value as Text")' verwenden mĂĽssen.


Ich verwende in solchen Fällen den evaluate-Befehl immer zusammen mit einer IF-Abfrage, also z.B.

Code: Alles auswählen
IF NOT evaluate(TargetTable.Datum,ExcelBuffer."Cell Value as Text") THEN ...


So lassen sich Fehlermeldungen bei falschen Werten (blank anstelle 0 in Integer usw.) abfangen, rsp. mit einem gĂĽltigen Default-Wert versehen

@schumi
Bitte nicht als Kritik an Deiner Antwort verstehen :-)
Gruss und besten Dank, Roger
Benutzeravatar
rotsch
Microsoft Partner
Microsoft Partner
 
Beiträge: 1703
Registriert: 8. März 2006 14:44
Bezug zu Microsoft Dynamics: Freiberufler
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: Ab Version 1.3 bis Aktuell

Beitragvon Michael Schumacher » 19. April 2006 14:50

rotsch hat geschrieben:@schumi
Bitte nicht als Kritik an Deiner Antwort verstehen :-)


Keine Panik, war ja auch nur als Hinweis und nicht als völlig ausformulierter Code gedacht.
Ich verwende da auch immer eine If Abfrage, zur Not mit "then;" ;-)
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 Roland » 19. April 2006 16:52

Hallo zusammen,

erst mal ein DICKES LOB an Euch und DANKE hat mir sehr geholfen :lol:

der Import funktioniert jetzt soweit. Dank Eurer Hilfe konnte ich die Probleme mit dem Format jetzt auch lösen. Jetzt gibt's noch eine Hürde mit dem Primärkey es gibt kein Feld in der Tabelle, das eindeutig ist. Somit bekomme ich immer Probleme wenn doppelte Datensätze eingefügt werden. Wahrscheinlich werde ich in der Exceldatei eine lfd Nr noch anlegen und die ebenfalls importieren. Das kommt aber erst morgen dran. Für heute ist erst mal Feierabend.

Viele GrĂĽsse

Roland
Roland
 
Beiträge: 60
Registriert: 18. April 2006 16:37
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 4.01;2009

Beitragvon Michael Schumacher » 19. April 2006 17:24

gibt es auch keine eindeutige Kombination von Feldern?
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 Timo Lässer » 19. April 2006 18:57

Es muss nicht unbedingt eine "Lfd. Nr." importiert werden. Es kann auch im OnInsert-Trigger eine Nummer ermittelt und eingefĂĽgt werden.
Da du mit 4.00 arbeitest, könnte sogar AutoIncrement verwendet werden.

Eleganter wäre natürlich, wenn die Kombination von zwei oder drei Feldern schon eindeutig wäre, da "Lfd. Nr." als Primärschlüssel immer nur eine Notlösung sein sollte.
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: 5279
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 Roland » 25. April 2006 12:09

Hi,

der Import funktioniert jetzt. Das Problem mit dem Key ist auch gelöst, habe 3 Felder zusamen gelegt - Dank Dir Michael :-D

Den anderen sei natĂĽrlich auch gedankt fĂĽr Ihre Hilfe..


Eine kurze Frage generell zum Import. Muss zwingen, auf dem Rechner, auf dem der Import ausgefĂĽhrt wird Excel installiert sein??
Oder kann man das umgehen??

Ich wollte den Excelimport alle 10 min automatisch ĂĽber den Objektaufrufplaner auf dem Server ausfĂĽhren und nicht unbedingt Excel auf dem Server installieren mĂĽssen.

Besten Dank schon mal
Roland
 
Beiträge: 60
Registriert: 18. April 2006 16:37
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 4.01;2009

Beitragvon Marc Teuber » 25. April 2006 12:19

Roland hat geschrieben:Eine kurze Frage generell zum Import. Muss zwingen, auf dem Rechner, auf dem der Import ausgefĂĽhrt wird Excel installiert sein??


Wenn du die Tabelle 370 fĂĽr den Import benutzt, muss Excel installiert sein.

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 Roland » 25. April 2006 12:56

das hab ich mir fast gedacht :cry:


Gruss Roland
Roland
 
Beiträge: 60
Registriert: 18. April 2006 16:37
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 4.01;2009


ZurĂĽck zu Microsoft Office

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron