PxPlus User Forum

Twitter Twitter Twitter

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Stéphane Devouard

Pages: [1] 2 3 ... 5
Language / Re: Writing Postgres tables
« on: July 10, 2021, 06:02:15 AM »

Since PxPlus does not provide a direct interface to PostgreSQL, you need to download and install the ODBC driver

The attached code connects to a database on the local machine using a DSN-less connection string

When run, it yields :
Code: [Select]



You can also insert to a table (very simple schema : an auto-increment id and a varchar description :
Code: [Select]
1:write record (pgdb)"insert into categories (category_name) values ('Friends')"
1:write record (pgdb)"select * from categories where category_id=3"

And update as well :
Code: [Select]
1:write record (pgdb)"update categories set category_name='Professional' where c
1:write record (pgdb)"select * from categories where category_id=2"

Thin Client/WindX / Re: MS Window Size
« on: July 05, 2021, 03:06:11 AM »

Could also be due to the location where WindX has been installed on each workstation.
If it is installed under "Program Files", the Windows security enforced on this system directory may prevent the interpreter from writing back to pvx.ini / pxplus.ini when exiting


Language / Re: *windev* and scheduled tasks
« on: June 17, 2021, 11:13:54 AM »
Then you should try to open a session as administrator account, run a ProvideX prompt, and try to open the *windev* device
If it yields an error 12, then it will yield the same error when running as a scheduled task

You may need to manually mount the shared printer / queue in your program with something like

Code: [Select]
invoke "net use ..."


Language / Re: *windev* and scheduled tasks
« on: June 17, 2021, 10:52:06 AM »

When running, the scheduled task will have the credentials of the user account you have set up for the task
If you use something like LocalSystem, then be aware that this user does not have any network access, which may explain the error 12 if your *windev* points to a shared printer device.


Nomads / Re: Displaying an Excel spreadsheet on a NOMADS panel
« on: June 06, 2021, 05:52:07 AM »

When you use the "Excel.Application" ProgID, you create as the name implies, an Excel application object
That is, you ask for an EXCEL.EXE executable to run, with its own user interface, that you can make visible with the 'Visible property

If you want to embed an Excel object on a panel of yours, you need to use either the "Excel.Addin" ProgID for a workbook, or "Excel.Sheet" for a simple worksheet

However, I haven't found any Load(), Open() or similar method to load data from an existing .xlsx file

Maybe others who have been more successful can chime in

Hope this helps


Programming / Re: Data mirroring to SQL server
« on: May 13, 2021, 02:55:53 AM »
How is the invoice type defined in the SQL database ?

If it is defined as varchar(1), I would try char(1) instead and see if that changes anything.

write(channel) may not tell you anything per se, however if you have issued :

Code: [Select]
SET_PARAM '!Q' = 1

Then it will tell you the exact SQL statement that is generated. There should be several statement generated, by the way. As you use WRITE(), the system does not know if the record exists or not, so it should try an INSERT first, and then an UPDATE if the INSERT fails.

You could also change your code and replace the WRITE () by something like :

Code: [Select]
IF newRecord = 1 THEN INSERT(...) ELSE UPDATE (...)

And see if that helps as well.

Web Services / Re: Custom content for http error responses
« on: March 26, 2021, 05:22:41 AM »

At my last PxPlus job, I wrote a web service for CRUd operations on the main resources in the system (vendors, customers, employees, jobs, etc...)
No actual Delete operations were allowed -- but an update operation setting the ACTIVE field to false was roughly equivalent to deleting a record ;)

I used the IIS CGI interface as the product was installed exclusively on Windows servers
Only GET & POST operations were initially available, and the payload / body part of the requests was XML

I reworked a second version of this stuff, but I don't think it has been deployed after I was let go

The second version was using the URL Rewrite module in IIS to redirect requests to a front-end controller using an URL pattern
GET https://www.myserver.com/api/customers becomes https://www.myserver.com/somefolder/restapi.pxp?route=/customers
POST https://www.myserver.com/api/customers/new becomes https://www.myserver.com/somefolder/restapi.pxp?route=/customers/new
PUT https://www.myserver.com/api/customers/010000 becomes https://www.myserver.com/somefolder/restapi.pxp?route=/customers/010000

Then the restapi.pxp front-end controller would parse the HTTP headers for authentication and authorization, the route$ CGI variable for the entity/resource identification, the payload as well as the HTTP method to call the appropriate CRUd routine and perform the database operation.

Hope this helps

Tips and Techniques / Re: Silent Installation
« on: January 26, 2021, 07:19:31 AM »

Wow, that's great.
Next question is : how do you extract the MSI from the executable ? Guess I need a copy of Installshield ?


Language / Re: Event handling
« on: January 15, 2021, 03:35:21 AM »

You can find some additional information here :

Basically :
- You define an event to be generated using the PROCESS EVENT directive, assigning a name and a list of arguments that will be passed to the event handler logic
- You assign an event handler using the ON PROCESS EVENT, specifying the name of the event to be handled and the name of a handler routine to CALL or PERFORM (there is an enhancement planned to be able to use also an object's method but it's not yet available)
- Whenever the event is triggered (the PROCESS EVENT is executed), the associated event handler is called/performed and passed the defined arguments as parameters

You would usually define the event handlers somewhere in the initialization logic of your application
You insert the event triggers in strategic locations in your application logic

This simplifies how you handle critical logic in your app with software changes as well as software customization.

No need to do search and replaces of critical CALLs throughout your application when your rename and rework them, just change the assigned event handler in one place.

Also, it makes easier to customize certain aspects of your app. Imagine you have created a special invoice printing program for a few clients instead of the standard one.
In your app logic you just have a
PROCESS EVENT "PrintInvoice",invoice_num$
Wherever an invoice is supposed to be printed.

In your initialisation logic you'll have
ON PROCESS EVENT "PrintInvoice" CALL "invoice.pxp;print_std" for all clients
ON PROCESS EVENT "PrintInvoice" CALL "invoice.pxp;print_special" for a few clients
The program name could even be stored in some parameter file, or whatever solution you see fit

Hope that helps.

Thin Client/WindX / Re: File links (.pxplus and .windx)
« on: December 22, 2020, 03:31:05 AM »
Hi Ashfaq,

A-hem...Looks like my VM registry was really messed up  :-[

I uninstalled each and every copy of the WindX plugin on the system, from the Uninstall option in the PVX Plus folder, and from the applications applet in the W10 settings. I also deleted any remaining folders.

I re-installed WindX 2019, checked the registry, then followed with WindX 2020, and the registry keys for the .windx extension were updated as expected.

Thanks for your help

Programming / Re: VS Code Extension for PxPlus
« on: December 16, 2020, 01:10:57 AM »
I have also been kicking around the idea of creating something for VS Code. Is there any interest in starting a project on GitHub so we can all contribute?

Count me in

I think I qualify as an oldie but I’ve always had a tendancy to use this little once-red X button in the upper right corner to close a window.

Well, as long as Alt+F4 still works...

Thin Client/WindX / File links (.pxplus and .windx)
« on: December 12, 2020, 02:51:39 AM »
Hey, it's me again...

Testing the .pxplus and .windx links extension

I have installed the WindX Plugin 2019 (pxp1620-0000-WPI.exe) on a Win10 VM to its default directory "C:\PVX Plus Technologies\Windx Plugin 2019 Upd 2"
I checked the .windx extension settings, which were pointing to the above directory

I then installed the WindX Plugin 2020 32-bits (pxp1710-0000-WPI.exe) to its default directory "C:\PVX Plus Technologies\Windx Plugin 2020 Upd 1"
In the registry, the .windx extension settings are still pointing to the WindX 2019 directory

Did I miss something or is there an issue with the installer ?


Programming / SVN hooks issue after PxPlus update
« on: December 09, 2020, 01:13:48 PM »

When I set up SVN, I had PxPlus 17.00 installed on my laptop

This afternoon, I overwrote my 17.00 copy with the 17.10 zip
From that point, the SVN update started to fail when opening a program in *IT, telling me there was an issue in the post-update hook.

I checked the two batch scripts and the path to PxPlus was C:\pvxsrc instead of my installation directory.

I’d suggest these batch scripts to be removed from the installation packages — or at least from the ZIP file

Thanks in advance

Wish List / WindX Plug-in silent install
« on: December 09, 2020, 12:50:56 PM »
Please allow the WindX Plug-in installer program to retrieve a custom installation directory from the command-line when run silently

See the following thread for more details : https://forum1.pvxplus.com/index.php?topic=98.0


Pages: [1] 2 3 ... 5