I jkust tried my last proposal to go for cursoradapter, and with the SQL Native Client Driver used in conjunction with cursoradapter.lusecursorschema=.T. with a scheme containing Q

or W fields, this works out fine and retrieves unicode into varbinary or blob fields you then can use as data source for unicode controls.
Sys(987,.f.) or Sys(987,.t.) still makes no difference then, so this makes me stil wonder how sys(987) makes unicode data easier to cope with for Rick Strahl.
Nevertheless that is what I would suggest using now:
1. Using SQL Native Client driver
2. Using Cursoradapters with cursor schema
3. Using schema containing varbinary=Q

for nchar/nvarchar and and Blob=W fields for nvarchar(max) fields.
4. Setting ActiveX control properties via these binary fields, this prevents any automatic conversion, no need for createbinary() or cast(), not even within SQL-Selects.
5. Sys(3101,65001) for retrieving UTF-8 from ActiveX controls
6. Strconv(Activex.proeperty,12) to convert UTF-8 coming from ActiveX back to Unicode, this step is needed nevertheless.
And then writing back to sql server simply is Tableupdate() of the cursoradapter cursor.
Bye, Olaf.