[gelöst] DataPort mit mehreren Tabellen

18. September 2009 08:40

Hallo ich möchte gerne einen DataPort erstellen, der mir Daten aus verschiedenen Tabellen zieht. Die Struktur soll so aussehen.

Tabelle 1:
Wert1
Wert2
Wert3


Tabelle2:
Wert4
Wert5

Tabelle3:
Wert6
Wert7

Momentan habe ich es so gemacht, dass erst die Werte aus der Tabelle 1 in eine Zeile geschrieben werden, und das aber nicht sortiert. Diese würde ich auch gerne noch sortieren. Die Werte aus Tabelle 2 und 3 kommen dann nicht in die richtigen Spalten, sondern nach den Zeilen der Tabelle 1. Diese müste ich dann auch einsortiere. Wie mache ich das, das ich die Werte aus anderen Tabellen eine Position für die Spalte vergebe?
Zuletzt geändert von misterelektro1981 am 21. September 2009 11:49, insgesamt 1-mal geändert.

Re: DataPort mit mehreren Tabellen

18. September 2009 09:54

Da die ersten 3 Werte aus Tabelle1, dann 2 Werte aus Tabelle2 und dann 1 Wert aus Tabelle3 kommt, würde ich folgendes vorschlagen:

Die Daten vorverarbeiten und in einer Arbeitstabelle speichern (Temporär = Yes).
Die Ausgabge erfolgt dann über ein Integer DataItem.
1. Auf "Integer - OnPreDataItem()" würdest du die Daten entsprechend deiner Vorgaben aufbereiten und in der Arbeitsdatei speichern
2. Die Dataportfields belegst du mit Variablen (statt mit Feldern der Tabellen)
3. Das Integer-DataItem wird nach der Vorverarbeitung auf die Anzahl Datensätze, die in der Arbeitsdatei vorhanden sind gefiltert und mit FINDSET der erste DS geholt (siehe unten).
4. Mit Arbeitsdatei.FIND('>') gehst du zum nächsten DS und gibst diese über die Variablen aus.

Das wars im "Groben"

Code:
Globals
Name      DataType   Subtype   Length
Item      Record   Item   
Arbeitsdatei   Record   Item   
AnzahlDS      Integer      
ErsterDatensatz   Boolean      
Feld1      Code      20
Feld2      Text      30
Fenster      Dialog      

// Trigger - Integer - OnPreDataItem()
Fenster.OPEN('Artikel #1########',Item."No.");

// Vorverarbeitung
IF Item.FINDSET THEN BEGIN
  REPEAT
    Fenster.UPDATE(1,Item."No.");
    Arbeitsdatei.INIT;
    Arbeitsdatei."No." := Item."No.";
    Arbeitsdatei.Description := Item."Description 2";
    IF Arbeitsdatei.INSERT THEN;
  UNTIL Item.NEXT=0;
END;

Fenster.CLOSE;

IF NOT Arbeitsdatei.ISEMPTY THEN BEGIN
  AnzahlDS := Arbeitsdatei.COUNT;
  Integer.SETRANGE(Number,1,AnzahlDS);
END ELSE BEGIN
  Integer.SETRANGE(Number,0,-1);
  CurrDataport.BREAK
END;

IF Arbeitsdatei.FINDSET THEN;  // Zugriff auf den ersten DS in der Arbeitsdatei
ErsterDatensatz := TRUE;       // Steuerert die Ausgabe des ersten Datensatzes


// Trigger - Integer - OnAfterGetRecord()

IF Integer.Number > AnzahlDS THEN
  CurrDataport.BREAK;

IF ErsterDatensatz THEN BEGIN
  ErsterDatensatz := FALSE;
END ELSE BEGIN
  IF Arbeitsdatei.FIND('>') THEN;
END;END;


DIe Ausgabe über eine temporäre Tabelle ist zwar ein wenig komplexer, dafür sparst du dir allerdings eine Tabelle (die ja meistens "Mangelware" sind.
Wenn du sowieso eine Arbeitsdatei hast, kannst du auch diese (Temporär = Nein) beschreiben und als DataItem einfügen.
(Dann sollte allerdings der Report mit einem DELETEALL versehen um nicht einen Datensalat zu bekommen -->Oder mit einem zusätzlichen Feld "Benutzer", auf das gefiltert wird. So hat jeder User keinen Zugriff auf die Daten anderer Anwender)

Re: DataPort mit mehreren Tabellen

18. September 2009 10:09

Vielen dank für die Mühe. Leider habe ich da einige Probleme.

Ich habe jetzt ein DatItem Integer angelegt und dort den Quellcode wie beschrieben an die entsprechenden Stellen eingefügt. Dann habe ich mir 2 globale Variablen zum testen angelegt und diese in die DataPort Fields hinzugefügt.

Gehe ich jetzt auf RUN, so kommt die Meldung Sie ahben eine unbekannte Var. angegeben Item...

Ich weiß auch nocht genau wo ich Temporär=Yes sagen muss...

Globals
Name DataType Subtype Length
Item Record Item => das ist klar
Arbeitsdatei Record Item => ????
AnzahlDS Integer => ???
ErsterDatensatz Boolean =>???
Feld1 Code 20 =>???
Feld2 Text 30 =>???
Fenster Dialog =>???

Wo muss ich das alles machen?

Re: DataPort mit mehreren Tabellen

18. September 2009 10:24

Die ArbeitsDatei muss Temporär sein (in den Globals in die Properties gehen)!
Die Fehlermeldung "Sie haben eine unbekannte Variable.." sollte für sich selbst sprechen.

In der Anlage die FOB/Txt (evtl. interessiert es auch noch weitere)
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: DataPort mit mehreren Tabellen

18. September 2009 10:45

Danke, jetzt nähere ich mich wieder um einiges.

Jetzt ist es ja so, dass durch diesen momentanen DataPort nur die Felder NO. und Description2 exportiert werden.

Wenn ich jetzt aus der Tabelle Item Vendor z.B. Item No. haben möchte mache ich dann folgendes, oder?


Code:
Fenster.OPEN('Artikel #1########',Item."No.");
Fenster.OPEN('Artikel #1########',"Item Vendor"."Item No.");

// Vorverarbeitung
IF Item.FINDSET THEN BEGIN
  REPEAT
    Fenster.UPDATE(1,Item."No.");
    Fenster.UPDATE(1,"Item Vendor"."Item No.");

    Arbeitsdatei.INIT;
    Arbeitsdatei."No." := Item."No.";
    Arbeitsdatei.Description := Item."Description 2";
    Arbeitsdatei."Item No." := "Item Vendor"."Item No.";
    IF Arbeitsdatei.INSERT THEN;
  UNTIL Item.NEXT=0;
END;

Fenster.CLOSE;

IF NOT Arbeitsdatei.ISEMPTY THEN BEGIN
  AnzahlDS := Arbeitsdatei.COUNT;
  Integer.SETRANGE(Number,1,AnzahlDS);
END ELSE BEGIN
  Integer.SETRANGE(Number,0,-1);
  CurrDataport.BREAK
END;

IF Arbeitsdatei.FINDSET THEN;  // Zugriff auf den ersten DS in der Arbeitsdatei
ErsterDatensatz := TRUE;       // Steuerert die Ausgabe des ersten Datensatzes

Reicht das so, um Daten aus einer anderen tabelle zu bekommen? Das müsste ich dann nämlich für 5 Tabellen und etliche Werte machen...

Jetzt habe ich gerade auch versucht weiter Daten aus der Tabelle Item zu bekommen, als Beispiel Beschreibung.

Code:
Fenster.OPEN('Artikel #1########',Item."No.");

// Vorverarbeitung
IF Item.FINDSET THEN BEGIN
  REPEAT
    Fenster.UPDATE(1,Item."No.");
    Arbeitsdatei.INIT;
    Arbeitsdatei."No." := Item."No.";
    Arbeitsdatei."Description 2" := Item."Description 2";
    Arbeitsdatei.Description := Item.Description;
    //Arbeitsdatei.Width:= Item."Width mm";
    IF Arbeitsdatei.INSERT THEN;
  UNTIL Item.NEXT=0;
END;

Fenster.CLOSE;

IF NOT Arbeitsdatei.ISEMPTY THEN BEGIN
  AnzahlDS := Arbeitsdatei.COUNT;
  Integer.SETRANGE(Number,1,AnzahlDS);
END ELSE BEGIN
  Integer.SETRANGE(Number,0,-1);
  CurrDataport.BREAK
END;

IF Arbeitsdatei.FINDSET THEN;  // Zugriff auf den ersten DS in der Arbeitsdatei
ErsterDatensatz := TRUE;       // Steuerert die Ausgabe des ersten Datensatzes

Code:
// IF Integer.Number > AnzahlDS THEN
//  CurrDataport.BREAK;

IF ErsterDatensatz THEN
  ErsterDatensatz := FALSE
ELSE
  IF Arbeitsdatei.FIND('>') THEN;


// Felder zuweisen
Feld1 := Arbeitsdatei."No.";
Feld2 := Arbeitsdatei."Description 2";
//Feld3 := Arbeitsdatei.Width;
Feld4 := Arbeitsdatei.Description;


Hier gibt das sstem mir auch nichts aus, sondern nur die Artiklenummer und die Beschreibung 2? weas mache ich falsch???

Re: DataPort mit mehreren Tabellen

18. September 2009 11:28

Vorab eine bitte: Lege den Code immmer in [Code]-Tags ab, so kann dieser leicher gelesen werden. Ich habe dieses für dich gemacht.

Ich sehe keine Änderung ausser einen zweiten Dialog (der so nicht funktionieren dürfte)?!
Hast du den richtigen Code gepostet?

Ok, das hatte ich vorhin nicht richtig berücksichtigt -->Den Aufbau der Arbeitsdatei.
Zunächst währe zu Überlegen, was der geeignete Prim.Key für die Arbeitsdatei ist bzw. welche Felder werden eingefügt.

Beim füllen der Arbeitsdatei könntest du über alle Artikel gehen, den DS einfügen und in der gleichen Schleife die dazugehörigen Daten holen und jeweils in einer neuen Zeile einfügen.
Oder,
Erst die Arbeitsdatei mit allen Artikeln füllen, und danach mit weiteren Schleifen die zusätzlichen Daten "holen" und an der korrekten Stelle einfügen.
(Ich würde ersteres nehmen, dann könnte die Arbeitsdatei mit einer laufenden Nummer als Prim Key. sein (die nicht exportiert wird!))

**Nachtrag***
misterelektro1981 hat geschrieben:Hier gibt das sstem mir auch nichts aus, sondern nur die Artiklenummer und die Beschreibung 2? weas mache ich falsch???

Hast du die neuen Felder als Variable deklariert, Werte zugewiesen und in die DataportFields mit aufgenommen?

Re: DataPort mit mehreren Tabellen

18. September 2009 11:53

Ich hatte vergessen die DataPort Fields hinzuzufügen. Aus der Tabelle Item bekomme ich jetzt alles was ich möchte.
Jetzt gibt er mir ja alle Artikel aus, ich brauche aber nur die von den Produktgruppen EB01..EB13, geht das auch???
Wie bekomme ich denn jetzt Daten aus einer anderen Tabelle? Ich wolte noch Dtaen aus den Tabellen (falls dir das was bringt) Item Vendor, Vendor, Unit of Measure und Base Unit of Measure.

Diese Daten würde ich dann am liebsten, wenn es geht, in einer von mir festgelegten Reihenfolge festlegen. Wenn ich dann soweit bin geht es um das Feintuning.

Re: DataPort mit mehreren Tabellen

18. September 2009 12:15

Vor dem Item.FINDSET ein:
Code:
Item.SETFILTER(Item."Gen. Prod. Posting Group",'%1','EB01..EB13');


Um an die anderen Daten zu kommen, machst du nach dem Item.INSERT eine weitere Schleife z.B. Item Vendor.
Auch hier wieder ein INIT, Daten füllen und INSERT.

Ich würde hier nur Funktionsaufrufe hinschreiben, das macht den Code Übersichtlicher, z.B.:
Code:
// Vorverarbeitung
IF Item.FINDSET THEN BEGIN
  REPEAT
    Fenster.UPDATE(1,Item."No.");
    SchreibeArtikel;
    SchreibeArtikelLieferant;
    SchreibeKreditor;
    // usw..   
  UNTIL Item.NEXT=0;
END;


Das machst du mit allen Daten die du benötigst. Allerdings wirst du dir vermutlich eine andere Tabelle als Arbeitsdatei suchen müssen.
(Es sei den, du kannst es in der Tabelle Item abbilden?!)

Re: DataPort mit mehreren Tabellen

18. September 2009 12:22

Wieso eigentlich der ganze Aufwand? Vor dem Export eines Artikels kann man doch die restlichen Daten zusammen suchen, die Dataport Fields mit den Feldern der zweiten/dritten Tabelle belegen und schreibt einfach die Artikel am Stück durch. Und das Filtern auf bestimmte Artikel macht man am Start des Dataports.

Oder hab ich´s mal wieder falsch verstanden?

Re: DataPort mit mehreren Tabellen

18. September 2009 12:46

Den ganzen Aufwand muss ich betreiben, da es für eine andere Abteilung ist.

Also ich habe es mal um eine weitere Tabelle nach der Anleitung von mikka erweitert, siehe Bild. Beim ausführen kommt keine Fehlermeldung, sondern es läuft, läuft aber es passiert nichts.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: DataPort mit mehreren Tabellen

18. September 2009 12:47

misterelektro1981 hat geschrieben:Den ganzen Aufwand muss ich betreiben, da es für eine andere Abteilung ist.

Ich meinte den Aufwand mit neuer Tabelle, temporär aufbereiten usw.

Re: DataPort mit mehreren Tabellen

18. September 2009 13:01

McClane hat geschrieben:Wieso eigentlich der ganze Aufwand? Vor dem Export eines Artikels kann man doch die restlichen Daten zusammen suchen, die Dataport Fields mit den Feldern der zweiten/dritten Tabelle belegen und schreibt einfach die Artikel am Stück durch. Und das Filtern auf bestimmte Artikel macht man am Start des Dataports. Oder hab ich´s mal wieder falsch verstanden?


Wieso, das Layout der Datei soll so aussehen:
misterelektro1981 hat geschrieben:Hallo ich möchte gerne einen DataPort erstellen, der mir Daten aus verschiedenen Tabellen zieht. Die Struktur soll so aussehen.
Tabelle 1:
Wert1
Wert2
Wert3

Tabelle2:
Wert4
Wert5

Tabelle3:
Wert6
Wert7


Nicht so:
Tabelle 1:Wert1 Wert2 Wert3 Tabelle2: Wert4 Wert5 Tabelle3: Wert6 Wert7


Wenn ich dich recht verstanden habe, würde Deine Variante die Daten in einer Reihe ausgeben, aber nicht untereinander, oder?

@MisterElektro1981
Der Dataport reagiert nicht, wei der Aufruf zum REPEAT (von ItemVendor) mit einem UNTIL NEXT auf Item beendet wird.
Daher hört der Dataport nicht auf.

Die Anordnung unter der "Item-Schleife" ist ungünstig, da erst alle Artikel in die Tabelle kommen und dann alle ItemVendor. Da es bereits die Artikelnummer gibt, wird er nichts einfügen! (Beachte meinen Hinweiß zum Thema Arbeitsdatei planen!)
Wenn es die Tabelle Item sein soll, fülle die Arbeitsdatei im Feld "No." mit einer fortlaufenden Nr. und das Feld "No. 2" mit der Artikelnummer.
Beim Export brauchst du nur die "No.2" angeben in den Dataportfields.


**Edit by Mikka **
McClane hat geschrieben:
misterelektro1981 hat geschrieben:Den ganzen Aufwand muss ich betreiben, da es für eine andere Abteilung ist.

Ich meinte den Aufwand mit neuer Tabelle, temporär aufbereiten usw.

Hast du eine Alternative (man lernt ja nie aus :-) )

Re: DataPort mit mehreren Tabellen

18. September 2009 13:16

Vielen dank bis hier hin erstmla. Leider bin ich jetzt wieder, nachdem ich dachte es nachvollziehen zu können, ein wenig raus. Ich habe jetzt hin und her probiert im Code. Egal was ich mache es bleibt immer hängen.

So wie du es beschrieben hast sollen die Werte auch sprtiert werden, ich hatte mich falsch ausgedrückt.

Re: DataPort mit mehreren Tabellen

18. September 2009 13:35

@misterelektro,

ich gehe jetzt mal davon aus, das du doch die Werte aus Tabelle2 und Tabelle3 sich auf Tabelle1 beziehen, und du die Werte aus Tabelle 1,2 und 3 jeweils in einer Zeile ausgeben möchtest. Ich hab da mal ein einfaches Beispiel gemacht, das zu einem Artikel die Beschreibung der zugehörigen Artikelkategorie bzw. aus der "Item Vendor" die Kreditorenartikelnr. des Artikels holt und in einer Zeile ausgibt.

Gruß, Fiddi
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: DataPort mit mehreren Tabellen

18. September 2009 13:40

mikka hat geschrieben:Wieso, das Layout der Datei soll so aussehen:
misterelektro1981 hat geschrieben:
Hallo ich möchte gerne einen DataPort erstellen, der mir Daten aus verschiedenen Tabellen zieht. Die Struktur soll so aussehen.
Tabelle 1:
Wert1
Wert2
Wert3

Tabelle2:
Wert4
Wert5

Tabelle3:
Wert6
Wert7


Nicht so:
Tabelle 1:Wert1 Wert2 Wert3 Tabelle2: Wert4 Wert5 Tabelle3: Wert6 Wert7

Achso. Siehste, hab ich das wieder überlesen :roll:

Nur: ob die Werte nun zeilenweise getrennt hintereinander stehen oder in einer Zeile hintereinander stehen, ist recht wurscht :wink:

Re: DataPort mit mehreren Tabellen

18. September 2009 13:53

Sortiert, wie?

Der Code sollte ungefähr so aussehen:
(in Funktionen geht es leichter)
Code:
// Integer - OnPreDataItem()
Fenster.OPEN('Artikel #1########',Item."No.");
Lfd := 0;

// Vorverarbeitung
Item.SETCURRENTKEY("Gen. Prod. Posting Group");   // wg. der schnelleren Verarbeitung!
Item.SETFILTER(Item."Gen. Prod. Posting Group",'%1','EB01..EB13');
IF Item.FINDSET THEN BEGIN
  REPEAT
   Fenster.UPDATE(1,Item."No.");
    Lfd +=1;
    ArtikelEinfügen(Lfd,Item);
    Lfd +=1;
    ArtikelLieferantEinfügen(Lfd,Item);
    // KreditorEinfügen;     // nach welchen Kriterium werden ausgewählt-->Artikellieferant?
    // usw.
  UNTIL Item.NEXT=0;
END;
Fenster.CLOSE;

IF NOT Arbeitsdatei.ISEMPTY THEN BEGIN
  AnzahlDS := Arbeitsdatei.COUNT;
  Integer.SETRANGE(Number,1,AnzahlDS);
END ELSE BEGIN
  Integer.SETRANGE(Number,0,-1);
  CurrDataport.BREAK
END;

IF Arbeitsdatei.FINDSET THEN;  // Zugriff auf den ersten DS in der Arbeitsdatei
ErsterDatensatz := TRUE;       // Steuerert die Ausgabe des ersten Datensatzes


Code:
// ArtikelEinfügen(ParmLfd : Integer;ParmItem : Record Item)
//Parameters
// Var   Name   DataType   Subtype   Length
// Nein   ParmLfd   Integer      
// Nein   ParmItem   Record   Item   

Arbeitsdatei.INIT;
Arbeitsdatei."No." := FORMAT(ParmLfd);
Arbeitsdatei."No. 2" := ParmItem."No.";
Arbeitsdatei.Description := ParmItem.Description;
Arbeitsdatei."Gen. Prod. Posting Group" := ParmItem."Gen. Prod. Posting Group";
IF Arbeitsdatei.INSERT THEN;

Ich gehe mal davon aus, du willst alle Lieferanten zum Artikel?
Code:
// ArtikelLieferantEinfügen(ParmLfd : Integer;ParmItem : Record Item)
//Parameters
// Var   Name   DataType   Subtype   Length
// Nein   ParmLfd   Integer      
// Nein   ParmItem   Record   Item

// Variablen
// Name   DataType   Subtype   Length
// LItemVendorRecq   Record   Item Vendor   

LItemVendorRecq.SETRANGE(LItemVendorRecq."Item No.",ParmItem."No.");
IF LItemVendorRecq.FINDSET THEN BEGIN
  REPEAT
    // Ich weis nicht wo welche Felder hin sollen?
    Arbeitsdatei.INIT;
    Arbeitsdatei."No." := FORMAT(ParmLfd);
    Arbeitsdatei."No. 2" := LItemVendorRecq."Item No.";
    Arbeitsdatei."Vendor No." := LItemVendorRecq."Vendor No.";
    IF Arbeitsdatei.INSERT THEN;
  UNTIL LItemVendorRecq.NEXT=0;
END;


** Edit by Mikka**
McClane hat geschrieben:Nur: ob die Werte nun zeilenweise getrennt hintereinander stehen oder in einer Zeile hintereinander stehen, ist recht wurscht :wink:

Bahnhof :?:
Ich verstehe nur Bahnhof :-)
Der unterschied ist, das die Werte nicht in einer Zeile hintereinander stehen sollen (aus allen Tabellen),
sondern untereinander (Je Tabelle)

Bitte korrigiere uns MisterElektro1981, bevor wir uns hier verhaspeln.
(Nichts ist schlimmer als eine unklar definierte Aufgabe (da hatte ich gestern abend so einen Mistake (quasie aneinander vorbei))!

Re: DataPort mit mehreren Tabellen

18. September 2009 14:03

mikka hat geschrieben:Bahnhof
Ich verstehe nur Bahnhof

Ach sohoo, jetzt hab ich's. Ich dachte, du meinst das je Datensatz und nicht die gesamte Datei, die erstellt wird.

Re: DataPort mit mehreren Tabellen

18. September 2009 14:06

An fiddi.

Wieso geht das nur bei schon bereits angelegten Katalogartikeln. Lege ich mir einen neuen Artikle an und vergebe eine Kreditornr. sowie Kreditorartikelnr. so wird nichts davon übertragen.

An mikka.

Ich werde es einbauen, testen und ein feedback geben.

Die Dtaen aus den verschiedenen Tabellen sollen in eine Zeile geschrieben werde.

Also so. Tabelle1:Wert1, Wert2 ... Tabelle2:Wert3,Wert4 Tabelle3:Wert5 usw...

Re: DataPort mit mehreren Tabellen

18. September 2009 14:13

misterelektro1981 hat geschrieben:Also so. Tabelle1:Wert1, Wert2 ... Tabelle2:Wert3,Wert4 Tabelle3:Wert5 usw...

@Mikka: Ätsch :mrgreen:

Re: DataPort mit mehreren Tabellen

18. September 2009 14:15

misterelektro1981 hat geschrieben:An fiddi.
Wieso geht das nur bei schon bereits angelegten Katalogartikeln. Lege ich mir einen neuen Artikle an und vergebe eine Kreditornr. sowie Kreditorartikelnr. so wird nichts davon übertragen.

An mikka.

Ich werde es einbauen, testen und ein feedback geben.

Die Dtaen aus den verschiedenen Tabellen sollen in eine Zeile geschrieben werde.

Also so. Tabelle1:Wert1, Wert2 ... Tabelle2:Wert3,Wert4 Tabelle3:Wert5 usw...


Fidi?
Oh, ich habe den Beitrag nicht gesehen.

@MisterElektro1981
Bitte vergess alles was ich gerade geschrieben habe, Fidi hat es auf den Punkt gebracht. (MCClane, und du hattest auch recht)
Ich habe nur eine bitte an dich, nächstesmal Deine Frage präziser zu stellen. (ziemlich enttäuschend für mich, wenn ich hier einige Stunden helfe und alles für die "Katz" ist)

Re: DataPort mit mehreren Tabellen

18. September 2009 14:26

An fiddi.

Ich bin wohl zu blöd, ich bekomme es nicht hin. Wahrscheinlich hab eich mich jetzt so auf die Lösung von mikka, danke nochmals und sorry für das Missverständnis, vertieft, das ich das jetzt nicht mehr schnalle.

Wenn ich mir jetzt z.B. die Beschreibung aus der Tabelle Unit of measure mit ausgeben möchte, dann mache ich das doch so, doer?

neue gl.Var. => ItemUnit

neues DataPort Feld => ItemUnit.Description

in Code erweitern:
IF "Description" <> '' THEN
IF ItemUnit.GET(Description) THEN;

Oder???

Re: DataPort mit mehreren Tabellen

18. September 2009 14:32

@mikka,

manchmal ist Support die Kunst, das zu erahnen, was der Kunde sich gedacht hat, und nicht das was er gesagt hat. Man nennt das auch Erfahrung. :wink:

@markus,

wie du in den Dataport-Fields siehst, gebe ich nicht die Felder aus dem Artikelstamm aus, sondern aus der Artikellieferantentabelle ("Item Vendor"), da steht bei der Neuanlage eines Artikels noch nichts drin, du musst von Hand über Artikel/Einkauf/Lieferanten dort Werte eintragen.

Hinweis: Die Tabelle Katalogartikel und Artikel sind in NAV zwei völlig unterschiedliche Tabellen, direkt nichts miteinander zu tun haben. Bitte versuche die Objekte aus NAV so zu bezeichnen, wie NAV sie selbst bezeichnet (sei es auf deutsch oder Englisch), dann verstehen dich die Leute hier im Forum besser.


Gruß, Fiddi

Re: DataPort mit mehreren Tabellen

18. September 2009 14:38

Ich kenne diesen Weg über Artikel/Einkauf/Lieferanten. Das ist bgei uns ja auch so gepflegt worden. Nur wird nichts ausgedruckt, sondern nur für die Artikel die Katalogartikel sind.
Wenn ich mir jetzt einen neuen Artikel anlege undPflege die Kreditornnr. und Kred.-Artikelnr. so wedren diese auch nicht exportiert.

Bitte beschreib mir doch kurz wie es ichmachen soll, wenn ich die Beschreibung aus der Table Unit og measure pro Artikel haben möchte.

Re: DataPort mit mehreren Tabellen

18. September 2009 14:43

Hallo Markus,

Du musst für den GET- Befehl immer die Felder des Primärschlüssels der Tabelle verwenden, auf die du den GET machst.
Meistens besteht ein Schlüssel in solchen Fällen aus dem Primärschlüssel des Hauptrecords (bei Artikel ist das das Feld "No." und nicht "Description") und dem Code- Feld über das der Lookup läuft. Bei "Item Unit of Measure" würde der GET z.B. mit ItemUOM.GET("No.","Base Unit of Measure") funktionieren.


Code:
IF "Base Unit of Measure" <> '' THEN
  IF ItemUOM.GET("No.","Base Unit of Measure") THEN;

Edit: Übrigens solltest du den Clear(ItemUOM) nicht vergessen, sonst bekommst du Müll ausgegeben, wenn du mal einen Artikel hast ohne hinterlegte Einheit :!:

Gruß, Fiddi

Re: DataPort mit mehreren Tabellen

18. September 2009 14:58

Also ich bin wirklich sehr dankbar für die Hilfe,

Mein Code:

CLEAR(ItemCat);
CLEAR(ItemVend);
Clear(ItemUnit);
IF "Item Category Code" <> '' THEN
IF ItemCat.GET("Item Category Code") THEN;
IF "Vendor No." <> '' THEN
IF ItemVend.GET("Vendor No.","No.",'') THEN;
IF "Base Unit of Measure" <> '' THEN
IF ItemUnit.GET("No.","Base Unit of Measure") THEN;

gl.Var. => ItemUnit

DataPOrt Feld => ItemUnit.Description

Was ist hier falsch???
Zuletzt geändert von misterelektro1981 am 18. September 2009 15:11, insgesamt 1-mal geändert.