For my current application, I am inserting datapoints that may or may not be digital state codes in PI. Preferably, I would like to be able to treat digital state codes as integers and insert just like any normal integer. For example, I'd like to be able to do insert(tag, time, value) values ('tag-name', '*', 1).
However, when this query is run on a digital state type tag, the error "[PIOLEDB] Row insertion failed. Digital state code couldn't be converted to a digital state." is generated.
As a work around, I can format my query like the following
insert picomp2 (tag, time, value) select 'tag-name', '*', code from ( select top 1 * from pipoint2 where tag = 'tag-name' ) as point join pids on pids.digitalset = point.digitalset where pids.offset = 1
This seems like overkill for something that should be simple. It also cannot be used for normal queries, so I would need to know ahead of time that my datapoint is a digital state code. I have no representation of the digital codes outside of PI, so the DIGCODE() function is not a possible solution for me.
Is there not a better method to do this that I'm not seeing in the documentation?