After un-install of my own python versions PY was still there in a different hidden and protected version unknown for me. I detected it using regedit C:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.12_3.12.2288.0_x64__qbz5n2kfra8p0\
I fail to explain where it came from (pre-installed win ?? ) Manual killing it and reinstallation of an official Python distribution fixed it.
Your file format doesn't fit, but you are close. UDL Header is missing, also leading blanks in the lines as you have no labels. And you have to switch to namespace %SYS and back to make it work.
ROUTINE DisplayDB[Type=INT]
new$namespacezn"%SYS"set db=##class(Config.Databases).DatabasesByServer("",.dbList)
for i=1:1:$LENGTH(dbList,",") {
set dbName= $PIECE(dbList,",",i)
write dbName,!
}
quit
Delete the routine rtnname. If the rtnname is not fully qualified we will resolve this into a fully qualified name first and then proceed with the rest of the delete. For example if you specify 'test' and there is a 'test.mac' it will resolve to this, if there was only a 'test.obj' it will resolve the name to this. The parameter flag specifies how much to delete. The options are:
0 - Delete entire routine, for a MAC routine this will delete MAC, INT, OBJ. For an INT routine it will delete INT and OBJ, for a INC routine it will only delete the INC, for a BAS routine it will delete the BAS and the OBJ code.
1 - Delete just the named routine, for example for a MAC routine it will only delete the MAC and it will leave the INT and OBJ if present.
2 - Delete all the source code but leave any OBJ code.
Take a look into OpenExchange there are 669 packages using Docker Which means at least 90% of them are running on the latest free Community Versions down loaded. I bet there are enough examples that fit your needs
| COL | VAL |
| ------ | --- |
| codRep | 401, 428, 428, 464, 472 |
| Abril | 100000, 180000, 160000, 0, 0 |
| Agosto | 100000, 350000, 200000, 90000, 0 |
ObjectScript
ObjectScript
then this is the SQL statement
SELECT'codRep'"COL", list($JUSTIFY(codRepresentante,10)) "VAL"FROM Ped.MetasRepresen where ano=2024Union All
SELECT' Abril', list($JUSTIFY(vendasAbril,10))
FROM Ped.MetasRepresen where ano=2024Union All
SELECT'Agosto', list($JUSTIFY(vendasAgosto,10))
FROM Ped.MetasRepresen where ano=2024
I understand that you want to have full control of your version Increment and Decrement eventually also more than just +1,-1 so VERSIONPROPERTY is a dead herring. BUT: You can achieve this in combination with a little SQL method.
Now you can set the increment to any %Integer of your choice. e.g. -1 decrement by 1, 1 increment by 1, 0 leave it
How to use it:
INSERTORUPDATE pck.myTable
SETname='Omer'WHERE pck.IncDec(-2)=1AND .... any other conditions ....
SQL
SQL
the IncDec SQLmethod is used as a static method it doesn't reference any row dependency So it is executed once before any row related processing. if you omit it then row_version is not changed
what you see as \x.... is the hex image of a $LB("SERVERA.FOO.BAR.ORG/STAGE", ......) try ZZDUMP of any $LB() and you see length + type + content \t is the misinterpretation of length x\09 my guess it's the hex_dump of some object
As you refer to CSP combined with a Steam I assume you have some similar sequence in you CSP page
<palign="center"><!-- The trick is the use the encrypted oid of the stream as the STREAMOID parameter to the stream server --><imagesrc="%25CSP.StreamServer.cls?STREAMOID=#(..Encrypt(oid))#"></p>
Almost 6 years back I wrote and article on data synchronization Using DSTIME and a related example in OEX. It is focussed on detecting and optimizing insert, change, delete of specified Tables/Classes and it takes care of processing cycles to avoid duplications. So the output might be minimized. Transmission speed to PostgreSQL is not part of the example
go to post
After un-install of my own python versions
PY was still there in a different hidden and protected version unknown for me.
I detected it using regedit
C:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.12_3.12.2288.0_x64__qbz5n2kfra8p0\
I fail to explain where it came from (pre-installed win ?? )
Manual killing it and reinstallation of an official Python distribution fixed it.
BIG THANKS for your advise and help-
go to post
Merci,
As noted I'm back to python 3.9.13. sys.path looks correct
the problem persists
message log shows:
NTFS error 126 indicates also a problem in DLL registry.
I used an official 64bit installer. Probably Pre-WIn11 design.
go to post
Thanks. but 3.9.13 was no improvement.
go to post
Your file format doesn't fit, but you are close.
UDL Header is missing, also leading blanks in the lines as you have no labels.
And you have to switch to namespace %SYS and back to make it work.
ROUTINE DisplayDB[Type=INT] new $namespace zn "%SYS" set db=##class(Config.Databases).DatabasesByServer("",.dbList) for i=1:1:$LENGTH(dbList,",") { set dbName= $PIECE(dbList,",",i) write dbName,! } quit
go to post
You may try this workaround just published in contest.
go to post
Try this from %Library.Routine:
https://docs.intersystems.com/iris20243/csp/documatic/%25CSP.Documatic.cls?LIBRARY=%25SYS&CLASSNAME=%25Library.Routine#Delete
with flag=2
classmethod Delete(rtnname As %String, flag As %String = 0, supressbackup As %Boolean = 0, nsp As %String = $namespace) as %Status
Delete the routine rtnname. If the rtnname is not fully qualified we will resolve this into a fully qualified name first and then proceed with the rest of the delete. For example if you specify 'test' and there is a 'test.mac' it will resolve to this, if there was only a 'test.obj' it will resolve the name to this. The parameter flag specifies how much to delete. The options are:
go to post
this fails with <ILLEGAL VALUE> if time part is negative (before 3AM)
go to post
I think SQL is correct.
The. problem is caused by INSERT or UPDATE
NVL() is not a synonym for $GET() we know from ObjectScript
go to post
Take a look into OpenExchange there are 669 packages using Docker
Which means at least 90% of them are running on the latest free Community Versions down loaded.
I bet there are enough examples that fit your needs
go to post
something like this ?
| COL | VAL | | ------ | --- | | codRep | 401, 428, 428, 464, 472 | | Abril | 100000, 180000, 160000, 0, 0 | | Agosto | 100000, 350000, 200000, 90000, 0 |
then this is the SQL statement
SELECT 'codRep' "COL", list($JUSTIFY(codRepresentante,10)) "VAL" FROM Ped.MetasRepresen where ano=2024 Union All SELECT ' Abril', list($JUSTIFY(vendasAbril,10)) FROM Ped.MetasRepresen where ano=2024 Union All SELECT 'Agosto', list($JUSTIFY(vendasAgosto,10)) FROM Ped.MetasRepresen where ano=2024
go to post
I understand that you want to have full control of your version
Increment and Decrement eventually also more than just +1,-1
so VERSIONPROPERTY is a dead herring.
BUT: You can achieve this in combination with a little SQL method.
Property RowVer As %Integer [ SqlComputeCode = { if $i({*},$g(%IncDec)) }, SqlComputed, SqlComputeOnChange = (%%INSERT, %%UPDATE) ]; ClassMethod IncDec(step As %Integer = 0) As %Boolean [ SqlName = IncDec, SqlProc ] { set %IncDec=step quit 1 }
Now you can set the increment to any %Integer of your choice.
e.g. -1 decrement by 1, 1 increment by 1, 0 leave it
How to use it:
INSERT OR UPDATE pck.myTable SET name='Omer' WHERE pck.IncDec(-2)=1 AND .... any other conditions ....
the IncDec SQLmethod is used as a static method
it doesn't reference any row dependency
So it is executed once before any row related processing.
if you omit it then row_version is not changed
go to post
the posted link is limited to HS licensed users only
HERE is an official public link: VERSIONPROPERTY
It does basically the same as my previous SqlComputeOnChange example
hidden and with less typing
go to post
I feel deeply honored and congratulate all other winning contributors!
🌟🌟🌟🌟🌟🌟🌟
go to post
what you see as \x.... is the hex image of a $LB("SERVERA.FOO.BAR.ORG/STAGE", ......)
try ZZDUMP of any $LB() and you see length + type + content
\t is the misinterpretation of length x\09
my guess it's the hex_dump of some object
go to post
Calculated doesn't do it.
BUT;
[ SqlComputed, SqlComputeOnChange = (%%INSERT, %%UPDATE) ]
go to post
Yes i! I'm quite sure!
DSTIME was introduced with or short after release of DeepSee more
than a decade back and didn't change.
go to post
you have to add you own RowVersion property.
my example only increases the version if there was a any change in the row.
Property RowVer As %Integer [ SqlComputeCode = { if $i({*}) }, SqlComputed, SqlComputeOnChange = (%%INSERT, %%UPDATE) ];
works for SQL- and Object-mode
go to post
As you refer to CSP combined with a Steam I assume
you have some similar sequence in you CSP page
<p align="center"> <!-- The trick is the use the encrypted oid of the stream as the STREAMOID parameter to the stream server --> <image src="%25CSP.StreamServer.cls?STREAMOID=#(..Encrypt(oid))#"> </p>
Docs for StreamServer
That's where your stream is dumped to browser
go to post
Almost 6 years back I wrote and article on data synchronization
Using DSTIME and a related example in OEX.
It is focussed on detecting and optimizing insert, change, delete of specified Tables/Classes
and it takes care of processing cycles to avoid duplications.
So the output might be minimized.
Transmission speed to PostgreSQL is not part of the example
go to post
like this:
/// using $ZZFIX() custom function Class rcc.GetFixZZ Extends %Library.String { Parameter LENGTH As %String = 10; Parameter ALIGN As %String = "LEFT"; Parameter PADCHAR As %String = " "; Method Get() As %String [ CodeMode = generator, ServerOnly = 1 ] { set code=+%parameter("LENGTH")_","""_$E(%parameter("PADCHAR")_" ",1)_"""" set code=code_","_("RIGHT"=$zcvt(%parameter("ALIGN"),"U"))_")" $$$GENERATE(" quit $ZZFIX(%val,"_code ) QUIT $$$OK } ClassMethod StorageToLogical(%val As %String) As %String [ CodeMode = generator, ServerOnly = 1 ] { set code=+%parameter("LENGTH")_","""_$E(%parameter("PADCHAR")_" ",1)_"""" set code=code_","_("RIGHT"=$zcvt(%parameter("ALIGN"),"U"))_")" $$$GENERATE(" quit $ZZFIX(%val,"_code ) QUIT $$$OK } }