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