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.


Topics - Thomas Bock

Pages: [1] 2 3 ... 6
1
Programming / accessing mySQL-DB
« on: March 13, 2024, 11:19:19 AM »
We encounter problems with a newer version of libmariadb.so.3
PxPlus 20.10 is installed on a Linux server.
The program below runs with version 3.1.13 on a Linux server. With version 3.2.7 the result is empty and msg(-1) returns "MYSQL:0:".
Code: [Select]
begin
dbOpt$ = "SERVER=my_server;USER=my_account;PASSWORD=my_password;DATETIME_CONVERT=N"
dbName$ = "[MYSQL]my_database;;"
channel = hfn
open (channel, OPT = dbOpt$, tim = 10) dbName$
query$ = "SELECT * FROM `myTable` limit 1"
write record (channel)query$
gosub buildPVXIOList
repeat
read record(channel,err=*next)sqlResultItem$
if tcb(2) {
print msg(err)
print msg(-1)
break
}
print ++c,": ",sqlResultItem$
until 0
close( channel)
end
buildPVXIOList:
local sqlIOL$    = ken(channel, ind = 3)
local pvxIOL$    = "IOLIST "
local separator$ = $$
local items      = pos(";" = sqlIOL$, 1, 0)
local counter    = 0
local virtual    = 0
repeat
fieldDefinition$ = arg(sqlIOL$, counter + 1, ";")
read data from fieldDefinition$, sep = "," to fieldName$, fieldType$
fieldName$  = tbl(nul(fieldName$), fieldName$, "_VIRTUAL" + str(++virtual))
pvxIOL$    += separator$ + fieldName$
if (mid(fieldType$, 1, 3) = "CHR") or (fieldType$ = "DATE") {
pvxIOL$ += "$"
}
separator$ = ","
until (++counter > items)
pvxIOL$ = sub(pvxIOL$, "-", "_")
dim sqlResultItem$ : cpl(pvxIOL$)
return

What needs to be done in order to work with then newer version?

2
Wish List / constantly visible scrollbar buttons
« on: December 15, 2023, 07:22:06 AM »
With Windows 11 the scrollbar buttons are only visible, if the mouse hovers over them. This makes the buttons of a spinner control invisible. We like to have constantly visible scrollbars and/or buttons as it used to be. MS-Outlook shows it can be done.

3
Programming / create a pivot table
« on: November 30, 2023, 02:57:10 AM »
Has someone created a Pivot table with an average column so far?
I recorded a macro in MS-Excel

Code: [Select]
    With ActiveSheet.PivotTables("Pivot1").PivotFields("Percent")
        .Caption = "Average %"
        .Function = xlAverage
    End With

This is my translation to PxPlus
Code: [Select]
pivotName$ = "Pivot1"
fieldName$ = "Percent"
title$ = "Average %"
piTable = sheet'pivotTables(pivotName$)
piField = piTable'pivotFields(fieldName$)
piTable'addDataField(*piField)
lastItem = piTable'dataPivotField'pivotItems()'count
lastPiField = piTable'dataPivotField'pivotItems(lastItem)
lastPiField'caption$ = title$
piField'function = -4106 ! xlAverage

I always receive an error 88 on the last line.
The macro seems to be wrong, because the caption can only be set on lastPiField instead of piField.
Help is appreceated.

4
Programming / temporary error 11
« on: November 29, 2023, 02:50:34 AM »
On customer sites we encounter temporary error 11 on ky$=key(channel,kno=0,end=*next). When we try to reproduce the errors on these systems then the errors are gone. A change to "err=*next" is no option, because that would hide a corrupted file.

What is the reason for these errors 11?

5
Wish List / string interpolation
« on: November 15, 2023, 08:45:15 AM »
In C# there is the possibility to build strings by referencing/including variables.

Code: [Select]
string name = "Tom";
var date = DateTime.Now;
Console.WriteLine($"Hello, {name}! Today is {date.DayOfWeek}, it's {date:HH:mm} now.");

These strings are much more readable than coding a concatenation of several small strings. E.g. building a SQL-statement becomes more straight forward.
If PxPlus would provide such functionality, we could gain speed, because the interpreter would not need to translate several lines of code.

6
Programming / Access IOL variables as properties
« on: November 10, 2023, 05:03:32 AM »
I'm trying to save the variables of an iolist as a property with a dynamic approach. The purpose is to retrieve extermal parameters only once without the need to adjust anything when new parameters are introduced. So far I had no luck.

Here ist my class
Code: [Select]
def class "GetIOL" create required
property params$
function whatParams()
print "whatParams()"
print lst(iol(params$))
print sub(params$,sep,"~")
print params.name$
return 1
function end
end def
ON_CREATE:
call "GetIOL.pvc;FETCH_PARAMS", params$
print "ON_CREATE"
print lst(iol(params$))
print sub(params$,sep,"~")
print params.name$
return
FETCH_PARAMS:
enter p$
dim p$:iolist id$,name$,value
p.id$="ABC"
p.name$="XYZ"
p.value=42
exit

No variable arrives inside the object, though the iolist is constantly present.
I also tried static iol=iol(params$) and several other approaches. But everything failed.

This is my test program
Code: [Select]
begin
g=new("GetIOL")
g'whatParams()
delete object g
end

All suggestions are welcome.

7
Programming / performance of select record
« on: August 24, 2023, 10:20:36 AM »
So far we don't use "select record" a lot. I did some tests and found that it is slower than an old style read loop. I'm wondering why. As it knows all the keys I'm interested in including all conditions it should be much faster than any programmed logic.
I tested with a file constisting of 600,000 records and read all records from then second to the last but one using the primary key. All runs with "select record" needed 3 seconds longer than the old style read loop.

In my opinion it should be much faster.

8
Programming / Link File vs. Prefix File
« on: August 22, 2023, 09:25:38 AM »
As far as I understand the documentation both file types do the same. So what are the pros and cons? Which one is better when starting to use SQL-tables?

9
Thin Client/WindX / pxplus.exe as Citrix-App
« on: August 15, 2023, 08:22:40 AM »
Are there any known issues when running WindX as a Citrix-App?
A customer has 3 out of 300 users where the invocation string of pxplus.exe is truncated by 4 bytes.

10
Programming / update global functions at runtime
« on: August 04, 2023, 05:56:43 AM »
Each time we update global functions on a Windows system they don't work any more. PxPlus throws many types of errors depending on how the functions have changed. Here is what we do in order to update/reload the global functions:

Code: [Select]
bkpPC = prm('PC')
set_param 'PC' = 0
! do update actions
set_param 'PC' = bkpPC
drop pth("globalFunctions.pvx"), err = *next
call "globalFunctions.pvx" ! addr itself

What needs to be done for a successful update?

11
Programming / update global functions at runtime
« on: August 04, 2023, 05:55:13 AM »
Each time we update global functions on a Windows system they don't work any more. PxPlus throws many types of errors depending on how the functions have changed. Here is what we do in order to update/reload the global functions:

Code: [Select]
bkpPC = prm('PC')
set_param 'PC' = 0
! do update actions
set_param 'PC' = bkpPC
drop pth("globalFunctions.pvx"), err = *next
call "globalFunctions.pvx" ! addr itself

What needs to be done for a successful update?

12
Programming / corrupted journal files
« on: July 11, 2023, 08:10:14 AM »
Each time a record with a large text field is written to a file with active journalization, the current journal file becomes corrupted.
As we cannot predict the requested field length, we define such fields with a length of 100 bytes delimited and turn on "extended records". We must always lie about the length in such cases. PxPlus has no problems with file I/O to the data file. So the 100 bytes are a signal for the developer, that there may me much more bytes.
We expect the journal file to be written as properly as the data file. How can we avoid the problem?

13
Programming / Drag and Drop
« on: January 24, 2023, 01:28:48 AM »
I have a listbox containing filenames and want to drag a file from it to another non-PxPlus-application. How can I do that?

14
Nomads / cell editing
« on: July 28, 2022, 03:09:00 AM »
A customer wants to end cell editing with <ENTER> and move to the next editable cell according to the tabmode.
I tried:
Code: [Select]
preinput [next] $09$ ---> does nothing
preinput [next] -1015 ---> moves to next control
How can I achieve this?

15
Programming / ERR option ignored
« on: July 20, 2022, 10:42:32 AM »
For a few weeks we encounter a strange error 65 every now and then, when our programs create a COM object.
Code: [Select]
ON_CREATE:
def object outlook, "[LCL]Outlook.Application", err = *next
if not(tcb(2)) then nameSpace = outlook'getNameSpace("MAPI")
return
This has been a save way ever since. On the WindX side MSG(-1) returns "Exception occured (err/ret=2/0)"
According to Eric we should check for the object reference > 0. But I wonder why the err option is ignored in these cases.

Pages: [1] 2 3 ... 6