Andreas Pfeiffer
Forum Replies Created
-
Andreas Pfeiffer
AdministratorFebruary 6, 2023 at 9:41 am in reply to: Easy way to send library WITH database?Hello Uwe,
It is possible to store any binary information in the $userinfo of a class i.e.
Say you want to show a problem that occurs in a certain remote form with a data grid and you need to have your data in a list to show this. You can do the following:
1. Copy the remote form into a new library. You can do this using drag&drop.
2. Put a breakpoint in your original library after the data have been loaded into the list variable.
3. When the code stops at the breakpoint and the list is loaded add a line of code to copy the list into the $userinfo of the class that is in the other library:
Do $libs.newLibrary.$classes.myRemoteForm.$userinfo.$assign(iDataList)
Save class newLibrary.myRemoteForm
Note that we do not want to store the list data into the class of the current library. The command “save class” ensures that the change is written back to the hard drive. Alternatively you could have left the class open in design mode and hit the “save” button to save the class.
4. Finally comment out the code that loads the list in the remote form that is now in the new library and add a new line to it so that it copies the data from the $userinfo property of the class back into the list:
Calculate iDataList as $cinst.$class().$userinfo
You might need to add an empty remote task to make the remote form working in the new library. Also make sure to remove the line of code in your original library that copies the data over to the $userinfo property in the class of the other library.
5. Test if the remote form runs now from within the new library and if you are able to reproduce the original problem there.
I hope this helps!
Best regards,
Andreas
-
Andreas Pfeiffer
AdministratorDecember 20, 2022 at 8:32 am in reply to: Remove kill button from Forum entry formHello Uwe,
Thank you for reporting this issue. I have forwarded this to the web team. We will fix this.
Best,
Andreas
-
Andreas Pfeiffer
AdministratorDecember 21, 2022 at 9:48 am in reply to: Remove kill button from Forum entry formHello Uwe,
I just got told that the problem is fixed now.
Best,
Andreas
-
-
Hi Francesco,
It might be that the label and the entry field is grouped. To get its properties just ungroup those, please.
Best,
Andreas
-
Hello Franco,
If using a session pool you can use a public method to determine the port and database name. The 6th argument of the $makepool method takes the name of the method which will be called for every session in the session pool.
This method will then have a parameter of type item reference which points to the new session and you can then set its $port and any other session property.
However nowadays I would not recommend using session pools because creating a new session to a database is very quick and does not take much time. So if you do a logon in the $construct of your remote task using a task variable you will have a session object as a task variable that can then be used whenever you need it to talk to the database. Since the task is encapsulated for every user it is save to do so. For example I have a $logon method in the remote task that is called from its $construct like this (tSessionObj is a task variable of type object, you can assign the subtype if you do not need to set this dynamically):
# logon to PostgreSQL DB
Do $extobjects.PGSQLDAM.$objects.PGSQLSESS.$new() Returns tSessionObj
Do tSessionObj.$port.$assign(iniObj.$getSectionParam(‘DB’,’PORT’))
Do tSessionObj.$database.$assign(iniObj.$getSectionParam(‘DB’,’DATABASE’))
Do tSessionObj.$schema.$assign(iniObj.$getSectionParam(‘DB’,’SCHEMA’))
Do tSessionObj.$logon(iniObj.$getSectionParam(‘DB’,’HOST’),iniObj.$getSectionParam(‘DB’,’USER’,iniObj),iniObj.$getSectionParam(‘DB’,’PASSWORD’)) Returns ok
Quit method ok
Note: the iniObj returns information from a text file.
So in the $construct of your super table class you would do something like this:
Do $cinst.$sessionobject.$assign(tSessionObj)
Hope this helps.
Best,
Andreas 😀
-
Andreas Pfeiffer
AdministratorOctober 25, 2022 at 1:37 pm in reply to: Omnis Data Bridge Client-side connection managementHi Kon,
I would not recommend running the ODB server on a laptop machine for exactly this reason. As it is a server it supposed to stay available for the clients.
I hope this helps.
Best,
Andreas
-
This reply was modified 3 years, 1 month ago by
Andreas Pfeiffer.
-
This reply was modified 3 years, 1 month ago by
-
Andreas Pfeiffer
AdministratorOctober 24, 2022 at 2:25 pm in reply to: Omnis Data Bridge Client-side connection managementHello Kon,
what Omnis version and what ODB version are you using?
Best,
Andreas
-
Franco,
No worries. You have this documented here: https://www.omnis.net/developers/resources/onlinedocs/index.jsp?detail=Programming/09serv.html#notification-channels
Have a great day!
Best,
Andreas
-
Hello Franco,
Did you declare a parameter of type row in the $notify method? It should then have the payload as one of the values within that row.
I hope this helps,
Best regards,
Andreas
-
Hi Silvan,
ok – I did not know that you are working on fat client windows. Sorry.
You may want to use a timer object to achieve this. I would personally not use a toast message for this rather some kind of animation. There is also a sample app for this.
Hope this helps.
Best,
Andreas
-
.. and finally you can have another toast message in your loadList method that will come last.
Best,
Andreas
-
Hi Silvan,
Now I understand your requirement.
This is something that you can achieve using an overlay. There is a sample library “JS Loading Overlay” in the samples section of your HUB.
You can also achieve this using a toast message if you want:
1. Put your code that loads the data into another method (not the $event method that you use to load the data)
2. Make the $event method of your button that is used to load the data “client executed”. You can do this using the context menu onto the method name.
3. Then the first line in your $event method after the on evClick will be to start the toast message. After that you would then call your server side method using the “Do method” command.
I.E.
On evClick
Do $cinst.$clientcommand(‘showtoast’;row(‘loading’))
Do method loadList
So, since the $event method will now be executed on the client the toast message will appear first and then the data will be loaded on the Omnis server.
I hope this makes sense.
Best regards,
Andreas
-
Hello Silvan,
The reason why this happens might be that you run the code server side. Omnis automatically synchronises all instance variables in that instance with the client (browser). In that moment it will also send any client command to the browser. So in a way you would need to think asynchronously when it come to communication with the client.
What is the reason you want any other code after your message? Maybe I can help you finding a different approach to achieve what you want?
Best,
Andreas
-
Andreas Pfeiffer
AdministratorJuly 27, 2022 at 4:10 pm in reply to: Administrators please check thisHi Scotte,
Thanks for letting us know. I have deleted this user from this forum. We are currently about to clean this up.
Thanks again.
Best regards,
Andreas
-
No worries.
Have fun!
Best,
Andreas