Entries in Dynamics
(4)

Work continues on my editor, albeit at a slower pace than it should. I have a working database explorer control prototype done my editor. So far it recognizes any running Navision instances, pulls their server and database info and adds it to the explorer. It then allows browsing of information for any object in any of those databases. The treeview control itself is from an open source project (which can be found at CodeProject or SourceForge) called TreeViewAdv, written by Andrey Gliznetsov. I have to say it is a very nice control and I recommend it to anyone who needs a treeview that supports "load on demand" or columnar data.

In the process of writing this control I recognized problem in my CSide Utils project. Apparently version 5.0 Navision clients (and I'm guessing those prior) return time data fields with a fractional decimal of seconds on the end (such as 12:00:00.344). Apparently you cannot pass a value like this back to the cilent even though it returned the value in the first place. I added a clean little compiled regex to deal with this into the project. I will be updating the primary source trunk for my project and uploading it to the website soon. I will also update the download on Mibuso with this latest version (skipping 1.1 altogether).

I've been working on my C/Side Integration Utilities over the week and I finally have enough for a 1.1 release this weekend. I'll be packaging it up soon and uploading it to my site, so hopefully by the time you are reading this post, you'll be able to download the 1.1 source. I have improved the objects as well as worked out another one of the unknown methods that I think folks will find cool (that method is EndTransaction, which also makes COMMIT possible). I'm going to do a little more testing in the next few hours and then publish the new version.

The .Net garbage collection is quite aggressive it seems, overly so when it comes to marshalled COM instances. It's proving impossible so far to properly unhook the events in my Client class via the Dispose method (or at least when the GC calls it). I'm sure if I call it pre-emptively it would work fine but it's rather annoying that the garbage collector is preventing me from cleaning up properly. I'm going to continue attempting to resolve this before I post version 1.1.

I made more changes to my C/Side utilities last night. Decided to change the FieldValue from a struct to a class. I think I shall leave the remaining Field and Filter structs as is since neither of these should change once they are created. Added lazy loading logic to the Record class, and by extension it's linked FieldValue class objects.

I am going to finish up my changes to the C/Side wrapper this week so I can focus on my parser and editor projects this weekend. Been watching too much tv and coding too little, but what else is new. For those not aware, I have a Navision parser project that I've been working off and on for the last 4 years. I started putting a lot of effort into finishing the project this year and I hope to get it wrapped up and released in 2011. This parser will be open sourced just like the C/Side utils. I am also working on an alternative editor to the classic C/Side one that everyone is used to. It turns out building an editor is a LOT of work so I doubt I will be releasing it terribly soon, but it will be worth the wait when I get it released. The editor will not be open source but there will be a free version.

I just posted the first release of my C/Side Integration Utilities project. I hope it is well received and that the community contributes on this project. It took me a few weeks to hammer out as well as a bit of help. I can't thank Kamil Sacek enough for his help. Perhaps I will post it to SourceForge as well. I think in the future I would like to provide some wrapper classes for accessing a client instance as an ADO.Net data source.