[Gelöst] Erste Zeile einer csv ignorieren

Bild Microsoft Dynamics NAV 3.xx
(ehem. Navision Attain)

[Gelöst] Erste Zeile einer csv ignorieren

Beitragvon winkelsbr » 27. Februar 2009 11:28

Hallo,

ich möchte über einen Dataport eine csv-Datei importieren.
In der Datei steht in der ersten Zeile die Feldbezeichnung.
Gibt es die möglichkeit, dass beim Import die erste Zeile ignoriert wird?

Merci
Zuletzt geändert von winkelsbr am 27. Februar 2009 15:19, insgesamt 1-mal geändert.
Grüße aus dem schönen Saarland
Wolfgang
Benutzeravatar
winkelsbr
 
Beiträge: 98
Registriert: 22. Januar 2008 17:11
Wohnort: Saarland
Realer Name: Wolfgang
Arbeitsort: Saarland
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.6, 3.6

Re: Erste Zeile einer csv ignorieren

Beitragvon McClane » 27. Februar 2009 11:56

Geht im OnBeforeImportRecord oder OnAfterImportRecord sowas wie
Code: Alles auswählen
If not FirstLineRead then
  begin
    FirstLine:=true;
    CurrDataport.Skip;
  end;
?

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.
McClane
Moderator
Moderator
 
Beiträge: 3864
Registriert: 2. April 2008 10:00
Realer Name: Stefan
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2009, 2016

Re: Erste Zeile einer csv ignorieren

Beitragvon Sebastian Pfliegel » 27. Februar 2009 12:05

Also, wenn es möglich ist, mache ich es so: Wenn der Primärschlüssel übergeben wird, und nur ein Modify passiert und kein Insert, dann prüfe ich ob ich den Satz bekomme oder nicht. Wenn nicht dann SKIP.

Wenn du aber Sätze neu anlegen willst, funktioniert das Ganze nicht. Was du auch machen könntest: Die Feldnamen sind wahrscheinlich Text und der Primärschlüssel Numerisch. Das überprüfen ist oft sinnvoll.

Wenn du wirklich NUR die erste Zeile ĂĽberspringen willst:
Eine boolsche Variable auf True setzen. FĂĽr jede Zeile prĂĽfen, ob True. Wenn True, dann auf False setzen und dann einen SKIP. Mehr ist es nicht.

EDIT: Schon wieder zu langsam. Das kommt davon, wenn man kurrzeitig von seinem Platz geht :P
Sebastian Pfliegel
 
Beiträge: 792
Registriert: 25. Februar 2008 12:59
Realer Name: Sebastian
Arbeitsort: Schwabach
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 4.0

Re: Erste Zeile einer csv ignorieren

Beitragvon winkelsbr » 27. Februar 2009 12:31

Hallo McClane,
unter NAV 3.6 kann ich die beiden Variablen (FirstLineRead;FirstLine) nicht finden!

@Sebastian
Denn eigentlichen Aufbau der csv-Datei kann ich nicht beeinflussen! Es findet ein INSERT statt.
Das erste Feld ist vom Typ Integer (gleichzeitig PK), wobei in der csv-Datei der Text "laufende Nummer" enthält.
Jetzt weiĂź ich nicht, wie ich das Abfragen soll.
Grüße aus dem schönen Saarland
Wolfgang
Benutzeravatar
winkelsbr
 
Beiträge: 98
Registriert: 22. Januar 2008 17:11
Wohnort: Saarland
Realer Name: Wolfgang
Arbeitsort: Saarland
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.6, 3.6

Re: Erste Zeile einer csv ignorieren

Beitragvon McClane » 27. Februar 2009 12:52

Hab mich ja auch vertippt :wink:
Code: Alles auswählen
If not FirstLineRead then
  begin
    FirstLineRead:=true;
    CurrDataport.Skip;
  end;

FirstLineRead musst du als bool-Variable anlegen.

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.
McClane
Moderator
Moderator
 
Beiträge: 3864
Registriert: 2. April 2008 10:00
Realer Name: Stefan
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2009, 2016

Re: Erste Zeile einer csv ignorieren

Beitragvon winkelsbr » 27. Februar 2009 13:00

Hallo McClane,

ich habe den Code jetzt in den Trigger "OnBeforeImportRecord()" geschrieben.
Er bringt mir aber gleich eine Fehlermeldung, da das erste Feld in der Tabelle vom Typ Integer ist, jedoch die csv-Datei eine Feld vom Typ Text enthält.
Grüße aus dem schönen Saarland
Wolfgang
Benutzeravatar
winkelsbr
 
Beiträge: 98
Registriert: 22. Januar 2008 17:11
Wohnort: Saarland
Realer Name: Wolfgang
Arbeitsort: Saarland
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.6, 3.6

Re: Erste Zeile einer csv ignorieren

Beitragvon McClane » 27. Februar 2009 13:18

winkelsbr hat geschrieben:ich habe den Code jetzt in den Trigger "OnBeforeImportRecord()" geschrieben.
Er bringt mir aber gleich eine Fehlermeldung, da das erste Feld in der Tabelle vom Typ Integer ist, jedoch die csv-Datei eine Feld vom Typ Text enthält.

Mist. Ich hatte gehofft, das klappt :-(

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.
McClane
Moderator
Moderator
 
Beiträge: 3864
Registriert: 2. April 2008 10:00
Realer Name: Stefan
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2009, 2016

Re: Erste Zeile einer csv ignorieren

Beitragvon winkelsbr » 27. Februar 2009 13:40

Hallo McClane,

trotzdem Danke. Vielleicht fällt mir ja noch was ein.
Grüße aus dem schönen Saarland
Wolfgang
Benutzeravatar
winkelsbr
 
Beiträge: 98
Registriert: 22. Januar 2008 17:11
Wohnort: Saarland
Realer Name: Wolfgang
Arbeitsort: Saarland
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.6, 3.6

Re: Erste Zeile einer csv ignorieren

Beitragvon Sebastian Pfliegel » 27. Februar 2009 14:00

Du sollst auch nicht die CSV bearbeiten.
Machs doch so: Hau AutoUpdate und AutoSave als Property raus.
Nimm statt den Felder in der Tabelle Text-Variablen. Für jede Zeile überprüfst du den Satz auf bestimmte Merkmale. Zum Beispiel darf das Primärfeld nur Integer sein (überprüf das mit EVALUATE). Ist der Satz nicht korrekt: SKIP. Jetzt dann halt alle Felder füllen. Aufpassen: INSERT, INIT und Modifies müssen selbst programmiert werden!
Sebastian Pfliegel
 
Beiträge: 792
Registriert: 25. Februar 2008 12:59
Realer Name: Sebastian
Arbeitsort: Schwabach
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 4.0

Re: Erste Zeile einer csv ignorieren

Beitragvon winkelsbr » 27. Februar 2009 14:29

Hallo Sebastian,

jetzt stehe ich aber auf dem Schlauch!
Sebastian Pfliegel hat geschrieben:Hau AutoUpdate und AutoSave als Property raus.

was meinst Du damit? Wo kann ich das als Property raushauen?

Sebastian Pfliegel hat geschrieben:Zum Beispiel darf das Primärfeld nur Integer sein (überprüf das mit EVALUATE)

Ich habe im Trigger folgendendes geschrieben:
Code: Alles auswählen
IF EVALUATE(Tabelle."Lfd-Nr",'Laufende Nummer') THEN
   CurrDataport.SKIP;

Der Text "Laufende Nummer" steht in der ersten Zeile an erster Stelle. Er bringt mir trotzdem noch die Fehlermeldung.
Grüße aus dem schönen Saarland
Wolfgang
Benutzeravatar
winkelsbr
 
Beiträge: 98
Registriert: 22. Januar 2008 17:11
Wohnort: Saarland
Realer Name: Wolfgang
Arbeitsort: Saarland
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.6, 3.6

Re: Erste Zeile einer csv ignorieren

Beitragvon Natalie » 27. Februar 2009 14:30

winkelsbr hat geschrieben:Gibt es die möglichkeit, dass beim Import die erste Zeile ignoriert wird?

http://www.navision24.de/trickkiste/dat ... ingen.html
GruĂź, Natalie

Frage beantwortet oder Problem von allein gelöst? 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
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Erste Zeile einer csv ignorieren

Beitragvon winkelsbr » 27. Februar 2009 15:02

Hallo Natalie,

wie immer die Rettung!

Schönes Wochenende Euch allen.
Grüße aus dem schönen Saarland
Wolfgang
Benutzeravatar
winkelsbr
 
Beiträge: 98
Registriert: 22. Januar 2008 17:11
Wohnort: Saarland
Realer Name: Wolfgang
Arbeitsort: Saarland
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.6, 3.6

Erste Zeile einer csv ignorieren - Fehler "Datei nicht geöff

Beitragvon leerwiese » 9. September 2009 13:18

Hallo!

Ich wollte das dann auch mal versuchen.
Leider bekomme ich beim import dann folgende Fehlermeldung:
nicht geöffnet.JPG
nicht geöffnet.JPG (5.67 KiB) 1176-mal betrachtet

Bitte beachtet:
Ich bin in Sachen Programmierung noch ein absoluter DUMMIE!

Deswegen hier mein kompletter Quelltext:
Code: Alles auswählen
OBJECT Dataport 50032 Stockkeeping Unit  SS Quantity
{
  OBJECT-PROPERTIES
  {
    Date=09.09.09;
    Time=12:15:03;
    Modified=Yes;
    Version List=PA008;
  }
  PROPERTIES
  {
    CaptionML=[DEU=Lagerhaltungsdaten SB/Meldebestand;
               ENU=Stockkeeping Unit SS Quantity];
    FieldStartDelimiter=<None>;
    FieldEndDelimiter=<None>;
    FieldSeparator=[;];
    RecordSeparator=<NewLine>;
    DataItemSeparator=<NewLine>;
    OnPreDataport=BEGIN
                    IF CurrDataport.IMPORT THEN BEGIN
                      LineCount:=1;
                      REPEAT
                        CurrFile.READ(Character);
                        IF Character=10 THEN
                          LineCount:=LineCount-1;
                      UNTIL LineCount=0;
                    END;
                  END;

  }
  DATAITEMS
  {
    { PROPERTIES
      {
        DataItemTable=Table2000000026;
        DataItemTableView=SORTING(Number)
                          WHERE(Number=CONST(1));
      }
      FIELDS
      {
        {      ;     ;''                  ;Format=Artikelnr. }
        {      ;     ;''                  ;Format=Loagerortcode }
        {      ;     ;''                  ;Format=Sicherheitsbestand }
        {      ;     ;''                  ;Format=Bestellzyklus }
        {      ;     ;''                  ;Format=Beschaffungszeit }
      }
       }
    { PROPERTIES
      {
        DataItemTable=Table5700;
        DataItemVarName=Lagerhaltungsdaten;
        ReqFilterFields=Location Code;
      }
      FIELDS
      {
        {      ;     ;"Item No."           }
        {      ;     ;"Location Code"      }
        {      ;     ;"Safety Stock Quantity" }
        {      ;     ;"Reorder Cycle"      }
        {      ;     ;"Lead Time Calculation" }
      }
       }
  }
  REQUESTFORM
  {
    PROPERTIES
    {
      Width=9020;
      Height=3410;
    }
    CONTROLS
    {
    }
  }
  CODE
  {
    VAR
      GM@1140000 : Codeunit 11501;
      Character@1140002 : Char;
      LineCount@1140001 : Integer;

Was sagt ihr dazu?

GruĂź
Heike
leerwiese
 
Beiträge: 9
Registriert: 9. September 2009 12:28
Realer Name: Heike Hohlfeld
Arbeitsort: Friedrichsdorf
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 5.0

Re: [Gelöst] Erste Zeile einer csv ignorieren

Beitragvon Natalie » 9. September 2009 13:27

Dieser Quelltext

Code: Alles auswählen
IF CurrDataport.IMPORT THEN BEGIN
  LineCount:=1;
  REPEAT
    CurrFile.READ(Character);
    IF Character=10 THEN
      LineCount:=LineCount-1;
  UNTIL LineCount=0;
END;


gehört in einen anderen Trigger. OnPreDataItem. In OnPreDataport ist die zu lesende Datei noch gar nicht vom Dataport geöffnet worden.
GruĂź, Natalie

Frage beantwortet oder Problem von allein gelöst? 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
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: [Gelöst] Erste Zeile einer csv ignorieren

Beitragvon Sebastian Pfliegel » 9. September 2009 13:31

Da dein Code (Objektexport) nicht vollständig ist, kann ich nur mutmaßen, dass du in den falschen Trigger geschrieben hast? Du musst in den OnPreDataItem schreiben. Im OnInitReport wäre es zu früh, dort ist die Datei nämlich noch gar nicht geöffnet.

[EDIT:] Natalie war mal wieder schneller ...
Sebastian Pfliegel
 
Beiträge: 792
Registriert: 25. Februar 2008 12:59
Realer Name: Sebastian
Arbeitsort: Schwabach
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 4.0


ZurĂĽck zu NAV 3.xx

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast