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