go to post Robert Cemper · Dec 26, 2017 the key difference is that you can pass the classname by a variable.So you are prepared to get the classname passed by some other method.In your example with a constant string"circle"you miss the key advantage and It's of o added value.BTW. Correct is $classmethod("circle.radius","%New")http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...
go to post Robert Cemper · Dec 22, 2017 For testing with Terminal I typically use PuTTY. http://www.putty.org/There I can have multiple terminals with separated Sessions/$JOB in parallel without problem.(pls. don't ask how )Terminal driver changes to a free set of ports ( 51133|10088) as you see by $IOso it's no problem to have multiple terminal sessions connected USER>w $io|TNT|127.0.0.1:51133|10088I have no idea if Atelier allows multiple Terminals . And if how to launch them.In Atelier just click again to the Terminal Open Icon:
go to post Robert Cemper · Dec 21, 2017 is Enable %Service_Telnet set ?in the Management Portal (http:///csp/sys/sec/%25CSP.UI.Portal.Services.zen) My Caché runs on Win .(I'm not sure if this works also for Caché on Unix )It does NOT work for Unix:%Service_TelnetYesYesUnauthenticatedUnrestrictedControls Telnet sessions on a Windows server So on UNIX you go to bash and have to start via csession....
go to post Robert Cemper · Dec 21, 2017 so what you are looking for is something similar to XML IGNORENULL = 1short time ago I ended up with export to XML and then convert XML to JSON.Not so impressive but better than chasing unwanted "".
go to post Robert Cemper · Dec 21, 2017 Right: if you don't establish TELNET connection it's just bash or MS-DOS depending on your local OS.Also for local localhost access !so from Help:Using the Terminal Plug-in Telnet ConnectionIf your Caché instance is on a remote Windows server, you will need to connect using Telnet.Enable %Service_Telnet from the Management Portal (http:///csp/sys/sec/%25CSP.UI.Portal.Services.zen)In the main menu, select Show View > Other > Terminal > Terminal, or click this link to open the Terminal View.Select the Open a Terminal button on the Terminal view toolbar. Select Telnet Terminal from the Choose terminal drop down menu.Complete the Telnet session configuration and click "OK"If csession isn't in your PATH, navigate to your instance's bin directory. For example, cd C:\InterSystems\Cache\bin.Launch a Caché terminal session. For example, csession Cache.Setup ConnectionAnd you get your Caché Terminal HTH
go to post Robert Cemper · Dec 21, 2017 Funny to meet amCharts again as I presented it first to customers as alternative to ZEN graphicsaround 2011/12 with Caché 2011.1
go to post Robert Cemper · Dec 20, 2017 and keep quiet when it installs. this is not Caché and it takes it's time (I just spent 25 min for an Update/Upgrade)
go to post Robert Cemper · Dec 20, 2017 It is. I have used it some time ago.You need a suitable plug in and connect to port 23 of your server (provided it is not blocked by Win* firewall.plugin from the following update repository: http://download.eclipse.org/tm/terminal/marketplace/.From your Eclipse/Atelier workspace, navigate to Help > Install New Software from the main menu.Enter the URL for the Terminal plugin update site in the Work with field. Ensure that the Group items by category check box is selected.Once the groups are displayed, select the check box by the newest version.Click Next to open the Install Details page. Review your installation choices.Click Next to open the Review Licenses page. Accept the license terms and click Finish.To open the Terminal view, select Window > Show View > Other on the main menu and type "terminal" in the filter box. Select Terminal and OK.
go to post Robert Cemper · Dec 20, 2017 Because it's so easy I've added a solution for those readers that don't refuse to work with Caché Objects & Classes .Class Definition Class DC.productListing Extends (%RegisteredObject, %XML.Adaptor) { Property product As %String(CONTENT = "MIXED", XMLPROJECTION = "CONTENT");} Simple display method ClassMethod Show(xml As %String(MAXLEN="")){ set rd=##class(%XML.Reader).%New() ,sc=rd.OpenString(xml) do rd.Correlate("product","DC.productListing") while rd.Next(.obj) { write !,"######"_$i(cnt)_"#########",$replace(obj.product,$c(10),$C(13,10)) }}Extended test dataUSER>write xml<productListing title="ABC Products"> <product> <name>Product One</name> <description>Product One is an exciting new widget that will simplify your life.</description> <cost>$19.95</cost> <shipping>$2.95</shipping> </product> <product> <name>Product 2</name> <description>Product 2 is an exciti</description> <cost>$19.95</cost> <shipping>$2.95</shipping> </product> <product> <name>Product 3</name> <description>Product 3 is simplify your life.</description> <cost>$19.95</cost> <shipping>$2.95</shipping> </product></productListing>USER>ResultUSER>do ##class(DC.productListing).Show(xml) ######1######### <name>Product One</name> <description>Product One is an exciting new widget that will simplify your life.</description> <cost>$19.95</cost> <shipping>$2.95</shipping> ######2######### <name>Product 2</name> <description>Product 2 is an exciti</description> <cost>$19.95</cost> <shipping>$2.95</shipping> ######3######### <name>Product 3</name> <description>Product 3 is simplify your life.</description> <cost>$19.95</cost> <shipping>$2.95</shipping> USER>
go to post Robert Cemper · Dec 20, 2017 what's wrong with Caché Objects and Classes ?I remember, you had a similar fear some time ago
go to post Robert Cemper · Dec 19, 2017 Class not found + Win7 makes me think you should check your System Variable CLASSPATH ?just a guess.
go to post Robert Cemper · Dec 19, 2017 This is one of my personal reasons to use PuTTY or WebTerminal or anything else than TERMINAL.
go to post Robert Cemper · Dec 18, 2017 Kevin,if you call a ClassMethod() it will return whatever the type of return value is like.some variants:- your Classmethod generates the CSV file as you do and the return value is the filenameClassMethod Kevin1() as %String [SqlProc]{ ....... generate CVS File quit Filename } - instead of a file you generate a 2 dimensional $Piece String (, as field separator and ^ as record separator)ClassMethod Kevin2() as %String(MAXLEN="") [SqlProc]{ ....... setup ResultSet set output="" while rs.Next() { for col=1:1:rcws.GetColumnCount() { set output=output_rs.GetData(col)_"," } set output=output_"^" } quit output } - a similar thing could be rows as a list of JSON setsClassMethod Kevin3() as %String(MAXLEN="") [SqlProc]{ set output="" &SQL( SELECT LIST(line) into :output FROM ( Select top 3 JSON_OBJECT('Name':Name ,'ZIP':Home_ZIP ,'State':Home_State) as line from sample.Person where name [ 'A' ) ) ) quit output } /// {"Name":"Xiang,Agnes O.","ZIP":56604,"State":"MT"},{"Name":"Zubik,Bill A.","ZIP":78872,"State":"NV"},"Name":"Schaefer,Alvin X.","ZIP":63607,"State":"ME"} in all cases you have to disassemble the result on the EXCEL end.BUT as this is MS-EXCELmy personal preference would be anyhow to connect to Cache over ODBC with a local DSNand just call your data via SQL and get back a full working XLS table that feeds the rest in your XLS.This is standard in EXCEL and except for the DSN the same for ACCESS or real DBs.(as I don't own and use EXCEL any more I can't offer an example)- your initial question didn't mention CSV nor MS-EXCELso my Article on Light weight EXCEL Download may applyhttps://community.intersystems.com/post/light-weight-excel-downloador Tips & Tricks - SQL to Excelhttps://community.intersystems.com/post/tips-tricks-sql-excelHTH,Robert
go to post Robert Cemper · Dec 15, 2017 An alternate approach to SOAP:a) you run your query over JDBC on your DataServer so you can query what ever you likeb) slightly more sophisticated you create a ClassMethod with [SqlProc] parameter and also call it over JDBC like this. SELECT Pkg.Class_ClassMethod() It's totally up to you what the content of your return value is. I personally prefer JDBC as it's platform independentin fact b) is pretty much the same as SOAP just with a different transport that avoids %CSP and its side effects.......
go to post Robert Cemper · Dec 13, 2017 Proposal:Store your JSON String as %String(MAXLEN="") like a log filefor the typical components type, age, firstname, lastname, ...create calculated properties that find its content by $piece, $find or some JSON specific stuff.setup an index on those calculated properties to find your record.With this approach you keep the origin as you get it and get te indices you may require.It's pretty similar to what I did to mimic an XML DB with Cachéso 1) =NO 2) =see above 3) =YES 4) = it's just another challenge
go to post Robert Cemper · Dec 11, 2017 Evgeny,it's great ! only the link requires adjustment.NOT https://community.intersystems.com/post/github.com/intersystems-community/but https://github.com/intersystems-community/
go to post Robert Cemper · Dec 11, 2017 Hi Tim,I'm highly interested to see this result.I tried to do something similar recently to to be able to feed back to the sender what was wrong if something was wrong.I failed to get the combinations of params for XERCES parser right. XMLIGNORE* worked OK but was not so useful.You might have a shorter link to contact Marvin Tenner then me.
go to post Robert Cemper · Dec 10, 2017 As we see your ID is combined by 3 propertiesfor the sake of this example I name them id01, id02, id03so your ID is this combination ID = id01_"||"_id02,_"||"_id03so you may reformulate your query to make it readable SELECT * FROM TafnitCore_Logistics_TransferPackage_DB.PackageData WHERE id01=1 AND id02=1 and id03 IN (9852553062, 9852553061 )ORDER BY Building