16. Juli 2009 10:13
16. Juli 2009 10:37
16. Juli 2009 10:45
16. Juli 2009 14:17
{Variablen
Name           DataType   Subtype           Length
SL               Record       Stückliste   
Verkaufszeile   Record       Verkaufszeile   
SLR               Report       Stückliste
}
      
Verkaufszeile.RESET;
Verkaufszeile.SETFILTER(Verkaufszeile.Belegart,'Rechnung');
Verkaufszeile.SETFILTER(Verkaufszeile."Belegnr.","Nr.");
IF Verkaufszeile.FINDSET THEN BEGIN
    SL.RESET;
    SL.SETCURRENTKEY(Artikel);
    REPEAT
        IF Verkaufszeile."Nr."<>'' THEN BEGIN              
            SL.Artikel:=Verkaufszeile."Nr.";
            //IF
             SL.FIND('=');
            //THEN MESSAGE('Artikel: %1 gefunden',SL.Artikel);
            SL.MARK(TRUE);
        END;
    UNTIL Verkaufszeile.NEXT=0;
END;
 
SL.MARKEDONLY(TRUE);
SLR.SETTABLEVIEW(SL);
SLR.RUN;16. Juli 2009 14:29
// Rec = Sales Header
// Item = Record, Subtype Item
Verkaufszeile.RESET;
// Filtere auf alle VK-Zeilen des Beleges mit gefüllter Artikelnummer
Verkaufszeile.SETTRANGE("Document Type",Rec."Document Type");
Verkaufszeile.SETRANGE("Document No.",Rec."No.");
Verkaufszeile.SETRANGE(Type, Verkaufszeile.Type::Item);
Verkaufszeile.SETFILTER("No.", '<>%1', '');
IF Verkaufszeile.FINDSET THEN BEGIN
  REPEAT
    Item.GET(Verkaufszeile."No."); // hole Artikel
    Item.MARK(TRUE);                   // markiere Artikel
  UNTIL Verkaufszeile.NEXT=0;
END;
Item.MARKEDONLY(TRUE); // filtere auf markierte Artikel
SLR.SETTABLEVIEW(Item);
SLR.RUN;16. Juli 2009 14:35
Steffen hat geschrieben:@McClane, bei einer Rechnung mit mehreren Artikeln, kann ich doch niemandem zumuten, dass er sich noch für jeden Artikel ein Blatt bzw. einen Report dazu holt, das wird zu viel.
 
 16. Juli 2009 14:39
McClane hat geschrieben:Aber Natalies Lösung ist eh besser.
16. Juli 2009 15:00
Natalie hat geschrieben:Wenn MARKEDONLY + SETTABLEVIEW überhaupt funktionieren sollte. Geht vielleicht genauso wenig wie zusammen mit Temporären Records ...
 
			
		16. Juli 2009 15:10
SL.RESET; //hat der nicht sonst noch die Marks einer vorigen Abfrage drin?
Verkaufsrechnungszeile.RESET;
Verkaufsrechnungszeile.SETRANGE(Verkaufsrechnungszeile."Belegnr.","Nr.");
//Verkaufsrechnungszeile.SETRANGE(Type, Verkaufsrechnungszeile.Type::SL); //was soll der hier machen?
Verkaufsrechnungszeile.SETFILTER("Nr.",'<>%1','');
IF Verkaufsrechnungszeile.FINDSET THEN BEGIN
    
    REPEAT
            SL.GET(Verkaufsrechnungszeile."Nr.") 
            SL.MARK(TRUE);
            //SL.SETCURRENTKEY(Artikel); 
            //SL.Artikel:=Verkaufsrechnungszeile."Nr.";
            //SL.FIND('=');
            //SL.MARK(TRUE);
        
    UNTIL Verkaufsrechnungszeile.NEXT=0;
END;
SL.MARKEDONLY(TRUE);
SLR.SETTABLEVIEW(SL);
SLR.RUN;16. Juli 2009 15:20

SL.RESET; //hat der nicht sonst noch die Marks einer vorigen Abfrage drin? -> wenn SL global angelegt ist: könnte theoretisch vorkommen! Würd ich sowieso lokal anlegen
Verkaufsrechnungszeile.RESET;
Verkaufsrechnungszeile.SETRANGE("Document No.","No.");
Verkaufsrechnungszeile.SETRANGE(Type, Verkaufsrechnungszeile.Type::Item); //was soll der hier machen? -> auf Zeilen der Art Artikel filtern - Item hat hier nichts mit dem RECORD Item zu tun, es ist ein sog. OptionName!
Verkaufsrechnungszeile.SETFILTER("No.",'<>%1','');
IF Verkaufsrechnungszeile.FINDSET THEN BEGIN
    
    REPEAT
            SL.GET(Verkaufsrechnungszeile."Nr.") 
            SL.MARK(TRUE);
            // Benutze nun eine Tabelle/Feld, in der du die Verknüpfung Artikel -> Rohartikel ablesen kannst
            // Da ich diese Verknüpfung nicht kenne, setze ich "Rohartikelnr" als gegeben an:
            IF Rohartikelvorhanden THEN BEGIN
              SL.GET(Rohartikelnr);
              SL.MARK(TRUE);        
            END;
    UNTIL Verkaufsrechnungszeile.NEXT=0;
END;
SL.MARKEDONLY(TRUE);
SLR.SETTABLEVIEW(SL);
SLR.RUN;16. Juli 2009 16:00

Verkaufsrechnungszeile.RESET;
Verkaufsrechnungszeile.SETRANGE("Belegnr.","Nr.");
Verkaufsrechnungszeile.SETRANGE(Art, Verkaufsrechnungszeile.Art::Artikel); 
Verkaufsrechnungszeile.SETFILTER("No.",'<>%1','');
IF Verkaufsrechnungszeile.FINDSET THEN BEGIN
    
    REPEAT
            SL.GET(Verkaufsrechnungszeile."Nr.")  //das klappt nicht, vermutlich weil er eine Artikelnummer und zusätzlich die Zeilennummer haben möchte
            SL.MARK(TRUE);
            // Benutze nun eine Tabelle/Feld, in der du die Verknüpfung Artikel -> Rohartikel ablesen kannst 
            //das ist ja die Tabelle SL, in dieser sind die Rohartikel, diese kennzeichnen sich durch die erste 
            //Spalte (der Artikel) und einer fortlaufenden Zeilennummer in der zweiten Spalte, die Rohartikel
            //haben eine eigene Artikelnr., diese hat aber nichts mit dem primary Key zu tun.
            //als Beispiel hat der Artikel 3033-035-77-10 
            //den  Rohartikel 3033-035-77-10 Zeilennr. 45223 und  3033-035-77-10 Zeilennr. 45224,  
            //diese haben dann verschiedene Eigenschaften
            // Da ich diese Verknüpfung nicht kenne, setze ich "Rohartikelnr" als gegeben an:
            IF Rohartikelvorhanden THEN BEGIN
              SL.GET(Rohartikelnr);
              SL.MARK(TRUE);        
            END;
    UNTIL Verkaufsrechnungszeile.NEXT=0;
END;
SL.MARKEDONLY(TRUE);
SLR.SETTABLEVIEW(SL);
SLR.RUN;16. Juli 2009 20:23
17. Juli 2009 08:24

  
            SL.SETCURRENTKEY(Artikel); 
            SL.Artikel:=Verkaufsrechnungszeile."Nr.";
            SL.FIND('=');
            SL.MARK(TRUE);
17. Juli 2009 08:41
Steffen hat geschrieben:Also in der ersten Spalte steht die Artikelnr. und in der Zweiten steht eine fortlaufende Zeilennr. gemeinsam ergibt das den Primarykey.
17. Juli 2009 08:49
17. Juli 2009 08:53

17. Juli 2009 08:53
// Anstatt
{SL.SETCURRENTKEY(Artikel); 
SL.Artikel:=Verkaufsrechnungszeile."Nr.";
SL.FIND('=');
SL.MARK(TRUE);}
// so
SL.SETCURRENTKEY(Artikel); 
SL.SetRange(Artikel,Verkaufsrechnungszeile."Nr.");
if SL.FIND('-')then
  repeat
     SL.MARK(TRUE);
  until SL.next=0;
17. Juli 2009 09:00
 Report ID 50006
 Report ID 5000617. Juli 2009 09:05
Natalie hat geschrieben:Oder noch besser: Wie lautet die Report-ID?
 
			
		17. Juli 2009 09:06
Steffen hat geschrieben:Die Stuckliste existiert nicht.
Identifizierende Felder und Werte:
Artikel='3033-035-77-10',Zeilennr.='0'
17. Juli 2009 09:08
McClane hat geschrieben:Natalie hat geschrieben:Oder noch besser: Wie lautet die Report-ID?
Ob das nun wirklich besser war ....
 
			
		17. Juli 2009 09:11
Verkaufsrechnungszeile.RESET;
Verkaufsrechnungszeile.SETRANGE("Belegnr.","Nr.");
Verkaufsrechnungszeile.SETRANGE(Art, Verkaufsrechnungszeile.Art::Artikel);
Verkaufsrechnungszeile.SETFILTER("Nr.",'<>%1','');
IF Verkaufsrechnungszeile.FINDSET THEN BEGIN
    
    REPEAT
            SL.SETCURRENTKEY(Artikel);
            SL.GET(Verkaufsrechnungszeile."Nr.");  // Hier ist der Break on Error
            IF SL.FIND('-') THEN BEGIN
                REPEAT
                    SL.MARK(TRUE);
                UNTIL SL.NEXT=0;
            END;
    UNTIL Verkaufsrechnungszeile.NEXT=0;
END;
SL.MARKEDONLY(TRUE);
SLR.SETTABLEVIEW(SL);
SLR.RUN;17. Juli 2009 09:19
17. Juli 2009 09:20
SL.GET(Verkaufsrechnungszeile."Nr."); SL.SETRANGE(Artikel,Verkaufsrechnungszeile."Nr.");17. Juli 2009 09:23