go to post Robert Cemper · Jun 29, 2020 Is it really %String or a subtype without MAXLEN or MALXEN disabled ?I have done this in past and I know of some types just defined to remove MAXLEN =50 e.g. %Library.RawString, %Library.Text, ...
go to post Robert Cemper · Jun 29, 2020 in class %Dictionary.CompiledProperty you have if a Property Parameter exists it is in this Array: But not all properties have MAXLEN this is a %String
go to post Robert Cemper · Jun 28, 2020 If you call routines or classes you should temporarily save your lines before executione.g. ZS temp
go to post Robert Cemper · Jun 28, 2020 use local routine. like: a<tab>for i=1:1:100 {<tab>/// do one line<tab>///do something else<tab>}do a ;to run it to edit/show your line use ZI, ZR, PRINT ATTENTION: you need a REAL terminal. WebTerm, Studio, .... just can process single lines as they are only Terminal SIMULATIONS using eXECUTE command
go to post Robert Cemper · Jun 23, 2020 I see just nothing in SQL that relates to the error message.my only wild guess: some NULL value results confuse the VB end.You could eventually bypass it using NVL() function SELECT NVL(PROE,'*'),NVL(DESP,'*),NVL(ID,0) FROM ZVBMAPEAMENTO.SVINFOUVNDWHERE JOB=1224 GROUP BY PROE
go to post Robert Cemper · Jun 23, 2020 The most simple way to do it:in class Table.A have Property TableB as Table.B;in class Table.B have Property TableA as Table.A; in your code it may look like this: set objA=##class(Table.A).%OpenId(212)set objB=##class(Table.B).%OpenId(99)set objA.TableB=objBset objB.TableA=objAdo objA.%Save(), objB.%Save() You are free to index properties TableA or TableB according to your needsand you can also use Implicit JOIN between these tables.
go to post Robert Cemper · Jun 23, 2020 Suggestion for a calculated Property: Property SentTimeNEW As Ens.DataType.UTC [ Calculated, SqlComputed, SqlComputeCode = { set {*}=$s({SentTime}<1842:"",1:{SentTime}) } ];
go to post Robert Cemper · Jun 23, 2020 OK. I understand those records where created BEFORE you defined your new column.I checked the internal code $s(%val="":"",1:$zdatetime($zdTH($zdatetimeh(%val,3,,,,,,,,0),-3),3,,3)) This tells me:- Your value is Not Empty - it has no valid time format, so it is trapped by the ERROR option and set to Zero ==>> 1840-12-31 00:00:00 Suggestion:- set value to NULL for old records.or- create your own data type for this case. or - use a calculated Property to trap the values
go to post Robert Cemper · Jun 23, 2020 1840-12-31 00:00:00 is point Zero of internal time setting.It applies as default to empty data type Ens.DataType.UTC
go to post Robert Cemper · Jun 22, 2020 embedded SQL is probably an overkill for this formating.Just convert it to the internal format, add what you need and assemble the pieces in COS ; set datein=201906192359; set add=60 ;; seconds to addset dh=$ZDH($e(datein,1,8),8)set hh=$e(datein,9,10)set mi=$e(datein,11,12)set new=$ZTH(hh_":"_mi_":00",3)+addset zdt=$zdt(new\86400+dh_","_(new#86400),3)set dateout=$tr($e(zdt,1,*-3),"-: ")
go to post Robert Cemper · Jun 20, 2020 if you know exactly what characters you want to remove you may use $TRANSLATE (in SQL) ! docs: https://cedocs.intersystems.com/latest/csp/docbook/Doc.View.cls?KEY=RSQL_d_translate
go to post Robert Cemper · Jun 19, 2020 for the fixed part you still can use classic mapping.for the variable section you may set CONTENT = "MIXED" for the containing propertyand get the raw XML structure in hands .You can then analyze this "inner" XML using class %XML.TestReader
go to post Robert Cemper · Jun 18, 2020 The example and the class are simply wrong A %Library.DynamicObject that is composed here just has neither a method %Clone nor a method %Compose You may report the bug to WRC