ExportToCsv2Cmd.export NullPointerException

Issue #4 new
Lance L created an issue

I’m getting a NullPointerException error while trying to export transactions using export.csv2.

Exporting with export.json fails with the same exception.

Exporting with export.csv exports successfully.

I'm running Microsoft Money Plus Deluxe 17.0.120.3817

Let me know if I can help debug this.

$ java --version
java 13 2019-09-17
Java(TM) SE Runtime Environment (build 13+33)
Java HotSpot(TM) 64-Bit Server VM (build 13+33, mixed mode, sharing)

$ java -jar sunriise-export-0.0.2-SNAPSHOT-exec.jar export.csv2 MYMONEY.mny MYPASSWORD exports
2020-01-23 16:54:05,287 [INFO  ] [main] ExportToCsv2Cmd.export(ExportToCsv2Cmd.java:54)  dbFile=MYMONEY.mny
2020-01-23 16:54:05,292 [INFO  ] [main] ExportToCsv2Cmd.export(ExportToCsv2Cmd.java:55)  outDir=exports
2020-01-23 16:54:05,295 [INFO  ] [main] AbstractExportTo.initThreadPool(AbstractExportTo.java:45)  ThreadPool is NOT enable.
2020-01-23 16:54:05,301 [INFO  ] [main] MnyDb.openDb(MnyDb.java:420)  # Opening dbFile=MYMONEY.mny, readOnly=true, encrypted=true
2020-01-23 16:54:05,473 [INFO  ] [main] AbstractExportToDir.startExportToDir(AbstractExportToDir.java:99)  > startExport, outDir=exports
2020-01-23 16:54:05,717 [WARN  ] [main] TableAccountUtils.deserialize(TableAccountUtils.java:405)  Invalid EnumInvestmentSubType=UNKNOWN, mnyType=14, accountName=MYBANK - IRA, Wife Roth
2020-01-23 16:54:05,719 [WARN  ] [main] TableAccountUtils.deserialize(TableAccountUtils.java:405)  Invalid EnumInvestmentSubType=UNKNOWN, mnyType=14, accountName=MYBANK - IRA, My Roth
2020-01-23 16:54:05,727 [WARN  ] [main] TableAccountUtils.deserialize(TableAccountUtils.java:405)  Invalid EnumInvestmentSubType=UNKNOWN, mnyType=14, accountName=ANOTHER BANK - IRA, Wife Roth
2020-01-23 16:54:05,738 [INFO  ] [main] MnyDb.close(MnyDb.java:223)  Closing dbFile=MYMONEY.mny
2020-01-23 16:54:05,745 [INFO  ] [main] ExportToCsv2Cmd.export(ExportToCsv2Cmd.java:71)  < DONE
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:567)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:51)
        at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:597)
Caused by: java.lang.NullPointerException
        at com.hungle.sunriise.dbutil.TableAccountUtils.deserialize(TableAccountUtils.java:403)
        at com.hungle.sunriise.dbutil.TableAccountUtils.getAccounts(TableAccountUtils.java:311)
        at com.hungle.sunriise.dbutil.TableAccountUtils.getAccounts(TableAccountUtils.java:295)
        at com.hungle.sunriise.dbutil.TableAccountUtils.getMap(TableAccountUtils.java:657)
        at com.hungle.sunriise.util.MnyContextUtils.initMnyContext(MnyContextUtils.java:86)
        at com.hungle.sunriise.util.MnyContextUtils.createMnyContext(MnyContextUtils.java:55)
        at com.hungle.sunriise.account.AbstractAccountVisitor._visit(AbstractAccountVisitor.java:242)
        at com.hungle.sunriise.export.AbstractExportToDir.exportToDir(AbstractExportToDir.java:83)
        at com.hungle.sunriise.export.AbstractExportToDir.export(AbstractExportToDir.java:59)
        at com.hungle.sunriise.export.AbstractExportTo.export(AbstractExportTo.java:196)
        at com.hungle.sunriise.export.cvs2.ExportToCsv2Cmd.export(ExportToCsv2Cmd.java:67)
        at com.hungle.sunriise.export.cvs2.ExportToCsv2Cmd.main(ExportToCsv2Cmd.java:43)
        at app.ExportToCsv2.main(ExportToCsv2.java:16)
        at app.ModuleExportMain.main(ModuleExportMain.java:59)
        ... 8 more

$ cat sunriise-log.txt
2020-01-23 16:54:05,287 [INFO  ] [main] ExportToCsv2Cmd.export(ExportToCsv2Cmd.java:54)  dbFile=MYMONEY.mny
2020-01-23 16:54:05,292 [INFO  ] [main] ExportToCsv2Cmd.export(ExportToCsv2Cmd.java:55)  outDir=exports
2020-01-23 16:54:05,295 [INFO  ] [main] AbstractExportTo.initThreadPool(AbstractExportTo.java:45)  ThreadPool is NOT enable.
2020-01-23 16:54:05,301 [INFO  ] [main] MnyDb.openDb(MnyDb.java:420)  # Opening dbFile=MYMONEY.mny, readOnly=true, encrypted=true
2020-01-23 16:54:05,473 [INFO  ] [main] AbstractExportToDir.startExportToDir(AbstractExportToDir.java:99)  > startExport, outDir=exports
2020-01-23 16:54:05,717 [WARN  ] [main] TableAccountUtils.deserialize(TableAccountUtils.java:405)  Invalid EnumInvestmentSubType=UNKNOWN, mnyType=14, accountName=MYBANK - IRA, Wife Roth
2020-01-23 16:54:05,719 [WARN  ] [main] TableAccountUtils.deserialize(TableAccountUtils.java:405)  Invalid EnumInvestmentSubType=UNKNOWN, mnyType=14, accountName=MYBANK - IRA, My Roth
2020-01-23 16:54:05,727 [WARN  ] [main] TableAccountUtils.deserialize(TableAccountUtils.java:405)  Invalid EnumInvestmentSubType=UNKNOWN, mnyType=14, accountName=ANOTHER BANK - IRA, Wife Roth
2020-01-23 16:54:05,738 [INFO  ] [main] MnyDb.close(MnyDb.java:223)  Closing dbFile=MYMONEY.mny
2020-01-23 16:54:05,745 [INFO  ] [main] ExportToCsv2Cmd.export(ExportToCsv2Cmd.java:71)  < DONE

I get the same exception using sunriise-export-0.0.1-SNAPSHOT-exec.jar.

Thanks!
Lance

Comments (24)

  1. Anna-marie Redpath

    Getting similar error on csv export. Running Microsoft MOney DEluxe Version 14.0.120.1105


    2021-03-02 20:53:33,458 [INFO ] [pool-2-thread-1] ExportToDirTask.run(ExportToDirTask.java:88) û took 1 second
    2021-03-02 20:53:33,474 [INFO ] [pool-2-thread-1] ExportToDirTask.run(ExportToDirTask.java:89) û < DONE, exported to dir=C:\sunriise.\exports\csv
    Exception in thread "pool-2-thread-1" java.lang.NullPointerException: Cannot invoke "java.lang.Integer.compareTo(java.lang.Integer)" because "id" is null
    at com.hungle.sunriise.prices.OldGetLatestSecurityPricesUtils.getSecurityLatestPriceByCollecting(OldGetLatestSecurityPricesUtils.java:107)
    at com.hungle.sunriise.prices.OldGetLatestSecurityPricesUtils.getSecurityLatestPrice(OldGetLatestSecurityPricesUtils.java:49)
    at com.hungle.sunriise.util.BalanceUtils.collectSecurityHolding(BalanceUtils.java:278)
    at com.hungle.sunriise.util.BalanceUtils.calculateInvestmentBalance(BalanceUtils.java:201)
    at com.hungle.sunriise.util.BalanceUtils.calculateAndSetInvestmentBalance(BalanceUtils.java:195)
    at com.hungle.sunriise.util.BalanceUtils.calculateAndSetBalance(BalanceUtils.java:78)
    at com.hungle.sunriise.dbutil.TableAccountUtils.addTransactionsToAccount(TableAccountUtils.java:545)
    at com.hungle.sunriise.account.AbstractAccountVisitor._visitAccount(AbstractAccountVisitor.java:292)
    at com.hungle.sunriise.account.AbstractAccountVisitor._visit(AbstractAccountVisitor.java:238)
    at com.hungle.sunriise.export.AbstractExportToDir.exportToDir(AbstractExportToDir.java:80)
    at com.hungle.sunriise.export.AbstractExportToDir.export(AbstractExportToDir.java:59)
    at com.hungle.sunriise.export.AbstractExportTo.export(AbstractExportTo.java:191)
    at com.hungle.sunriise.export.ui.ExportToDirTask.run(ExportToDirTask.java:70)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
    at java.base/java.lang.Thread.run(Thread.java:832)
    2021-03-02 20:53:33,707 [INFO ] [AWT-EventQueue-0] MnyExporterFrame$4.run(MnyExporterFrame.java:265) û Wrote to diskUsage file=C:\sunriise.\exports\ourmoneytest-du.csv
    2021-03-02 20:53:33,707 [INFO ] [AWT-EventQueue-0] MnyExporterFrame$4.run(MnyExporterFrame.java:269) û < calculateDiskUsage

  2. Lance L reporter

    I'm revisiting this with sunriise-export-0.0.2-SNAPSHOT and the issue persists. Again, export.csv2 and export.json fail while export.csv is successful.

    I have 32 years of data in Microsoft Money and would very much like to be able to export it! 🤓

    2023-01-10 01:36:20,951 [INFO  ] [main] ExportToCsv2Cmd.export(ExportToCsv2Cmd.java:53)dbFile=/opt/app/mnydata/mymoney.mny
    2023-01-10 01:36:20,961 [INFO  ] [main] ExportToCsv2Cmd.export(ExportToCsv2Cmd.java:54)outDir=/opt/app/mnydata
    2023-01-10 01:36:20,963 [INFO  ] [main] AbstractExportTo.initThreadPool(AbstractExportTo.java:45) – ThreadPool is NOT enable.
    2023-01-10 01:36:20,977 [INFO  ] [main] MnyDb.openDb(MnyDb.java:380)# Opening dbFile=/opt/app/mnydata/mymoney.mny, readOnly=true, encrypted=true
    2023-01-10 01:36:21,101 [INFO  ] [main] AbstractExportToDir.startExportToDir(AbstractExportToDir.java:96) – > startExport, outDir=/opt/app/mnydata
    2023-01-10 01:36:21,296 [WARN  ] [main] TableAccountUtils.deserialize(TableAccountUtils.java:443) – Invalid EnumInvestmentSubType=UNKNOWN, mnyType=14, accountName=My Roth IRA
    2023-01-10 01:36:21,308 [INFO  ] [main] MnyDb.close(MnyDb.java:206) – Closing dbFile=/opt/app/mnydata/mymoney.mny
    2023-01-10 01:36:21,330 [INFO  ] [main] ExportToCsv2Cmd.export(ExportToCsv2Cmd.java:70) – < DONE
    Exception in thread "main" java.lang.reflect.InvocationTargetException
            at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:116)
            at java.base/java.lang.reflect.Method.invoke(Method.java:578)
            at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
            at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
            at org.springframework.boot.loader.Launcher.launch(Launcher.java:51)
            at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:597)
    Caused by: java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because "mnyType" is null
            at com.hungle.sunriise.dbutil.TableAccountUtils.deserialize(TableAccountUtils.java:441)
            at com.hungle.sunriise.dbutil.TableAccountUtils.getAccounts(TableAccountUtils.java:349)
            at com.hungle.sunriise.dbutil.TableAccountUtils.getAccounts(TableAccountUtils.java:333)
            at com.hungle.sunriise.dbutil.TableAccountUtils.getMap(TableAccountUtils.java:708)
            at com.hungle.sunriise.util.MnyContextUtils.initMnyContext(MnyContextUtils.java:96)
            at com.hungle.sunriise.util.MnyContextUtils.createMnyContext(MnyContextUtils.java:57)
            at com.hungle.sunriise.account.AbstractAccountVisitor._visit(AbstractAccountVisitor.java:219)
            at com.hungle.sunriise.export.AbstractExportToDir.exportToDir(AbstractExportToDir.java:81)
            at com.hungle.sunriise.export.AbstractExportToDir.export(AbstractExportToDir.java:60)
            at com.hungle.sunriise.export.AbstractExportTo.export(AbstractExportTo.java:191)
            at com.hungle.sunriise.export.cvs2.ExportToCsv2Cmd.export(ExportToCsv2Cmd.java:66)
            at com.hungle.sunriise.export.cvs2.ExportToCsv2Cmd.main(ExportToCsv2Cmd.java:42)
            at app.ExportToCsv2.main(ExportToCsv2.java:15)
            at app.ModuleExportMain.main(ModuleExportMain.java:65)
            at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
            ... 5 more
    

    I'm using the latest openjdk in a container now.

    % java -version
    openjdk version "21-ea" 2023-09-19
    OpenJDK Runtime Environment (build 21-ea+4-184)
    OpenJDK 64-Bit Server VM (build 21-ea+4-184, mixed mode, sharing)
    

  3. First Last

    Hi all,

    First I am really sorry about missing these issues. I was relying on email notification and I guess they all got flag as spam so I’ve not seen them.

    I will take a quick look. My quick guess is that you have an account type that the current codes does not know about. In general, I have to guess on the account type and I think you have an account type that I’ve yet to ran across.

  4. Lance L reporter

    After a few hours of trial and error, I'm happy to report I made a successful run of export.csv2! I have 212 accounts so it took some time 😀

    The account causing the "mnyType" is null error was the "Investments to Watch" account Money created automatically three decades ago. I deleted this account and the csv export ran to completion. (I first unchecked the "Watch account" setting for that account but it did not remedy the failure.)

    The json export still fails, but with a new error, which I'll post in a separate issue.

    Here are the WARN messages I received.

    One of these for each "Roth IRA" investment account. I cannot discern in the accounts' Settings page what makes them different from the dozens of other "normal IRA" accounts I have setup....

    TableAccountUtils.deserialize(TableAccountUtils.java:443) – Invalid EnumInvestmentSubType=UNKNOWN, mnyType=14, accountName=My Roth IRA
    

    A couple of these:

    BalanceUtils.getCashAccountValue(BalanceUtils.java:408) – getCashAccountValue - relatedToAccount is null. account=Investment Account 1
    

    A few of these:

    TableTransactionUtils.createInvestmentTransaction(TableTransactionUtils.java:387) – Cannot find investmentTransaction for id=15773, investmentActivity=Return of Capital
    

    A few of these:

    TableTransactionUtils.createInvestmentTransaction(TableTransactionUtils.java:387) – Cannot find investmentTransaction for id=43611, investmentActivity=ACTIVITY_UNKNOWN
    

    If you can add some detailed debug messages for these issues, I’ll happily run it again!

  5. First Last

    After a few hours of trial and error, I'm happy to report I made a successful run of export.csv2! I have 212 accounts so it took some time ..

    Nice!

    The account causing the "mnyType" is null error was the "Investments to Watch"

    Thanks for that info. I will create sample test for that.

    One of these for each "Roth IRA" investment account.

    I will try to find if I can create a test account for “Roth IRA”

    For the rest of the warnings, I will try to find the places where they occured and will try to spit out more useful info.

    Agains thanks for the detail report.

    Best,

  6. First Last

    Re: the NPE exception causing by “Investment to Watch” account.

    I can’t quite duplicate it. It looks like in your file (somehow that account as a null value for the column to represent the investment subtype). In my sample.mny file my “Investment to Watch” has a non-null value of -1

    2023-01-10 23:37:06,575 [INFO  ] [AWT-EventQueue-0] TableAccountUtils.deserialize(TableAccountUtils.java:441) – XXX - COL_INVESTMENT_SUB_TYPE, name=Investments to Watch, mnyType=-1
    

    But I will add a guard for the next build.

  7. First Last

    Re: ‘TableAccountUtils.deserialize(TableAccountUtils.java:443) – Invalid EnumInvestmentSubType=UNKNOWN, mnyType=14, accountName=My Roth IRA’

    I only know about the following subtype

    public enum EnumInvestmentSubType {
        // 0: 403(b)
        // 1: 401k
        // 2: IRA
        // 3: Keogh
        /** The _403b. */
        _403b(0),
        /** The _401k. */
        _401k(1),
        /** The ira. */
        IRA(2),
        /** The keogh. */
        KEOGH(3),
    
        /** The retirement. */
        RETIREMENT(11),
        /** Not applicable. */
        NOT_APPLICABLE(-1),
    
        /** The unknown. */
        UNKNOWN(-2),;
    

    I think it should not cause issue per se (as far as I can tell). It just mean it will identify that investment account type as UNKNOWN.

    I will see if I can create an account type that has the internal ID 14.

  8. First Last

    Looking at money diaglog

    I think I’ve only seen the a few types from that list so anything else not currently identified in the above EnumInvestmentSubType will be identified as UNKNOWN. There is no documentation on this so I only know what I actually see in my mny files. So now we know 14 is Roth IRA.

  9. First Last

    Re:

    BalanceUtils.getCashAccountValue(BalanceUtils.java:408) – getCashAccountValue - relatedToAccount is null. account=Investment Account 1

    I think that simply mean account “Investment Account 1” does not have a associated Cash Account. Can you confirm if that is the case?

  10. First Last

    The two warnings

    TableTransactionUtils.createInvestmentTransaction(TableTransactionUtils.java:387) – Cannot find investmentTransaction for id=15773, investmentActivity=Return of Capital

    TableTransactionUtils.createInvestmentTransaction(TableTransactionUtils.java:387) – Cannot find investmentTransaction for id=43611, investmentActivity=ACTIVITY_UNKNOWN

    money uses a bunch of bitmap in certain columns to try to convey type information. Most of this I have to guess: guessing how to decode a masking map is not a “most straight-forward” to say the least ;-)

    To give you a flavor, this is what I do to guess if an account type is of type “Investment”

        public boolean isInvestment() {
            // bit 4 == investment trn (need to figure out how to tell what
            // kind--other grftt bits?)
            int mask = (1 << 4);
            return isSet(flag, mask);
        }
    

    In this case, I have guess those transaction is of type Investment and I tried to look up such transaction and not able to do so. Let me think on how to best proceed next to get the right data from you.

  11. Lance L reporter

    I think that simply mean account “Investment Account 1” does not have a associated Cash Account. Can you confirm if that is the case?

    Yes, neither investment account has an associated cash account. Both accounts have their "Track cash transactions" setting unchecked, and their "Cash Transactions" links are greyed out.

    (As an aside, I do find this fact unusual. I notice that their "Buy" transactions have a blank "Transfer from" which I can't imagine would have been the case. Both accounts were created in 1995, and this file has been through a lot of Money upgrades over the years, so who knows what happened!)

  12. Lance L reporter

    Cannot find investmentTransaction for id=15773, investmentActivity=Return of Capital

    All the "Return of Capital" transactions look like proper account transfers in the csv export. In the account ledger they have an Activity of “Return of Capital” with no associated category. For example, transaction 15773 (given category "income" in the csv export) is counterpart to transaction 15774 that transfers from the investment account to its cash account. I wonder what "investmentTransaction" it is unable to find?

    Cannot find investmentTransaction for id=43611, investmentActivity=ACTIVITY_UNKNOWN

    All of the "ACTIVITY_UNKNOWN" transactions also look like proper account transfers in the csv export. In the account ledger they have an Activity of "Other Income" with an associated category. For example, transaction 43611 has category "Capital Gains" and is counterpart to transaction 43612 that transfers from an investment account to its cash account.

    Perhaps related to the lookup failure- one of the "ACTIVITY_UNKNOWN" transactions has an incorrect name in the account field. The accountid is correct (166) but account is set to that of accountid 161.

  13. Lance L reporter

    Here are two other oddities I have noticed in my exported data...

    1. All my non-blank number field values are prefixed with a 0 or 1. Checks begin with a 0 followed by a series of spaces (eg. 0 2792) and ATM transactions are prefixed with 1 (eg. 1ATM).
    2. I have 5 transactions, each for a different "loan" account from the mid-1990's, whose date is 10000/02/28. (The json value is "10000-02-28T00:00:00.000+0000"). They all have very low id values (between 4 and 28) which does not seem legitimate. None appear in the account transaction ledger. In fact, best I can tell, if the account has 40 transactions, the one with the bad date is the 41st.)

  14. First Last

    Hi Lance, can I ask you to try something new. There is a GUI tool that can be used to display the content of a mny file. The tool is called accountviewer.

    My idea is to see if this tool also show the same error you are seeing the export (extra prefix 0/1 and bad date 10000 …) so that we can triage if the problem with the CVS output or actual with the “internal model”.

    https://bitbucket.org/hleofxquotesteam/dist-sunriise/downloads/sunriise-accountviewer-0.0.2-SNAPSHOT.zip

    I hope it is straightforward to run but if you have issue, please post here. Again please use JDK 11 (for now)

  15. Lance L reporter

    Unfortunately, both the the odd number and date do appear in accountviewer.

    For the odd dates, I have 7 loan accounts - 2 mortgages and 5 "regular" loans. All 5 regular loans have the odd dated transaction at the end.

    Unrelated to the above, but may point to a different future issue, running the accountviewer from your new dist-sunriise-test repo fails with an exception, using both Oracle Java 11 JDK and Java 17 JDK on my Windows 11 machine.

    C:\Users\lance\Downloads>java -version
    java version "11.0.17" 2022-10-18 LTS
    Java(TM) SE Runtime Environment 18.9 (build 11.0.17+10-LTS-269)
    Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.17+10-LTS-269, mixed mode)
    
    C:\Users\lance\Downloads>java -jar sunriise-accountviewer-0.0.2-SNAPSHOT-exec.jar
    Exception in thread "main" java.lang.ClassNotFoundException: com.hungle.sunriise.accountviewer.AccountViewer
            at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)
            at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
            at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:92)
            at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
            at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:46)
            at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
            at org.springframework.boot.loader.Launcher.launch(Launcher.java:51)
            at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:598)
    

    I can successfully run export.

        C:\Users\lance\Downloads>java -jar sunriise-export-0.0.2-SNAPSHOT-exec.jar
        2023-01-12 12:08:35,726 [INFO  ] [main] MnyExporterFrame.addToolsMenu(MnyExporterFrame.java:573) û > addToolsMenu
    

  16. First Last

    Exception in thread "main" java.lang.ClassNotFoundException: com.hungle.sunriise.accountviewer.AccountViewer
    

    Thanks for catching that. Will fix.

  17. First Last

    All 5 regular loans have the odd dated transaction at the end.

    For the entries that have the odd dates, how does money display the date?

  18. Lance L reporter

    None of the odd dated transactions appear in the account transaction ledger. They’re all just an extra transaction at the end of the export. Here’s the Money ledger for the account above.

  19. Lance L reporter

    I tried to create a Money file that only contains the accounts with odd dates, but Money won’t let me delete three of my accounts, saying “This operation cannot be performed.” I ran a Standard Repair on the file and that didn’t help. Very odd that it can’t delete them!

  20. First Last

    None of the odd dated transactions appear in the account transaction ledger.

    Interesting … Hmm .. let me give this some thoughts to see what we can do to get more info to take the next steps.

  21. First Last

    but Money won’t let me delete three of my accounts, saying “This operation cannot be performed.” I ran a Standard Repair on the file and that didn’t help. Very odd that it can’t delete them!

    Not to scare you ;-) but I think that might be an indication that there are something not quite right with your mny file internal database structure. I think the best advice I can give at this point is to make sure to have good backup.

  22. Lance L reporter

    Given how many times Money “upgraded” its database over the years, I’d be surprised if it wasn’t goofed up a bit 😀 I don’t notice any issues with day-to-day use though, so that’s reassuring.

    Using mdb-explorer to review the TRN table, I notice that all my dtSent, dtCleared and dtPost (mostly) are also that funny date Mon Feb 28 00:00:00 EST 10000. Perhaps Money sets dt to this "null date" for transactions it can't delete but wants to ignore? Here's a screenshot of offending transaction ID=24 shown above.

  23. Log in to comment