Beta Testing Overview

Hi Jim,

PanX 10.2 is working very well. I have a few minor issues, which could be entirely due to my programming. Sometimes I find blank rows in a database and I don’t know how they were created. I added a button to a couple of DBs to delete the blank rows; not a big deal. Also, we have occasionally had someone out of sync with the server and downloading the data was necessary. Again, I don’t know how that happened. We have the occasional crash, but most of the DBs are quite stable. I have asked people to tell me any time there is a crash, since I want to eliminate them, but I have had almost no reports.

I recently shared our largest database, with over 70,000 records. It is used daily and has many complex procedures. So far, so good. Some operations are noticeably slower, which was not a surprise. I discovered that you cannot use removeselected statement once a DB is share; why is that? To delete a group of records, I wrote a loop to delete them one at a time.

I did a major overhaul of one of our oldest databases, which we have just started using in PanX. The database had over 230 fields. This is because the DB is used to generate forms in worker’s compensation cases. There are lots of discrete pieces of information on the forms; one form had over 50 unique pieces of data. The overhaul put the unique data for each form into a dataarray, which is stored in a binary field. That required a lot of steps and programming, but they are all working, and the database now has 118 fields.

I plan to move the last four people from Pan6 to PanX on next Monday.

Do you have a date for the next release? Just curious; nothing is necessary at the moment.

I saw a note that you are adding beta testers before long. I hope that goes well.

I wrote my own wizard for the GetTextDialog statement. I posted it below in case you are curious about what I did, along with a screenshot of the form that works with the procedure. The first part opens the form and initializes the variables. The second part builds the code and puts in on the clipboard so one can just paste it into the procedure you are working on.



letfileglobal fgoutput=“lvoutput”
letfileglobal fgprompt=“Please enter …”
letfileglobal fgsubprompt=""
letfileglobal fgbutton1=“Ok”
letfileglobal fgbutton2=“Cancel”
letfileglobal fgbutton3=""
letfileglobal fgsheet=“Y”
letfileglobal fgwidth=300
letfileglobal fgheight=24
letfileglobal fgabortbutton=""

openform “GTDWiz”

showvariables fgoutput,fgprompt, fgsubprompt,fgbutton1, fgbutton2, fgbutton3, fgsheet,fgwidth,fgheight,fgabortbutton

objectaction “OutputVariable”,“open”




if sizeof(“fgoutput”)=0 Alertsheet “Enter the variable name please.” objectaction “OutputVariableokay”,“open” rtn endif

if sizeof(“fgprompt”)=0 Alertsheet “Enter the prompt please.” objectaction “GTDPrompt”,"open"rtn endif


let fgcode={let }+fgoutput+{=""}+cr()+{Gettextdialog }+fgoutput+{,}+cr()+tab()+{“Prompt”, “}+fgprompt+{”,}+cr()+tab()+{“Subprompt”,"}+fgsubprompt+{",}+cr()+tab()+{“Button”,"}+fgbutton1+{",}+cr()+tab()+{}+{"}+?(fgabortbutton=“Y”,“Abort”,"")+{Button","}+fgbutton2+{",}+cr()+tab()+{“Button”,"}+fgbutton3+{",}+cr()+tab()+{“Sheet”,“Yes”,}+cr()+tab()+{“Width”,}+fgwidth+{,}+cr()+tab()+{“Height”, }+fgheight+cr()+

?(fgabortbutton≠"Y",{if info(“dialogtrigger”)=“Cancel”}+cr()+tab()+tab()+{rtn}+cr()+tab()+{endif},{})


nsnotify “Paste your code into our procedure…”

undefine fgoutput,fgprompt, fgsubprompt,Button1, Button2, Button3, fgsheet,fgwidth,fgheight,fgabortbutton



execute {let }+fgoutput+{=""}+cr()+{Gettextdialog }+fgoutput+{,}+cr()+tab()+{“Prompt”, “}+fgprompt+{”,}+cr()+tab()+{“Subprompt”,"}+fgsubprompt+{",}+cr()+tab()+{“Button”,"}+fgbutton1+{",}+cr()+tab()+{}+{"}+?(fgabortbutton=“Y”,“Abort”,"")+{Button","}+fgbutton2+{",}+cr()+tab()+{“Sheet”,“Yes”,}+cr()+tab()+{“Width”,}+fgwidth+{,}+cr()+tab()+{“Height”, }+fgheight+cr()+

?(fgabortbutton≠"Y",{if info(“dialogtrigger”)=“Cancel”}+cr()+tab()+tab()+{rtn}+cr()+tab()+{endif},{})


This was also true in Panorama 6 Server. It was a deliberate decision. In my opinion, it should not be that easy to delete a huge chunk of a shared database. Maybe it could be done with some sort of threshold, only up to 1% of the database or something like that. Something to consider down the road.

No date yet. I am actually working furiously on a surprise new feature that I think is going to be the signature new feature of Panorama 10.2, other than the server. I wasn’t planning this but inspiration struck and I decided to strike while the inspiration was hot. Sorry for the tease, but I am super excited. More soon.

I guess I’m not the only one that’s been inspired recently! Looks cool!