13. August 2008 15:26
REPEAT
INTCount := 1;
INTLängebisZeichenumbruch:=40;
INTPositiondesAnfang:=1;
TXTTabellenFeld:="Sales Shipment Line".Description;
IF STRLEN(TXTTabellenFeld) > INTLängebisZeichenumbruch THEN
  BEGIN
    REPEAT
    INTPositiondesAnfang := INTPositiondesAnfang + INTLängebisZeichenumbruch;
    TXTRestString:=COPYSTR(TXTTabellenFeld,INTPositiondesAnfang,INTLängebisZeichenumbruch);
 
      "Sales Shipment Line".INIT;
      "Sales Shipment Line"."Document No." := "Sales Shipment Line"."Document No.";
      "Sales Shipment Line"."Line No.":="Sales Shipment Line"."Line No." + INTCount;
      "Sales Shipment Line".Description:=TXTRestString;
      "Sales Shipment Line".INSERT;
      INTCount := INTCount + 1;
    INTLaengeRestString:=  STRLEN(TXTRestString);
    UNTIL INTLaengeRestString < INTLängebisZeichenumbruch
  END;
UNTIL "Sales Shipment Line".NEXT = 0;
13. August 2008 16:01
Marco.Zimmermann hat geschrieben:Wie kann ich den Report so programmieren, dass er nur temporär die Daten hält und nichts in die Tabelle schreibt???
14. August 2008 08:48
Sales Shipment Header   <Sales Shipment Header>
  Integer                           CopyLoop
    Integer                           PageLoop
      Integer                       DimensionLoop1
      Sales Shipment Line   <Sales Shipment Line>
        Integer                   DimensionLoop2
      Integer                   Total
      Integer                   Total2
14. August 2008 09:33
SORTING(Number) WHERE(Number=FILTER(1..))IF Number = 1 THEN BEGIN
  IF NOT TempRec.FIND('-') THEN
    CurrReport.BREAK;
END ELSE
  IF TempRec.NEXT = 0 THEN
    CurrReport.BREAK;14. August 2008 10:38
IF Number = 1 THEN BEGIN
  IF NOT RecTempSalesShipmentLine.FIND('-') THEN
    CurrReport.BREAK;             <-------------Stelle wo er aussteigt!!!!!
END ELSE
  IF RecTempSalesShipmentLine.NEXT = 0 THEN
    CurrReport.BREAK;
14. August 2008 11:35
14. August 2008 12:05
IF Number = 1 THEN BEGIN
  IF NOT RecTempSalesShipmentLine.FIND('-') THEN
    CurrReport.BREAK;
END ELSE
  IF RecTempSalesShipmentLine.NEXT = 0 THEN
    CurrReport.BREAK;
IF NOT ShowCorrectionLines AND RecTempSalesShipmentLine.Correction THEN
  CurrReport.SKIP;
PostedDocDim2.SETRANGE("Table ID",DATABASE::"Sales Shipment Line");
PostedDocDim2.SETRANGE("Document No.",RecTempSalesShipmentLine."Document No.");
PostedDocDim2.SETRANGE("Line No.",RecTempSalesShipmentLine."Line No.");
RecTempSalesShipmentLine.SETRANGE("Document No.",RecTempSalesShipmentLine."Document No.");
RecTempSalesShipmentLine.FIND('-');
REPEAT
INTCount := 1;
INTLängebisZeichenumbruch:=29;
INTPositiondesAnfang:=1;
TXTTabellenFeld:=RecTempSalesShipmentLine.Description;
IF STRLEN(TXTTabellenFeld) > INTLängebisZeichenumbruch THEN
  BEGIN
    REPEAT
    INTPositiondesAnfang := INTPositiondesAnfang + INTLängebisZeichenumbruch;
    TXTRestString:=COPYSTR(TXTTabellenFeld,INTPositiondesAnfang,INTLängebisZeichenumbruch);
 
      RecTempSalesShipmentLine.INIT;
      RecTempSalesShipmentLine."Document No." := RecTempSalesShipmentLine."Document No.";
      RecTempSalesShipmentLine."Line No.":=RecTempSalesShipmentLine."Line No." + INTCount;
      RecTempSalesShipmentLine.Description:=TXTRestString;
      RecTempSalesShipmentLine.INSERT;
      INTCount := INTCount + 1;
    INTLaengeRestString:=  STRLEN(TXTRestString);
    UNTIL INTLaengeRestString < INTLängebisZeichenumbruch
  END;
UNTIL RecTempSalesShipmentLine.NEXT = 0;
14. August 2008 12:11
Marco.Zimmermann hat geschrieben:Mein OnAfterGetRecord im Neuen DataItem <Integer> früher "Sales Shipment Line" sieht wie folgt aus
14. August 2008 12:35
IF NOT ShowCorrectionLines AND RecTempSalesShipmentLine.Correction THEN
14. August 2008 12:55
14. August 2008 13:20
14. August 2008 14:20
14. August 2008 14:40
Marco.Zimmermann hat geschrieben:Die Daten werden doch über die Angabe in den Globalen Variablen gefüllt???? Oder nicht
"Sales Shipment Line".INIT;
"Sales Shipment Line"."Document No." := "Sales Shipment Line"."Document No.";
"Sales Shipment Line"."Line No.":="Sales Shipment Line"."Line No." + INTCount;
"Sales Shipment Line".Description:=TXTRestString;
"Sales Shipment Line".INSERT;14. August 2008 14:51
IF Number = 1 THEN BEGIN
  IF NOT RecTempSalesShipmentLine.FIND('-') THEN
    CurrReport.BREAK;
END ELSE
  IF RecTempSalesShipmentLine.NEXT = 0 THEN
    CurrReport.BREAK;
14. August 2008 15:04
14. August 2008 15:39
IF Number = 1 THEN BEGIN
  IF NOT RecTempSalesShipmentLine.FIND('-') THEN
    CurrReport.BREAK;
END ELSE
  IF RecTempSalesShipmentLine.NEXT = 0 THEN
    CurrReport.BREAK;
RecTempSalesShipmentLine.SETRANGE("Document No.","Sales Shipment Header"."No.");
RecTempSalesShipmentLine.FIND('-');
REPEAT
INTCount := 1;
INTLängebisZeichenumbruch:=29;
INTPositiondesAnfang:=1;
TXTTabellenFeld:=RecTempSalesShipmentLine.Description;
IF STRLEN(TXTTabellenFeld) > INTLängebisZeichenumbruch THEN
  BEGIN
    REPEAT
    INTPositiondesAnfang := INTPositiondesAnfang + INTLängebisZeichenumbruch;
    TXTRestString:=COPYSTR(TXTTabellenFeld,INTPositiondesAnfang,INTLängebisZeichenumbruch);
 
      RecTempSalesShipmentLine.INIT;
      RecTempSalesShipmentLine."Document No." := RecTempSalesShipmentLine."Document No.";
      RecTempSalesShipmentLine."Line No.":=RecTempSalesShipmentLine."Line No." + INTCount;
      RecTempSalesShipmentLine.Description:=TXTRestString;
      RecTempSalesShipmentLine.INSERT;
      INTCount := INTCount + 1;
    INTLaengeRestString:=  STRLEN(TXTRestString);
    UNTIL INTLaengeRestString < INTLängebisZeichenumbruch
  END;
UNTIL RecTempSalesShipmentLine.NEXT = 0;
14. August 2008 15:54
Marco.Zimmermann hat geschrieben:Ich bin da jetzt mit meinem Latein am Ende!!! Wo liegt der Fehler bei mir????![]()
...
TextZuLang = STRLEN(TXTTabellenFeld) > INTLängebisZeichenumbruch;
... REPEAT
    INTPositiondesAnfang := INTPositiondesAnfang + INTLängebisZeichenumbruch;
    TXTRestString:=COPYSTR(TXTTabellenFeld,INTPositiondesAnfang,INTLängebisZeichenumbruch);
      "Sales Shipment Line".INIT;
      "Sales Shipment Line"."Document No." := "Sales Shipment Line"."Document No.";
      "Sales Shipment Line"."Line No.":="Sales Shipment Line"."Line No." + INTCount;
      "Sales Shipment Line".Description:=TXTRestString;
      "Sales Shipment Line".INSERT;
      INTCount := INTCount + 1;
    INTLaengeRestString:=  STRLEN(TXTRestString);
    UNTIL INTLaengeRestString < INTLängebisZeichenumbruch
IF NOT TextZuLang THEN
  CurrReport.BREAK;14. August 2008 15:55
das RecTempSalesShipmentLine gegen eine neue Variable SalesShipmentLine, die nicht temporär ist. Darüber muss dann auch das repeat..until laufen. Damit liest du die Daten aus der Datenbank aus, modifizierst sie wie gewünscht, und schreibst sie in deine temporäre Tabelle.RecTempSalesShipmentLine.SETRANGE("Document No.","Sales Shipment Header"."No.");
RecTempSalesShipmentLine.FIND('-');
15. August 2008 09:16
RECSalesShipmentLine.SETRANGE("Document No.","Sales Shipment Header"."No.");
RECSalesShipmentLine.FIND('-');
RecTempSalesShipmentLine.COPY(RECSalesShipmentLine);
REPEAT
  INTCount := 1;
  INTLängebisZeichenumbruch:=30;
  INTPositiondesAnfang:=1;
  TXTTabellenFeld:=RECSalesShipmentLine.Description;
  IF STRLEN(TXTTabellenFeld) > INTLängebisZeichenumbruch THEN
    BEGIN
    RecTempSalesShipmentLine.INIT;
    RecTempSalesShipmentLine."Document No." :=RECSalesShipmentLine."Document No.";
    RecTempSalesShipmentLine."Line No.":=RECSalesShipmentLine."Line No.";
    RecTempSalesShipmentLine.Description:=
      COPYSTR(RECSalesShipmentLine.Description,INTPositiondesAnfang,INTLängebisZeichenumbruch);
    RecTempSalesShipmentLine.Quantity:=RECSalesShipmentLine.Quantity;
    RecTempSalesShipmentLine."Unit of Measure Code":=RECSalesShipmentLine."Unit of Measure Code";
    RecTempSalesShipmentLine.INSERT;
   
    REPEAT
    
      INTPositiondesAnfang := INTPositiondesAnfang + INTLängebisZeichenumbruch;
      TXTRestString:=COPYSTR(TXTTabellenFeld,INTPositiondesAnfang,INTLängebisZeichenumbruch);
    
      RecTempSalesShipmentLine.INIT;
      RecTempSalesShipmentLine."Document No." :=RECSalesShipmentLine."Document No.";
      RecTempSalesShipmentLine."Line No.":=RECSalesShipmentLine."Line No." + INTCount;
      RecTempSalesShipmentLine.Description:=TXTRestString;
      RecTempSalesShipmentLine.INSERT;
      INTCount := INTCount + 1;
      INTLaengeRestString:=  STRLEN(TXTRestString);
    
    UNTIL INTLaengeRestString < INTLängebisZeichenumbruch
    
    END
  ELSE
    BEGIN
    RecTempSalesShipmentLine.INIT;
    RecTempSalesShipmentLine."Document No." :=RECSalesShipmentLine."Document No.";
    RecTempSalesShipmentLine."Line No.":=RECSalesShipmentLine."Line No.";
    RecTempSalesShipmentLine.Description:=RECSalesShipmentLine.Description;
    RecTempSalesShipmentLine.Quantity:=RECSalesShipmentLine.Quantity;
    RecTempSalesShipmentLine."Unit of Measure Code":=RECSalesShipmentLine."Unit of Measure Code";
    RecTempSalesShipmentLine.INSERT;
    END;
UNTIL RECSalesShipmentLine.NEXT = 0;
15. August 2008 10:35