go to post Robert Cemper · Oct 11, 2018 In SQL you do SELECT '"'||field||'"' ....String delimiter in SQL are single quotes ' String concatenator is || Double pipe
go to post Robert Cemper · Oct 11, 2018 Brendan,I share your concerns. The initial request didn't mention Fileman at all.This is just a hint how a construct like this could be opened to SQL access. I've seen so many old MUMPS code that would have never taken its way to objects without.It#s clear that this requires wise use and careful handling.
go to post Robert Cemper · Oct 10, 2018 for pure object access, you have a getter and a setter method. no magicif also want to use it for SQL- you need SqlComputed code. This will also replace your (object)Getter.- to set your local variable also by INSERT or UPDATE you need to add UPDATE and INSERT Trigger code.example; Class DC.Setter Extends %Persistent [ Not ProcedureBlock ]{Property DUZ As %String [ Calculated, SqlComputed, SqlColumnNumber = 2, SqlComputeCode = {set {*} = DUZ(2)} ];// for settig object propertyMethod DUZSet(Arg As %String) As %Status [ ServerOnly = 1 ]{ set DUZ(2)=Arg Quit $$$OK }Trigger UpdTrigger [ Event = UPDATE ]{ set DUZ(2)= %d(2) ,%ok=1 }Trigger InsTrigger [ Event = INSERT ]{ set DUZ(2)= %d(2) ,%ok=1 }--To anticipate critics:Some people may say it's dirty coding. YES !! But it works.
go to post Robert Cemper · Oct 10, 2018 Classes and its parts are objects of package %DictionaryI guess you are looking for this$system.OBJ.* holds all utilities for compilation, import, export, ...
go to post Robert Cemper · Oct 9, 2018 Last parameter .args came only with 2017.1for earlier versions you need to compose it into first argument.
go to post Robert Cemper · Oct 8, 2018 as a first suggestion, I would create a setter and getter method for this property that handles DUZ(2) in both directions.If you add any property by the wizard it shows you the exact naming of the methods.this property then goes in the first position of the IDkeybe aware of ProcedureBlock to have always access to your DUZ(2) or name it %DUZ(2) as hack
go to post Robert Cemper · Oct 8, 2018 Yes you can! but not directly!All you need is a an Abstract Class with Classmethods to read, set, kill Globals as you need either static with fixed names or Global references passed by params. As you like.And if you add SqlProc to the method you can even use it over ODBC/JDBC.
go to post Robert Cemper · Oct 5, 2018 as you write it " + id+ " is a constant string. so what would you expect to change?eventually, you rephrase the question and add also the programming language you try to use.this seems to be an invalid syntax anyhow
go to post Robert Cemper · Oct 5, 2018 Searching for Caché is not so effective but looking for Intersystems or ObjectScript may get better hit rates.Amazon has some related books. Watch also for Mike Kadow.
go to post Robert Cemper · Oct 4, 2018 You hit the point %Boolean s an excellent example it can be TRUE, FALSe or NULLin Caché terms: 1, 0, ""Your example ^CODE("TNO","BIO",291,"AKI")) is partially misleading in that sense that a global subscript can NEVER be ""while the content of $LB() can be $LB(1,2,"",4) or $lb(1,2,,4) here you find your "undefined" again,similar to NULL in SQL (which is a different story)
go to post Robert Cemper · Oct 4, 2018 there is a major difference between 1) and 2)1) is also true if you have SET ^CODE("TNO","BIO",291,"AKI"))=""
go to post Robert Cemper · Oct 3, 2018 You could also use a Command Pipe (docs) and read directly from your OS using "../bin ccontrol list" or similarYou just do the usual OPEN + USE and READ whatever comes back.
go to post Robert Cemper · Oct 3, 2018 Check performance log and activity on your ESX or whatever your VM is running on. It looks like a performance problem of the virtual disk.
go to post Robert Cemper · Oct 3, 2018 this information is stored in ^|"%SYS"|SYS("Security","ApplicationsD")you could extract it by MERGE ^mySAVE=^|"%SYS"|SYS("Security","ApplicationsD") and then do any export of the global
go to post Robert Cemper · Oct 1, 2018 Thanks!One headache less in the discussion about the "right" way to write code.+a tiny piece for "creative freedom".
go to post Robert Cemper · Sep 28, 2018 Procedureblock =1 means ALL local variables except call parameters and %variables move to stackand return when you return from your method (=procedure)see Summary on Local Variable Scoping for more this memory operation is not free but nothing to get a headache upon
go to post Robert Cemper · Sep 28, 2018 Of course, if your utility classes are all ABSTRACT it is pure code. As any .MAC, just easier to read.OREF is just a special data type (object pointer) and not better or worse than any other variable.I 'd guess variable scoping and procedure block has much more (microscopic) influence on performance.My personal preference is to have only code tightly related to stored date in "object"-classes.Anything else outside that is not only related to this class.
go to post Robert Cemper · Sep 23, 2018 As IClassID seems to be numeric, did you try to force a pure numeric comparison ?eg. if +lClassID '= +rs.GetData(5) {or if (lClassID - rs.GetData(5)) {