Robert Cemper · Feb 9, 2018 go to post

small extension.

USER>write $TR($zcvt("mY sImPlE eXaMpLe", "W")," ")
MySimpleExample
Robert Cemper · Feb 9, 2018 go to post

Arun,
#1) the error <INVALID OREFF>  #2) goes away if you use Method BtnClickMe( ...)   instead of  ClassMethod BtnClickMe(....)

#2) setting title property turns out to be tricky since component DataCombo is a complex structure with multiple HTML elements
with multiple title properties.  The ZENmethod  setProperty() reaches only the first one.
Which is the Label (!) and if you didn't declare it in the ZEN class it is hidden and you will never see it.

As a consequence I found this code working:

<dataCombo 
    ......
    title=""  
    onmouseover="zenPage.BtnClick(event.currentTarget);
    />

event.currentTarget gives you the real browser component (<input...>) in hands

ClientMethod BtnClick(DTCOMBO) As %String [ Language = javascript ]
{
    var MyPriority=DTCOMBO.value;
    var result=zenPage.BtnClickMe(MyPriority);
        DTCOMBO.title=result ;
    return;
}

All settings of the page happen in client code. 

/// calculate content of title
/// actually a fake for testing
Method BtnClickMe(MyPriority) As %String [ ZenMethod ]
{
    set ^%Arun($i(^%Arun))=MyPriority
    quit MyPriority_"****"_^%Arun
}

Now as you do not depend on %page object now this could be a ClassMethod as well.

Robert Cemper · Feb 9, 2018 go to post

from last comment: 
https://www.sqlservercentral.com/Forums/Topic647815-145-1.aspx

Difference between varchar(max) and varchar(8000)
Varchar(8000) stores a maximum of 8000 characters. Varchar(max) stores a maximum of 2 147 483 647 characters. 
See Books Online, the page titled "char and varchar" for more info. 
Gail Shaw
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
 

so it can be marked as done.

Robert Cemper · Feb 9, 2018 go to post

did you consider that max could mean maximum allowed size   ?   while string max has no value.

Robert Cemper · Feb 9, 2018 go to post

#1) your subscript is just $i not $i(^%ARUNDTMP)  so we loose the full trace for multiple calls.
       but we have anyhow some trace.

#2) $isObject(%page)  = 0
      so there is NO object of your ZENpage available and access to %page.... must fail.

Hard to say why and where you loose %page
 

Robert Cemper · Feb 9, 2018 go to post

did you try ?

SET SQLQuery3 "{ call xxxx('aaaa') }"
SET tSC = ..Adapter.ExecuteProcedure(,,SQLQuery3)
Robert Cemper · Feb 8, 2018 go to post

Not sure if this is the real problem: Anyhow it is a problem.

   var result=this.BtnClickMe(MyPriority);   // here you expect a return value
    return;
}
ClassMethod BtnClickMe(MyPriority) as %String [ ZenMethod ]     // return something
{
 
  set ^%Arun($i(^%Arun))=$isObject(%page)    // JUST temporary for debugging // check for <INVALID OREF> 
    Set %page.%GetComponentById("Priority1").title=MyPriority
  quit $$$OK      // return something
}
Robert Cemper · Feb 8, 2018 go to post

funny observation:

2 fresh installed instances (ENS 2017, IRIS 2018) show Unauthenticated only

while the upgraded Caché 2016.2 shows me Unauthenticated and Password.
But can't remember the status of MgmtPortal at the time of upgrade.

Robert Cemper · Feb 8, 2018 go to post

Quite interesting on my WIN10_prof   I had no need of /S as I wante exactly THIS directory
And you are right. If the file exists already and is accessible nothing prevents you from modifying it.
You probably can't delete it as this requires access to directory.
And you are also right that ATTRIB doesn't propagate it.   
So I think the whole approach to check the directory is misleading.
Now we are back to the initial proposal.
Do an OPEN with timeout in this directory ("WN")  and on success you can write to the directory.
The test file can be removed by CLOSE file:"D"  if you didn't open with "WND" .

And it tells you can I write there YES/NO
And this is independent of any status and flags and don't know what in whatever filesystem I work on.
 

Robert Cemper · Feb 7, 2018 go to post

If you go in Atelier menu to Windows > Preferences
and in there to  General > Keys  you find the definition for Ctrl+right / Ctrl+left

This tells me it's deep embedded in Eclipse. But can be changed:

https://wiki.eclipse.org/FAQ_How_do_I_provide_a_keyboard_shortcut_for_m…

I found ~ 1800 keymaps on Eclipse Marketplace
and for MS Visual Studio keymap (which might be closest) still 83 hits.

To summarize: it's NOT a configuration issue as long as you don't have something ready to include.
It might take some time to find a useful one.
 

Robert Cemper · Feb 7, 2018 go to post

In Caché you typically work on objects but you can present them also as rows in an SQLtable.
The identifier for objects is IDKEY if you don't do it yourself it is assigned by Caché.
PrimaryKey is something you assign by your application.

Both are UNIQUE.
And if you define your PrimaryKey as Autoincrement  starting with 1 both are quite likely identical.

That's a basic view. IDKEY has far more variants to be found in documentation.

Robert Cemper · Feb 6, 2018 go to post

There is a solution using WIN command  attrib to check read only access flag.
It doesn't write files.
You are welcome to discuss about "elegance" .

 
    set dir=yourDirectory
    set dev="|CPIPE|"
    set cmd="attrib /d "
    set result=""
    open dev:(cmd_dir:"R"):0
    if $test use dev read result close dev
    if $piece($zstrip(result,"<>"," "),dir)["R" write "directory read only",!
    else  write "directory accessible"
,!
 
Robert Cemper · Feb 6, 2018 go to post

But $ZU(140,1,Directory) ALWAYS returns -5  "no access"

tested on Cache for Windows (x86-64) 2016.2

Robert Cemper · Feb 6, 2018 go to post

Your observation is correct.
I checked the underlying system call.
In Windows  {for me Win10} all you get back  is the flag ="isDirectory"
So you need to do the indirect check as described in the comments

Robert Cemper · Feb 6, 2018 go to post

You are right. Open Parameter should be "WN"
It is just an indirect test as OPEN on a directory fails with < NOTOPEN>
And it also fails if the file already exists and can be accessed.
 

Robert Cemper · Feb 5, 2018 go to post

corrected:

Set file="full file reference"
OPEN file:("WN"):0  Else  Write "write lock on file",!
Robert Cemper · Feb 5, 2018 go to post

You have to be aware that  you access the file by the rather high privileged account that Caché service is running in.
Have you blocked this account too ?
 

Robert Cemper · Feb 5, 2018 go to post

ZEN component  <datacombo has a parameter title  which is displayed on mouseover event of the browser

example out of SAMPLES/ Class ZENApp.HelpDesk 

Robert Cemper · Feb 5, 2018 go to post

Basically $c(1) s a NONPRINTING character - it has to be invisible by definition.

Instead of WRITE command use ZWRITE to visualize it or $TRANSLATE function to make it visible.

example:

USER>s ^rcc=$lts($lb(123,"abc",23432,"hak","uuk"),$c(1))
 

USER>w ^rcc
123abc23432hakuuk
USER>zw ^rcc
^rcc="123"_$c(1)_"abc"_$c(1)_"23432"_$c(1)_"hak"_$c(1)_"uuk"
USER>ZZDUMP ^rcc
0000: 31 32 33 01 61 62 63 01 32 33 34 33 32 01 68 61         123.abc.23432.ha
0010: 6B 01 75 75 6B                                          k.uuk
USER>write $TR(^rcc,$c(1),"*")
123*abc*23432*hak*uuk
USER>
Robert Cemper · Feb 3, 2018 go to post

OK if this Is outside you control you NEED a dirty trick.

Just before after the last Set Properties(....)  in ZAUTHENTICATE insert this line:

Kill %myProperties Merge %myProperties=Properties

to get a full copy of the array in %myProperties