IF NOT Cust."No Discount allowed" THEN
  [...]
IF Item.Blocked = TRUE THEN
  [...]
IFÂ Cust.FINDFIRSTÂ THEN
  REPEAT
    [...]
  UNTIL Cust.NEXT = 0;
IFÂ [...]Â THENÂ [...]Â ELSEÂ IFÂ [...]Â THENÂ [...]Â ELSEÂ [...];
Natalie hat geschrieben:Das NAV-Team bei Microsoft hat mal hier welche gesammelt: Reusable Bugs
With Rec Do
10x Preusocodelines;
With OtherRec DO
Function("No.");
PROCEDURE Function@50000(Parameter) : Bool;
VAR
Record@50000 : Record 50000;
BEGIN
CLEAR(Record);
Rec.SetFilter("No.",'123');
Exit(Rec.IsEmpty);
END;
Nody3000 hat geschrieben:WITH DO ist für mich generell ein Antipattern.
LOCAL BeispielFunktion()
WITH Contact DO
IF FINDSET THEN
REPEAT
//....
UNTIL NEXT = 0;
Timo Lässer hat geschrieben:Natürlich ist es praktisch, seinen Programmcode mittels WITH zu kürzen, jedoch birgt es auch seine heimtückischen Gefahren
EnterSum(ColNo : Integer;RowNo : Integer;FromRowNo : Integer;FromColNo : Integer;ToRowNo : Integer;ToColNo : Integer;Bold : Boolean;Underline : Boolean;NumberFormat : Text[50])
INIT;
VALIDATE("Row No.",RowNo);
VALIDATE("Column No.",ColNo);
"Cell Value as Text" := '';
Formular := 'XY';
Bold := Bold; <- Hier wurde der Variable selbst der eigene Wert zugewiesen.
Underline := Underline; <- Hier wurde der Variable selbst der eigene Wert zugewiesen.
NumberFormat := NumberFormat; <- Hier wurde der Variable selbst der eigene Wert zugewiesen.
INSERT;
EnterSum(ColNo : Integer;RowNo : Integer;FromRowNo : Integer;FromColNo : Integer;ToRowNo : Integer;ToColNo : Integer;P_Bold : Boolean;P_Underline : Boolean;P_NumberFormat : Text[50])
INIT;
VALIDATE("Row No.",RowNo);
VALIDATE("Column No.",ColNo);
"Cell Value as Text" := '';
Formular := 'XY';
Bold := P_Bold;
Underline := P_Underline;
NumberFormat := P_NumberFormat;
INSERT;
Enumerator := XlWrkShtReader.GetEnumerator;
RowCount := XlWrkShtReader.RowCount;
WHILE Enumerator.MoveNext DO BEGIN
CellData := Enumerator.Current;
IF CellData.HasValue THEN BEGIN
VALIDATE("Row No.",CellData.RowNumber);
VALIDATE("Column No.",CellData.ColumnNumber);
ParseCellValue(CellData.Value,CellData.Format);
INSERT;
END;
i := i + 1;
COMMIT;
IF NOT UpdateProgressDialog(ExcelBufferDialogMgt,LastUpdate,i,RowCount) THEN BEGIN
QuitExcel;
ERROR(Text035)
END;
END;
IF SalespersonPurchaser.GET(GenJournalLine2."Salespers./Purch. Code") THEN
IF SalespersonPurchaser.VerifySalesPersonPurchaserPrivacyBlocked(SalespersonPurchaser) THEN
ERROR(SalespersonPurchPrivacyBlockErr,GenJournalLine2."Salespers./Purch. Code");
IF SalespersonPurchaser.GET(GenJournalLine2."Salespers./Purch. Code") THEN
IF SalespersonPurchaser.VerifySalesPersonPurchaserPrivacyBlocked THEN
ERROR(SalespersonPurchPrivacyBlockErr,GenJournalLine2."Salespers./Purch. Code");
VerifySalesPersonPurchaserPrivacyBlocked(SalespersonPurchaser2 : Record "Salesperson/Purchaser") : Boolean
BEGIN
IF "Privacy Blocked" THEN
EXIT(TRUE);
EXIT(FALSE);
END;
Nody3000 hat geschrieben:ich sehe mir gerade wieder Code an in dem ganze Records übergeben werden
IF STRLEN(INCSTR(GenJnlBatch.Name)) > MAXSTRLEN(GenJnlBatch.Name) THEN
Natalie hat geschrieben:Der Quelltext fragt ab, ob es unmöglich ist, die Nummer weiter zu erhöhen, ohne dass die Maximallänge überschritten würde.
Warum? Weil (je nach Einrichtung) nach jeder Buchung automatisch ein neuer Buchblattname angelegt wird. Hieß er vorher MEINBB001, dann heißt der neue: MEINBB002, eben weil bei der Erzeugung sehr wohl mit INCSTR gearbeitet wird. Und wenn es vorher MEINBB999 hieß, dann hätten wir nach der Buchung tatsächlich ein Zeichen Zuviel.
fiddi hat geschrieben:Hallo,
z.B: das Buchblatt: "MIETE2018/01" Wenn man es gebucht hat, weiß man, das man es in dem jeweiligen Monat erledigt hat.
Gruß Fiddi
Ich hab noch die uralten Versionen am Anfang meiner Laufbahn erlebt und erinnere mich, dass beim Übergang auf 5.00 einige Text Feldlängen von 30 auf 10 gekürzt wurden. Leider hab ich mir nicht gemerkt, welche Felder von welchen Tabellen das waren.
Nody3000 hat geschrieben:WITH DO ist für mich generell ein Antipattern. Ich benutze es seit Jahren schon nicht mehr.
With Business Central 2022 release wave 2, the AL:Go! template for creating new AL projects in Visual Studio Code, now enables explicit with statements by default, by adding the NoImplicitWith option to the features property in the generated app.json file.
Zurück zu Vorschläge / Kritik
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast