Thông báo lỗi "Thập phân không được là [số]" khi bạn nhập hoặc xuất hợp nhất bằng cách sử dụng số tài khoản hợp nhất chứa 17 ký tự trở lên trong Microsoft Dynamics NAV 2009

Áp dụng cho
Dynamics NAV 2009

Bài viết này áp dụng cho Microsoft Dynamics NAV cho tất cả các quốc gia và mọi ngôn ngữ.

Triệu chứng

Khi bạn nhập hoặc xuất hợp nhất bằng cách dùng một số tài khoản hợp nhất có chứa 17 ký tự trở lên trong Microsoft Dynamics NAV 2009, bạn nhận được thông báo lỗi sau đây:

Lưu ý

Thập phân không được là số.  Thập phân phải nằm trong khoảng -999.999.999.999.999.999,99 - 999.999.999.999.999,99.

Sự cố này xảy ra ở các sản phẩm sau:

  • Microsoft Dynamics NAV 2009 Gói Dịch vụ 1 (SP1)
  • Microsoft Dynamics NAV 2009 R2

Giải pháp

Thông tin hotfix

Một hotfix được hỗ trợ hiện đã sẵn dùng từ Microsoft. Tuy nhiên, bài viết này chỉ nhằm mục đích khắc phục sự cố được mô tả trong bài viết này. Chỉ áp dụng cho các hệ thống đang gặp phải sự cố cụ thể này. Hotfix này có thể được kiểm tra bổ sung. Do đó, nếu bạn không bị ảnh hưởng nghiêm trọng bởi sự cố này, chúng tôi khuyên bạn nên đợi gói dịch vụ Microsoft Dynamics NAV 2009 tiếp theo hoặc phiên bản Microsoft Dynamics NAV tiếp theo có chứa hotfix này.

Lưu ý Trong một số trường hợp đặc biệt, chi phí thường phát sinh cho cuộc gọi hỗ trợ có thể được hủy nếu Chuyên gia Hỗ trợ Kỹ thuật cho Microsoft Dynamics và các sản phẩm liên quan xác định rằng một bản cập nhật cụ thể sẽ giải quyết sự cố của bạn. Chi phí hỗ trợ thông thường sẽ áp dụng đối với các vấn đề và câu hỏi hỗ trợ bổ sung không phù hợp với bản cập nhật cụ thể đang được bàn tới.

            
          

Thông tin cài đặt

Microsoft chỉ cung cấp các ví dụ lập trình để minh họa, không thể hiện hoặc ngụ ý bảo đảm. Điều này bao gồm, nhưng không giới hạn, các bảo đảm ngụ ý về khả năng bán được hoặc tính phù hợp một mục đích cụ thể. Bài viết này giả định rằng bạn đã quen với ngôn ngữ lập trình đang được trình bày cũng như với các công cụ được sử dụng để tạo và gỡ lỗi quy trình. Các kỹ sư hỗ trợ của Microsoft có thể giúp giải thích chức năng của quy trình đặc biệt, nhưng họ sẽ không sửa đổi những ví dụ này để cung cấp chức năng được bổ sung hoặc xây dựng các quy trình nhằm đáp ứng các yêu cầu cụ thể của bạn.

Lưu ý: Trước khi bạn cài đặt hotfix này, hãy xác minh rằng tất cả người dùng máy khách Microsoft Navision đã đăng xuất khỏi hệ thống. Trong đó bao gồm người dùng máy khách Dịch vụ Ứng dụng Microsoft Navision (NAS). Bạn nên là người dùng máy khách duy nhất được đăng nhập khi triển khai hotfix này.

Để thực hiện hotfix này, bạn phải có giấy phép nhà phát triển.

Chúng tôi khuyên tài khoản người dùng trong cửa sổ Đăng nhập Windows hoặc trong cửa sổ Đăng nhập Cơ sở dữ liệu được gán ID vai trò "SUPER". Nếu tài khoản người dùng không thể được gán ID vai trò "SUPER", bạn phải xác minh rằng tài khoản người dùng đó có các quyền sau đây:

  • Quyền Sửa đổi đối với đối tượng mà bạn sẽ thay đổi.
  • Quyền Thực thi đối với đối tượng ID Đối tượng Hệ thống 5210 và đối tượng ID Đối tượng Hệ thống 9015.

Lưu ý: Bạn không có quyền đối với các kho dữ liệu, trừ khi bạn phải thực hiện sửa chữa dữ liệu.

Thay đổi mã

Lưu ý: Luôn kiểm tra bản sửa lỗi mã trong một môi trường được kiểm soát trước khi áp dụng bản sửa lỗi cho máy tính sản xuất của bạn.
Để giải quyết sự cố này, hãy làm theo các bước sau:

  1. Thay đổi mã trong hàm CalcCheckSum trong đơn vị mã Hợp nhất (432) như sau:
    Mã hiện có

    ...
    DateToDecimal(StartingDate) + DateToDecimal(EndingDate) +
              TextToDecimal(FormatVersion) + TextToDecimal(ProductVersion);
            SubsidGLAcc.RESET;
            IF SubsidGLAcc.FIND('-') THEN
              REPEAT
    
    // Delete the following lines.
              CheckSum := CheckSum +
                 TextToDecimal(SubsidGLAcc."No.") + TextToDecimal(SubsidGLAcc."Consol. Debit Acc.") +
                 TextToDecimal(SubsidGLAcc."Consol. Credit Acc.");
    // End of the deleted lines.
    
              UNTIL SubsidGLAcc.NEXT = 0;
            SubsidGLEntry.RESET;
            IF SubsidGLEntry.FIND('-') THEN
              REPEAT
                CheckSum := CheckSum +
    ...
    

    Mã thay thế

    ...
    DateToDecimal(StartingDate) + DateToDecimal(EndingDate) +
              TextToDecimal(FormatVersion) + TextToDecimal(ProductVersion);
            SubsidGLAcc.RESET;
            IF SubsidGLAcc.FIND('-') THEN
              REPEAT
    
    // Add the following lines.
               CheckSum :=
                 CheckSum +
                 TextToDecimal(COPYSTR(SubsidGLAcc."No.",1,10)) + TextToDecimal(COPYSTR(SubsidGLAcc."No.",11,10)) +
                 TextToDecimal(COPYSTR(SubsidGLAcc."Consol. Debit Acc.",1,10)) +
                 TextToDecimal(COPYSTR(SubsidGLAcc."Consol. Debit Acc.",11,10)) +
                 TextToDecimal(COPYSTR(SubsidGLAcc."Consol. Credit Acc.",1,10)) +
                 TextToDecimal(COPYSTR(SubsidGLAcc."Consol. Credit Acc.",11,10)) ;
    // End of the added lines.
    
              UNTIL SubsidGLAcc.NEXT = 0;
            SubsidGLEntry.RESET;
            IF SubsidGLEntry.FIND('-') THEN
              REPEAT
                CheckSum := CheckSum +
    ...
    
  2. Thay đổi mã trong hàm TextToDecimal trong đơn vị mã Hợp nhất (432) như sau:
    Mã hiện có

    ...
    IF Txt[Idx] IN ['0','1','2','3','4','5','6','7','8','9'] THEN
                DecOnlyTxt := DecOnlyTxt + COPYSTR(Txt,Idx,1);
            IF DecOnlyTxt = '' THEN
              Result := 0
            ELSE
    
    // Delete the following line.
             EVALUATE(Result,DecOnlyTxt);   
    // End of the deleted line.
    
          END;
    
          LOCAL PROCEDURE DateToDecimal@25(Dt@1000 : Date) Result : Decimal;
          VAR
            Mon@1001 : Decimal;
    ...
    

    Mã thay thế

    ...
    IF Txt[Idx] IN ['0','1','2','3','4','5','6','7','8','9'] THEN
                DecOnlyTxt := DecOnlyTxt + COPYSTR(Txt,Idx,1);
            IF DecOnlyTxt = '' THEN
              Result := 0
            ELSE
    
    // Add the following line.
             EVALUATE(Result,DecOnlyTxt);
    // End of the added line.
    
          END;
    
          LOCAL PROCEDURE DateToDecimal@25(Dt@1000 : Date) Result : Decimal;
          VAR
            Mon@1001 : Decimal;
    ...
    

Điều kiện tiên quyết

Bạn phải cài đặt một trong các sản phẩm sau đây để áp dụng hotfix này:

  • Microsoft Dynamics NAV 2009 Gói Dịch vụ 1 (SP1)
  • Microsoft Dynamics NAV 2009 R2

                
              

Thông tin loại bỏ

Bạn không thể loại bỏ hotfix này.

Trạng thái

Microsoft đã xác nhận rằng đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong mục "áp dụng cho".

Lưu ý Đây là bài viết "PHÁT HÀNH NHANH" được tạo trực tiếp từ bên trong tổ chức hỗ trợ của Microsoft. Thông tin trong tài liệu này được cung cấp nguyên trạng để ứng phó với các sự cố mới xuất hiện. Do tốc độ cung cấp tài liệu, các tài liệu có thể có lỗi đánh máy và có thể được sửa đổi bất kỳ lúc nào mà không cần thông báo. Hãy xem Điều khoản sử dụng để biết các cân nhắc khác.