Eduard Lebedyuk · Jul 8, 2018 go to post
SELECT
$TRANSLATE(CallbackComment  ,'''','?')
FROM SQ.CBPhoneResult_View
WHERE PhoneDateODBC = '2018-04-09' 

Also try

  • %EXTERNAL(CallbackComment)
  • %INTERNAL(CallbackComment)
  • %ODBCOUT(CallbackComment)
Eduard Lebedyuk · Jul 7, 2018 go to post

As i have mentioned that i am using the Intersystem ODBC

Where? I thought you were using SMP.

Try to change SELECT field CallbackComment to one of:

  • %EXTERNAL(CallbackComment)
  • %INTERNAL(CallbackComment)
  • %ODBCOUT(CallbackComment)
Eduard Lebedyuk · Jul 7, 2018 go to post

Looks like Timeout issue.

1. Do you have index on PhoneDateODBC?

2. Can you execute the same query using some JDBC tool?

Eduard Lebedyuk · Jul 6, 2018 go to post

You can receive all filter values for cube if you pass its name as a datasource:

/Info/FilterMembers/YourCubeName
Eduard Lebedyuk · Jul 6, 2018 go to post

Here's an output I get:

USER>

USER>

USER>

This is written by INT routine
USER>

 which is created from a script injected to csession.
USER>

USER>

D ^MyBootRoutine
^
<NOROUTINE> *MyBootRoutine
USER>

USER>

USER>

Looks like it's still line-by-line execution.

Eduard Lebedyuk · Jul 5, 2018 go to post

You can determine, where does the message comes from by inspecting it's header, get header Id from:

 $$$JobCurrentHeaderId

and query Ens.MessageHeader class.

Alternatively, check "process" variable in BPL or current context in ObjectScript processes. Maybe the whole object would be available somewhere.

Eduard Lebedyuk · Jul 4, 2018 go to post

Check out this list of tools for C#/InterSystems interoperability.

I think you need Caché Managed Provider for .NET.

In <installdir>\dev\dotnet there are several examples available.

Eduard Lebedyuk · Jul 3, 2018 go to post

Here's an example of accessing properties and array elements:

set jsonObj = [].%FromJSON(filename)
set i = jsonObj.resultSets.%GetIterator()
while i.%GetNext(.key , .resultSet ) {
    set i2 = resultSet.rowSet.%GetIterator()
    write resultSet.name,!
    while i2.%GetNext(.key , .rowSet ) {
        write rowSet.%Get(0),!
    }
}
Eduard Lebedyuk · Jul 3, 2018 go to post
$zu(68,40,switch)

can be replaced with:

set old=$system.Process.SetZEOF(switch)

Also, what does this command do?

kill ^TMP($zn,$j)
Eduard Lebedyuk · Jul 3, 2018 go to post

This error indicates that either login and password are incorrect or that user has insufficient permissions to access management portal.

Eduard Lebedyuk · Jul 2, 2018 go to post

1. Connect to other system via xDBC

2. Query %Dictionary package on a local and remote system and compare results.

Eduard Lebedyuk · Jun 29, 2018 go to post

But prior to 2010.1 we didn't have $NAMESPACE

As @Lucas Fernandes uses $namespace in his solution:

 #dim currentNamespace As %String = $namespace 

that is not a concern in this particular case.

Eduard Lebedyuk · Jun 28, 2018 go to post

Here's my URL template

jdbc:Cache://{host}[:{port}]/{database}

If you connect but get Access Denied, try user with %ALL permissions to remove doubts about insufficient privileges.

Eduard Lebedyuk · Jun 28, 2018 go to post

Are there advantages to using:

set currentNamespace = $namespace
znspace "%SYS"
// do stuff
znspace currentNamespace

Instead of:

new $namespace
set $namespace = "%SYS"
// do stuff
Eduard Lebedyuk · Jun 26, 2018 go to post

4. Didn't found how to do that automatically, but adding <br/> to text value adds a new line, i.e.:

 Set var(0,1) = "!!!!!!!!!!!!!!!!<br/>!!!!!!!!!!!!!!!!!!!!!"
Eduard Lebedyuk · Jun 25, 2018 go to post

So far I got:

Class Test.Zen Extends %ZEN.Report.reportPage
{

Parameter DEFAULTMODE = "pdf";

/// ReportDefinition is a placeholder.
XData ReportDefinition [ XMLNamespace = "http://www.intersystems.com/zen/report/definition" ]
{
<report xmlns="http://www.intersystems.com/zen/report/definition"
    name="MyReport" runonce="true">
  </report>
}

XData ReportDisplay [ XMLNamespace = "http://www.intersystems.com/zen/report/display" ]
{
<report xmlns="http://www.intersystems.com/zen/report/display"
name="MyReport">
<body>
<table ongetData="GetCount">
<table orient="row" ongetData="NamesAndAddresses" style="border:1pt solid black">
<parameter fieldnum="1"/>
<item fieldnum="1" >
<caption value="Name"/>
</item>
<item fieldnum="2" >
<caption value="Title" />
</item>
<item fieldnum="3" >
<caption value="Pages" />
</item>
</table>
<parameter value="test" />
</table>
</body>
</report>
}

ClassMethod GetCount(ByRef var As %String, ByRef params)
{
    set count=3
    for i=0:1:count-1 {
        set var(i, 0) = i
    }
}

Method NamesAndAddresses(ByRef var As %String, ByRef params)
{
    if (params(1) = 0) {
       Set var(0,0) = "Alice"
       Set var(0,1) = "Hello"
       Set var(0,2) = 123
    } elseif (params(1) = 1) {
       Set var(0,0) = "Bob"
       Set var(0,1) = "World"
       Set var(0,2) = 456
    } elseif (params(1) = 2) {
       Set var(0,0) = "Charlie"
       Set var(0,1) = "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
       Set var(0,2) = 789
    }
}

}

Which produces this output:

 

The questions I have:

  1. Is there a way to add breaks between "rows"?
  2. How do I add inside table borders?
  3. How do I give 10% of width to Name/Page/Title and the rest to values?
  4. How do I auto-break long strings into several?