Fehler "Der Unterschied muss null sein, bevor Sie dieses Kontrollkästchen in Einklang bringen können", wenn das Kontrollkästchen in Select Bank Transactions

Dieser Artikel enthält eine Lösung für das Problem, dass der Unterschied als Null angezeigt wird, wenn Sie das Kontrollkästchen in Select Bank Transactions in Microsoft Dynamics GP abgleichen.

Gilt für: Microsoft Dynamics GP, Microsoft Dynamics SL Bank Reconciliation
Ursprüngliche KB-Nummer: 851301

Problembeschreibung

Wenn Sie das Kontrollkästchen in Select Bank Transactions in Microsoft Dynamics GP abgleichen, wird der Unterschied als Null angezeigt, aber Sie erhalten die folgende Fehlermeldung:

Der Unterschied muss null sein, bevor Sie dieses Kontrollkästchen in Einklang bringen können.

Ursache

Dies wird durch einen Bruchunterschied verursacht. Im Fenster "Banktransaktionen auswählen" werden nur so viele Dezimalstellen angezeigt, wie für die Währungs-ID eingerichtet sind, die dem jeweiligen Kontrollkästchen zugewiesen ist. Wenn Ihrem Kontrollkästchen beispielsweise eine Währungs-ID mit zwei Dezimalstellen zugewiesen ist, werden im Fenster "Banktransaktionen auswählen" nur zwei Dezimalstellen angezeigt. Die Datensätze in der SQL-Tabelle speichern jedoch bis zu fünf Dezimalstellen für ein Betragsfeld, sodass dieses Problem auftreten kann, wenn die verbleibenden Dezimalstellen für jeden Datensatz in den SQL-Tabellen Beträge enthalten und zu einer Bruchdifferenz führen können. Dies geschieht in der Regel, wenn die Datensätze in Microsoft Dynamics GP mit Beträgen importiert wurden, die mehr Dezimalstellen sind, als die Währungs-ID eingerichtet ist.

Lösung

Führen Sie die folgenden Schritte aus, um nach Datensätzen mit Dezimalstellen zu suchen, und verwenden Sie die folgenden Skripts, um sie aufzulösen:

  1. Starten Sie Microsoft SQL Server Management Studio, und wählen Sie die Schaltfläche "Neue Abfrage" aus, um ein Abfragefenster zu öffnen.

  2. Führen Sie das folgende Skript für die Unternehmensdatenbank aus, um zu ermitteln, ob Datensätze mit einem dritten, vierten oder fünften Dezimalstellenwert ungleich Null vorhanden sind:

    Hinweis

    Wenn Ihre Währung für das Kontrollkästchen 2 Dezimalstellen aufweist, wird mit der Zahl "3" im skript unten in jeder Zeile die dritte Position auf einen Bruch überprüft. Wenn Ihre Währung also 3 Dezimalstellen hat, passen Sie das Skript auf "4" usw. an.

    select * from CM20200 where right(ClrdAmt,3)<>0
    or right(TRXAMNT,3)<>0
    or right(ORIGAMT,3)<>0
    or right(Checkbook_Amount,3)<>0
    select * from CM20400 where right(DEBITAMT,3)<>0
    or right(CRDTAMNT,3)<>0
    select * from CM20500 where right(StmntBal,3)<>0
    or right(CUTOFFBAL,3)<>0
    or right(ClrePayAmt,3)<>0
    or right(ClrdDepAmt,3)<>0
    or right(ClrdDepAmt,3)<>0
    or right(Cleared_Difference,3)<>0
    or right(OUTPAYTOT,3)<>0
    or right(OUTDEPTOT,3)<>0
    or right(IINADJTOT,3)<>0
    or right(DECADJTOT,3)<>0
    or right(ASOFBAL,3)<>0
    select * from CM20501 where right(TRXAMNT,3)<>0
    select * from CM20201 where right(ORCHKTTL,3)<>0
    or right(Orig_Credit_Card_Total,3)<>0
    or right(Originating_Cash_Total,3)<>0
    or right(Originating_Deposit_Amou,3)<>0
    or right(Originating_Checkbook_Am,3)<>0
    

    Wichtig

    Stellen Sie sicher, dass Sie bei allen zurückgegebenen Datensätzen einen Bildlauf durchführen, um alle "Betragsspalten" für alle zurückgegebenen Datensätze zu notieren.

  3. Führen Sie außerdem dieses Skript aus, um die Beträge auch in der Checkbook Master-Tabelle zu überprüfen:

    select CURRBLNC,* from CM00100 where CHEKBKID = 'xxx'
    --modify the xxx placeholder with your checkbook ID.
    
  4. Erstellen Sie eine aktuelle wiederhergestellte Sicherung der Unternehmensdatenbank, bevor Sie fortfahren, oder führen Sie dies zuerst in einer Testumgebung aus.

    Wichtig

    Überspringen Sie diesen Schritt nicht.

  5. Je nachdem, in welchen Tabellen/Feldern Sie den Bruch gefunden haben, lesen Sie die beiden folgenden Methoden, und verwenden Sie die entsprechende Methode, um das Problem zu beheben:

    Methode 1: Aktualisieren Sie jedes Feld einzeln direkt in SQL, um das Dezimaltrennzeichen zu entfernen.

    Sie können einfach die Beträge aktualisieren, die von den oben genannten Skripts gefunden wurden, direkt in den SQL-Tabellen mithilfe eines Skripts, das dem folgenden Beispiel ähnelt. Nachdem Sie die Beträge aktualisiert haben, um den unerwünschten Bruch zu entfernen, aktualisieren Sie das Fenster "Banktransaktionen auswählen", um festzustellen, ob das Problem behoben ist.

    Hier ist ein Beispielskript zum Aktualisieren eines Felds nach dem anderen:

    UPDATE CMXXXXX SET YYYYY = '$.$$000' where DEX_ROW_ID = x
    
    --Before executing this script, update the placedholders as needed:
     -Modify the CMXXXXX placeholder with the correct table name; 
     -Modify the YYYYY placedholder with the correct field name in that table; 
     -Modify the $.$$000 with the correct amount with 2 decimal places,
     -Modify the x with the specific Dex Row ID for the record that you need to modify. 
    
    Repeat as many times as needed to update each field/table returned by the script in step 2
    and/or step 3 that has more than 2 decimal places.
    

    Hinweis

    Seien Sie konsistent. Wenn Sie in einer Vom Skript in Schritt 2 gefundenen Tabelle für ein Checkbook_Amt Feld einen(n) Betrag(en) aktualisieren, müssen Sie möglicherweise auch den aktuellen Saldowert der Kontrollkästchen in der CM00100 Checkbook Master-Tabelle in die gleiche Richtung aktualisieren. Stellen Sie außerdem sicher, dass alle Benutzer Microsoft Dynamics GP nicht verwenden, bevor Sie ein Updateskript für die Checkbook-Mastertabelle ausführen. Sie möchten nicht, dass jemand den Betrag des aktuellen Saldos für das Kontrollkästchen genau zur gleichen Zeit posten und ändert, zu der Sie diese Wartung durchführen.

    Methode 2: Summieren Sie Feldsummen, um zu sehen, ob Summen einen Dezimalbruch aufweisen.

    Führen Sie das folgende Skript aus, um die Feldsummen nach Typ zu überprüfen. Überprüfen Sie, ob mehr Dezimalstellen als die von Ihnen verwendete Währungs-ID vorhanden sind. Wenn die Datensätze in oder aus einer Drittanbietersoftware importiert wurden, haben Sie möglicherweise Mengen mit mehr Dezimalstellen als in GP importiert. In diesem Fall müssen Sie die "Nettodifferenz" berechnen und einen einzelnen Datensatz für diese Differenz aktualisieren, sodass Sie genau 0,00000 $ ausgleichen. Möglicherweise müssen Sie einen Supportvorfall öffnen, wenn Sie weitere Unterstützung benötigen, um dies zu tun. Wenn Sie dies selbst tun, stellen Sie sicher, dass Sie dies zuerst in einem Testunternehmen tun.

Hier ist ein Beispielskript zum Addieren der einzelnen Betragsfelder für die CM20200-Tabelle nach Typ:

select Distinct(CMTRXTYPE)as 'Type',SUM(TRXAMNT)as 'TRXAMNT', SUM (ORIGAMT)as 'ORIGAMT', SUM(Checkbook_Amount)as 'Checkbook_Amount' from CM20200 where CHEKBKID='XXX' group by CMTRXTYPE
--update the XXX placeholder with the appropriate checkbook ID.

Transaktionstyp:

1 = Einzahlung
2 = Bestätigung
3 = Überprüfen
4 = Auszahlung
5 = Anpassung erhöhen
6 = Anpassung verringern
7 = Übertragung
101 = Zinserträge
102 = Sonstige Einnahmen
103 = Sonstige Aufwendungen
104 = Servicegebühr

Hinweis

Notieren Sie sich alle Beträge, die Sie ändern, da Sie möglicherweise auch den CM00100-Saldo für denselben Unterschied in die gleiche Richtung aktualisieren müssen.

Weitere Informationen

Überprüfen Sie als letzte Möglichkeit die SQL-Sortierung und SQL Server Sortierreihenfolge, um festzustellen, ob Sie sich in einer unterstützten Umgebung befinden. (SQL-Sortierung von Latin1-General und SQL Server Sortierreihenfolge von 50 oder 52 werden unterstützt. The Reconcile may not run on an unsupported version even if the difference is $0.00000.) Wenn eine nicht unterstützte SQL-Sortierung oder SQL Server Sortierreihenfolge verwendet wird, müssen Sie einen Supportvorfall mit dem SQL Server-Team öffnen, um zusätzliche Unterstützung beim Ändern der SQL-Sortierung/SQL-Sortierreihenfolge zu erhalten, bevor Sie fortfahren können. Führen Sie dieses Skript aus, um die SQL-Sortierung und SQL Server Sortierreihenfolge zu ermitteln:

sp_helpsort