18. September 2009 08:40
18. September 2009 09:54
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;18. September 2009 10:09
18. September 2009 10:24
18. September 2009 10:45
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
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
// 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;
18. September 2009 11:28
misterelektro1981 hat geschrieben:Hier gibt das sstem mir auch nichts aus, sondern nur die Artiklenummer und die Beschreibung 2? weas mache ich falsch???
18. September 2009 11:53
18. September 2009 12:15
Item.SETFILTER(Item."Gen. Prod. Posting Group",'%1','EB01..EB13');// Vorverarbeitung
IF Item.FINDSET THEN BEGIN
  REPEAT
    Fenster.UPDATE(1,Item."No.");
    SchreibeArtikel;
    SchreibeArtikelLieferant;
    SchreibeKreditor;
    // usw..   
  UNTIL Item.NEXT=0;
END;
18. September 2009 12:22
18. September 2009 12:46
18. September 2009 12:47
misterelektro1981 hat geschrieben:Den ganzen Aufwand muss ich betreiben, da es für eine andere Abteilung ist.
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?
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
Tabelle 1:Wert1 Wert2 Wert3 Tabelle2: Wert4 Wert5 Tabelle3: Wert6 Wert7
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.
18. September 2009 13:16
18. September 2009 13:35
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
18. September 2009 13:53
// 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
// 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;// 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;McClane hat geschrieben:Nur: ob die Werte nun zeilenweise getrennt hintereinander stehen oder in einer Zeile hintereinander stehen, ist recht wurscht
18. September 2009 14:03
mikka hat geschrieben:Bahnhof
Ich verstehe nur Bahnhof
18. September 2009 14:06
18. September 2009 14:13
misterelektro1981 hat geschrieben:Also so. Tabelle1:Wert1, Wert2 ... Tabelle2:Wert3,Wert4 Tabelle3:Wert5 usw...
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...
18. September 2009 14:26
18. September 2009 14:32
18. September 2009 14:38
18. September 2009 14:43
IF "Base Unit of Measure" <> '' THEN
  IF ItemUOM.GET("No.","Base Unit of Measure") THEN;
18. September 2009 14:58