This message means, that server-side Atelier API -- web-application /api/atelier -- is configured with only Unauthenticated access. So, even though you put Username/Password in Server connection dialog, they are cannot be used, as server-side configuration does not allow this.

To allow password authentication, open Management Portal, then go to Menu (top-left corner) -> Manage Web Applications -> [api/atelier].

Put checkbox near Password in "Allowed Authentication Methods". Save the web application

If Audit is enabled
and LoginFailure and Protect events are enabled
and there is no audit event recorded when you enter username/password and see error after clicking OK.

then I would say that connection attempt from Studio does not reach HealthShare.

Can you do telnet on port 1972 from the computer where you have Studio? Instead of server specify IP-address of server with HealthShare

C:\temp>telnet server 1972
  Connecting To server...

Nael,

I think you need to use 4th argument of $zconvert:

Set file=##class(%File).%New(..LocalFileName)
Do file.Open("R")
Set handle=""
While 'file.AtEnd { 
    Set Line=$ZCVT(file.Read() , "I", "UTF8", handle)
   // do something with Line
}
Do file.Close()

Handle "contains the remaining portion of string that could not be converted at the end of $ZCONVERT, and supplies this remaining portion to the next invocation of $ZCONVERT."

Please see reference for $zconvert

Thank you for sharing Mike.

Please notice that Dynamic SQL looks for the host variable in the global scope.

For example, consider following method:

Class Sample.Sqlbindtest [ Abstract ]
{

ClassMethod test()
{
     set minage = 80
 set myquery = 3
 set tStatement = ##class(%SQL.Statement).%New()
 set myquery(1) = "SELECT top 10 %ID AS id, Age , Name, %ODBCOUT(DOB) DOB, Home_State"
 set myquery(2) = "FROM Sample.Person WHERE Age > :minage"
 set myquery(3) = "ORDER BY 2"
 set qStatus = tStatement.%Prepare(.myquery)
 set tResult = tStatement.%Execute()
 do tResult.%Display()
}

}

The query will refer to minage variable defined at the variable scope outside of method itself:

SAMPLES>d ##class(Sample.Sqlbindtest).test()
id      Age     Name    DOB     Home_State

0 Rows(s) Affected

SAMPLES>set minage=20 // now we define minage

SAMPLES>d ##class(Sample.Sqlbindtest).test()
id      Age     Name    DOB     Home_State
41      21      Beatty,Emily I. 1997-01-21      ID
163     21      Mastrolito,David X.     1996-04-14      AL
32      22      Adam,Sophia V.  1995-12-12      CO
33      22      Xiang,Laura L.  1995-03-02      MN
87      22      Paladino,Violet P.      1995-09-14      MN
139     22      Goncharuk,Stavros D.    1996-01-24      RI
173     22      Zucherro,Dmitry R.      1995-03-28      AK
56      23      Zubik,Quigley N.        1994-03-26      ID
46      24      Rogers,Mo D.    1994-02-16      OR
142     24      Orwell,Zelda M. 1993-07-12      AL

10 Rows(s) Affected

Hi Chris.

As I understand %VID implies not the page number, but amount of rows to skip

So if you have pages with 10 records on each page and you need to show 3rd page then you should use

SELECT TOP (10) ...
 ...
WHERE %VID > 20 -- that is page number 2 multiplied by 10 

More info about %VID:
http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...