I recently got a new computer and reinstalled LabVIEW as a result. Since that time I haven't been writing a lot of new code, but all my existing code has functioned without issue. I'm not sure that the new computer is the root cause here, but it seems likely.
Today I ran into an issue while trying to pull some data from a database. If I try to get anything other than a single element from the database I get a broken run arrow and "Database Variant To Data: Xnode not executable" when I click on it. This happens with at least 1D and 2D arrays of ints, doubles, and strings. If I try to get a single element I don't get an error and the VI runs. I tried adding the broken example VI to a project and doing a mass compile, but all I got was a message saying it was a bad VI. I've rebooted and recreated the VI only to get the same error.
The real kicker is that existing code that I've written prior to the new computer all runs fine. It uses the Database Variant To Data in the same manner with 1D and 2D arrays. If I delete the DB Variant to Data from the working VI and re-add it from the pallet then I get a broken arrow with the same error. Both projects look like they are using the database VIs from the same location. I only have LabVIEW 2011 installed on this computer.
Any thoughts on what I'm overlooking?
Some more testing - attached with notes.
1) I copied some working code to a new VI - No XNode Error.
2) Copy working code. Delete DB Variant to Data and add it back from palette. I get the XNode error now.
3) Copy working code. Delete element from 2D array and drop in a numeric data type from palette. I get the XNode error.
4) Copy working code. Deleted the array and recreated it from an empty array and a string constant. No XNode error, and the above two Xnode errors are GONE!
I couldn't understand why the errors went away so I restarted LabVIEW. They stayed gone.
5) Copy working code. Deleted array. Dropped empty array and then dropped a numeric into the array. I get the XNode error again :-(
6) Repeated same process as #4 above that magically fixed things last time. No luck this time.
I can't give you any advice on what is wrong, but I can offer a workaround for you. Replace the database variant to data node with a standard variant to data node. As far as I can tell it works just the same: turns a 2d array of varaints into a 2d array of integers.
I knew I could use that as a work around for simple data types, but based off some of my reading here I don't think that works for clusters. Or maybe it doesn't work for some clusters? Either way, thanks for chiming in
I actually noticed the problem as I was working on some specifications to improve the database design we're using now. Trying to move towards more sensible datatypes for things rather than everything in a table being a string. That would, hopefully, ultimately lead to me turning variants into clusters.
It's not an immediate need, yet, or I'd be in the middle of uninstalling and reinstalling. Just hoping to provide some useful feedback before I get to that point.
Since this started yesterday I've had three or four different errors when closing LabVIEW. I had very few prior to this. I haven't worked on trying to recreate an exact set of steps to get an error when I close LabVIEW. Hopefully I don't need to do that much more work
I never managed to uncover the exact cause of the issue even with the aid of a very helpful AE at NI.
I ended up curing the problem by uninstalling and reinstalling, but I had to do this twice. The second time I took the added step of deleting the National Instruments folder left over in the Program Files directory. I also only installed LabVIEW 2011 and the Database Toolkit the second time, and then the rest of the toolkits and DAQ drivers after confirming that my Database Variant to Data worked.
Exactly which data types read from a DB must be converted with DATABASE Variant to Data and not regular Variant to Data?
Now that DB Var to Data is part of the DB Toolkit, even if that's the ONLY function you need from the DB Toolkit you (and your customers) have to pay extra for the toolkit.
I found a work around for this issue by copying a piece of db variant to data from the example that comes with the NI. Otherwise it always returns an error for me. It could be, that this polymorphic vi has a certain order of connecting wires not to fail.???