Hi Kris.
What version of Caché do you have?
SetHttpHeader is correct method to add headers.
ISCSOAP began logging headers starting from 2016.1. In order to log headers you need to add "h" to the ^ISCSOAP("Log").
- Log in to post comments
Hi Kris.
What version of Caché do you have?
SetHttpHeader is correct method to add headers.
ISCSOAP began logging headers starting from 2016.1. In order to log headers you need to add "h" to the ^ISCSOAP("Log").
No. You need to use Eclipse IDE Photon R with Atelier.
Well, it still works blinks!
Following this useful table (https://stackoverflow.com/a/33206814/82675) you can have blinking text as follows:
USER>write $C(27)_"[5m"_"Hello"_$C(27)_"[0m"
Contact InterSystems Support:
https://www.intersystems.com/support-learning/support/immediate-help/
I'm not sure for how much this is efficient, but you can use XSLT to do the transformation.
Class CMT.XmlToCsv [ Abstract ]
{
ClassMethod transform(
infile As %String,
outfile As %String) As %Status
{
Set tXSL=##class(%Dictionary.CompiledXData).%OpenId(..%ClassName(1)_"||XmlToCsv").Data
Set tSC=##class(%XML.XSLT.CompiledStyleSheet).CreateFromStream(tXSL,.tCompiledStyleSheet)
If $$$ISERR(tSC) Quit tSC
quit ##class(%XML.XSLT.Transformer).TransformFileWithCompiledXSL(infile,tCompiledStyleSheet,outfile)
}
XData XmlToCsv
{
Col1,Col2,Col3
}
}
And then call it from terminal:
set p=##class(CMT.XmlToCsv).transform("c:\temp\input.xml","c:\temp\output.txt")
zw p
I took XSLT from https://stackoverflow.com/a/46176699/82675
Return statement is
do %sqlcontext.AddResultSet(rs)
When you call this stored procedure it returns resultset
For example:
call CMT.ExternalUsersSearch('%in%',,,'Title')
If you call this stored procedure via ODBC / JDBC you need to add ReturnResultsets to the method definition: https://cedocs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=ROBJ_method_returnresultsets
CASE statement expects expression after THEN. DESC or ASC are not expressions. That's why you are getting syntax error.
So you need to supply some expression, ordering by which would mean reverse ordering by FirstName.
I don't know how to do this.
I would do sorting on the client or use dynamic SQL to create the query. As below for example.
Important! Nowhere I concatenate parameters of the stored procedure with the query to avoid SQL injections. Only SortingField is concatenated after checking that it has approved value.
ClassMethod Search(
Name As %String = "",
SSN As %String = "",
Title As %String = "",
SortingField As %String = "",
StartIndex As %String = "") As %Integer [ SqlName = ExternalUsersSearch, SqlProc ]
{
set query = "select Name, Title, SSN from Sample.Employee WHERE 1=1 "
kill args
if Name'="" {
set args($I(args)) = Name
set query = query _ "AND Name like ? "
}
if SSN'="" {
set args($I(args)) = SSN
set query = query _ "AND SSN like ? "
}
if Title'="" {
set args($I(args)) = Title
set query = query _ "AND Title like ? "
}
set AllowedFieldsToOrderBy = $LB("Name", "SSN", "Title")
if $ListFind(AllowedFieldsToOrderBy, SortingField) {
set query = query _ " ORDER BY " _ SortingField
if StartIndex = 1 {
set query = query _ " DESC"
} else {
set query = query _ " ASC"
}
}
set rs = ##class(%SQL.Statement).%ExecDirect(,query,args...)
#dim %sqlcontext As %SQLProcContext
if rs.%SQLCODE >=0 {
do %sqlcontext.AddResultSet(rs)
} else { // pass errors to the caller
set %sqlcontext.%SQLCODE = rs.%SQLCODE
set %sqlcontext.%Message = rs.%Message
}
quit 1
}
Not possible to do this in Query. You need to use dynamic SQL.
Symbol ":" is used to indicate host variables. Host variables are treated as expressions, not as identifiers.
During query compilation host variables are replaced with placeholders.
Consider query:
SELECT FirstName, MiddleName, LastName, Email, UserType
FROM DB.ExternalUsers
WHERE FirstName like :objSearch.FirstName
ORDER BY :objSearch.SortingField
This query is compiled as:
SELECT FirstName, MiddleName, LastName, Email, UserType
FROM DB.ExternalUsers
WHERE FirstName like ?
ORDER BY ?
Then during runtime you supply values as follows: objSearch.FirstName = 'A%' objSearch.SortingField = 'FirstName'
And query is executed as follows:
SELECT FirstName, MiddleName, LastName, Email, UserType
FROM DB.ExternalUsers
WHERE FirstName like 'A%'
ORDER BY 'FirstName'
Notice 'FirstName' is in quotes in ORDER BY. So you sort by literal string. That is doing nothing.
What you can do is to use expression like:
Order by CASE :objSearch.SortingField
WHEN 'FirstName' THEN FirstName
WHEN 'MiddleName' THEN MiddleName
...
END
Although such generic queries makes SQL Query Analyzer unable to reason what plan is better to use for this query.
I like usage of parameter, as it is computed once -- at compile time. And after you only fetch value in cycle.
You can also use $listfromstring via the same technique.
less quotes
If you have index.csp and it is specified as login page and you are seeing 404 error, try following:
a) Enable Audit b) Enable Protect event in Audit c) Reproduce the problem. e) Check Audit records if any Protect errors were logged
You can use $system.OBJ.Export to export LUT document to file:
ENSDEMO>w $system.OBJ.Export("AlertTable.LUT","c:\temp\qq.lut")
Exporting to XML started on 08/30/2019 12:03:14
Exporting type : AlertTable.LUT
Export finished successfully.
1
ENSDEMO>w $system.OBJ.Load("c:\temp\qq.lut")
Load started on 08/30/2019 12:03:26
Loading file c:\temp\qq.lut as xml
Imported document: AlertTable.LUT
Load finished successfully.
1
Hi Salma.
Check for files with extension LUT. They represent Lookup Tables. You can add these files to Studio Export.
Hope this helps, Alexander.
Hi Matthias.
Try adding [Identity] to the attributes of property id in generated class.
Something like follows:
Property id As %Integer(EXTERNALSQLNAME = "id", EXTERNALSQLTYPE = 4) [ Identity, SqlColumnNumber = 2, SqlFieldName = ID ];
Hope this helps, Alexander.
I understand that get data method only needs to return the Y-Axis values
Yes!
Do you think it is good to try and store values for x and y-Axes in the same data array?
No, keeping values in getChartData and labels for X axis in getAxisTime is fine.
Hi Jochen.
Have you looked at Microsoft forums?
There are lot of posts there with similar "Another installation is already in progress" error.
For example, following:
Currently it looks more like a problem with Windows Installer than with Caché
Good idea in such cases -- enable Audit and audit events LoginFailure and Protect. Reproduce the problem and then check Audit log.
Hi Alexey.
I'm not aware of such event handler.
However, I wonder why do you need it at all? If you provide use case, perhaps we can advice some other way to achieve it.
Hi Luis-Ángel.
Generally, if you can connect successfully then configuration is fine.
Does this happen with every query? If you try some simple query, like 'select 1', will this work ?
If yes, does your query work from Management Portal ?
Also, try enabling Audit and event Protect and check if this event is logged into Audit when this happens.
If Caché is Unicode you can upgrade Caché to Ensemble:

Daniel,
you don't have DeepSee Model and DeepSee Analyze enabled in "Extended feature codes". That's why these menu options are grayed out.
Check with InterSystems Sales to get a license with these bits enabled.
Do you have DeepSee in license? Please provide output of
do $system.License.Decode()
Not the smallest, but shortest -- 42 characters. Based on Robert's answer.
x $zwunpack("㵩㨱㨱〱‰㩷⍩㴳‰䘢穩≺眠椺㔣〽∠畂空•㩷⁸⁷‡")
Seems to work. Please provide small standalone example, so that we can reproduce
C:\InterSystems\ENSEMBLE2017x2x2\bin>set AA=22
C:\InterSystems\ENSEMBLE2017x2x2\bin>echo %AA%
22
C:\InterSystems\ENSEMBLE2017x2x2\bin>cache -s ..\mgr
Узел: ru-akoblovW10VM, Экземпляр: ENSEMBLE2017X2X2
USER>w $system.Util.GetEnviron("AA")
22
To get environment variable you can use $System.Util.GetEnviron().
And to get current folder -- $system.Process.CurrentDirectory().
Indeed, documentation [1] says that this is "Number of private global data blocks used by this process.". So this is due to process-private globals
You can inspect these global using ^GETPPGINFO utility [2]
[1] https://irisdocs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GSA_manage [2] https://irisdocs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GCOS_variables_procprivglbls