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 - PxPlus

Pages: 1 ... 3 4 [5] 6 7
61
Video Library / Using PxPlus Embedded query buttons
« on: June 15, 2018, 09:36:18 AM »
This video provides and overview as to how you create embedded query buttons with PxPlus.


62
Video Library / Enhancing your existing UI
« on: June 15, 2018, 09:31:59 AM »
This video provides and overview as to how you can take a dated looking graphical interface and adapt it to a newer more modern look.


63
Video Library / Re: Five part Live in 30 Demo
« on: June 15, 2018, 09:28:47 AM »
Part 5 - Bells and Whistles
In this section we will adding product sales information and charting to the application.



64
Video Library / Re: Five part Live in 30 Demo
« on: June 15, 2018, 09:21:49 AM »
Part 4 - The Global template
In this section we will define an iNomads template called 'Global' which we will apply to the application in order to enhance its web appearance.



65
Video Library / Re: Five part Live in 30 Demo
« on: June 15, 2018, 09:19:30 AM »
Part 3 - On the Web
In this section we setup the application within iNomads and run it on a browser.



66
Video Library / Re: Five part Live in 30 Demo
« on: June 15, 2018, 09:16:28 AM »
Part 2 - The Application
In this section we convert and load the spreadsheet data into a PxPlus table then create a file maintenance program to manage it.


67
Video Library / Five part Live in 30 Demo
« on: June 15, 2018, 09:14:08 AM »
Part 1 - Introduction
This is the introduction to the Live in 30 Demonstration that shows you how to take data from a spreadsheet into a online web application is around 30 minutes using PxPlus.

The demo is broken in to 5 parts to make viewing easier


68
Using the Forum / Setting up RSS Feed
« on: June 06, 2018, 02:00:23 PM »
RSS (Rich Site Summary) is a format for delivering regularly changing web content. RSS will allow you to easily stay informed by retrieving the latest posts from our forum. A variety of RSS Readers are available for different platforms. 

You are welcome to explore all the various options available. Below, we have included links to show you how to setup three of the more popular choices.


Outlook:
https://support.office.com/en-us/article/Add-an-RSS-Feed-0b91cfc4-0efc-4d11-be28-9a5da2382347
Thunderbird: 
https://support.mozilla.org/en-US/kb/how-subscribe-news-feeds-and-blogs
Firefox:
https://www.lifewire.com/firefox-live-bookmark-3486642

69
Using the Forum / How to Sign Up for the Forum?
« on: June 06, 2018, 01:34:19 PM »
Signing up to the forum is very easy. Follow these quick steps:
Note: You must be at least 18 years old to be able to sign up for the forum

  • Click on Register

  • Read through the Terms of Agreement

  • If you agree to those and are at least 18 years old, Click on "I accept the terms of the agreement and I am at least 18 years old."

  • Setup your profile
    • Username: chose a name to identify you on the forum
      Keep in mind that your username will be visible to everyone
    • Email address: must be a valid email address
      It will be used for registration and notification purposes. It will not be displayed to anyone else.
    • Allow users to email me: check this box only if you want to allow other members to email you directly
    • Choose & Verify password: this will be used to logon to the forum
    • Verification: to avoid spammers, please type in the letters shown on the screen
    • Privacy Policy: read and accept the Privacy Policy

  • Once you have entered the required information, press the Register button.  A message will appear notifying you that your registration must be approved and that you will receive an email with the administrator’s decision.

  • Please wait for the approval from the administrator.

  • Once it is approved, you will receive an email, to email address provided, with a confirmation.
You are now ready to start using the forum!  You also have the option to add additional information and/or update your preferences under Profile.

Note:
If you decide to delete your account and would like all your posts deleted from the forum, please email us at info@pvxplus.com and we will take care of that for you.
If you wish to delete your account without deleting the posts, then you can delete your account on your own.


70
FAQs / How to format text when using *web\email
« on: June 01, 2018, 05:11:09 PM »
When using *web\email you can use "text/html" as the parameter and if you do so you need to enter everything in HTML format so let's say you want to add a new line, you would use <br>

Alternatively you can use "text/plain" or leave that parameter blank and it would default it to "text/plain" and if you use this, you enter everything in plain text so a new line in this case would be $0a$

71
Tips and Techniques / Printing Code 128 bar codes
« on: June 01, 2018, 04:19:07 PM »
While most bar codes can be printed using a font, Code 128 bar codes are special in that the data requires a check digit to be added to the output.
A few years ago a program to produce Code 128 was submitted to our mailing list by Chris Kukuchka of Sequoia Group which we have updated and posted below.

Code: [Select]

 ! code128 - Outputs graphical bar code symbol code 128 thru *WINPRT*
 !
 ! Originaally created 01/31/2005 by Chris Kukuchka, Sequoia Group, Inc.
 ! Updated 05/31/2018 by PVX Plus Technologies Ltd.
 !
 ! For unlimited distribution without warranty and free of charge.
 !
 ! CALL "code128", Channel, Text$, xPos, yPos, High, Scale
 !
 ! Where:
 !
 ! Channel   = channel to direct output (open *WINPRT*/PDF file)
 ! Text$     = string to output as barcode
 ! xPos,yPos = graphical location to place barcode
 ! High      = # of Graphical units high
 ! Dots      = # of Graphical units wide per bar for thin line (Integer)
 !
  if stk(properties)="" \
   then goto Demo ! Simple run of program does a test
 !
 CODE128:
  enter Channel,(Text$),xPos,yPos,High,Scale
 !
  if len(Text$)=0 or High<1 or Scale<1 \
   then exit
 !
  Bytes$="",ShiftCode$=chr(98)
 !
  for I=1 to len(Text$)
  J=asc(Text$(I,1))
  if J<32 \
   then Bytes$+=ShiftCode$+chr(J+64) \
   else if J<128 \
         then Bytes$+=chr(J-32)
  next I
 !
  Margin=Scale*10
  BarWidth=(11*len(Bytes$)+35)*Scale
  High=max(High,BarWidth*.15)
  print (Channel)'pen'(0,1,0),'fill'(1,7),
  print (Channel)'rectangle'(xPos-Margin,yPos,xPos+Margin+BarWidth,yPos-High),
  print (Channel)'pen'(1,1,0),'fill'(1,0),
  CheckDigit=0
  for I=1 to len(Bytes$)
  CheckDigit+=I*asc(Bytes$(I,1))
  next I
  CheckDigit=mod(104+CheckDigit,103)
  Bytes$=chr(104)+Bytes$+chr(CheckDigit)+chr(106)
 !
  dim Patterns$[0:255] ! Max is 255 characters
  for I=0 to 255
  read data Patterns$[I],end=*break
  next I
 !
  for I=1 to len(Bytes$)
  ChrPattern$=Patterns$[asc(Bytes$(I,1))]
  if ChrPattern$="" \
   then continue
 !
  for J=1 to len(ChrPattern$)
  CurBarWide=num(ChrPattern$(J,1))*Scale
  if mod(J,2)=1 \
   then print (Channel)'rectangle'(xPos,yPos,xPos+CurBarWide,yPos-High),
  xPos+=CurBarWide
  next J
 !
  next I
 CODE128_DONE:
  exit
 !
 ! Code 128 data
 !
  data "212222" ! Set  A: (SPACE ) B: (SPACE ) C: (  00  )
  data "222122" ! Set  A: (  !   ) B: (  !   ) C: (  01  )
  data "222221" ! Set  A: (  "   ) B: (  "   ) C: (  02  )
  data "121223" ! Set  A: (  #   ) B: (  #   ) C: (  03  )
  data "121322" ! Set  A: (  $   ) B: (  $   ) C: (  04  )
  data "131222" ! Set  A: (  %   ) B: (  %   ) C: (  05  )
  data "122213" ! Set  A: (  &   ) B: (  &   ) C: (  06  )
  data "122312" ! Set  A: (  '   ) B: (  '   ) C: (  07  )
  data "132212" ! Set  A: (  (   ) B: (  (   ) C: (  08  )
  data "221213" ! Set  A: (  )   ) B: (  )   ) C: (  09  )
  data "221312" ! Set  A: (  *   ) B: (  *   ) C: (  10  )
  data "231212" ! Set  A: (  +   ) B: (  +   ) C: (  11  )
  data "112232" ! Set  A: (  ,   ) B: (  ,   ) C: (  12  )
  data "122132" ! Set  A: (  -   ) B: (  -   ) C: (  13  )
  data "122231" ! Set  A: (  .   ) B: (  .   ) C: (  14  )
  data "113222" ! Set  A: (  /   ) B: (  /   ) C: (  15  )
  data "123122" ! Set  A: (  0   ) B: (  0   ) C: (  16  )
  data "123221" ! Set  A: (  1   ) B: (  1   ) C: (  17  )
  data "223211" ! Set  A: (  2   ) B: (  2   ) C: (  18  )
  data "221132" ! Set  A: (  3   ) B: (  3   ) C: (  19  )
  data "221231" ! Set  A: (  4   ) B: (  4   ) C: (  20  )
  data "213212" ! Set  A: (  5   ) B: (  5   ) C: (  21  )
  data "223112" ! Set  A: (  6   ) B: (  6   ) C: (  22  )
  data "312131" ! Set  A: (  7   ) B: (  7   ) C: (  23  )
  data "311222" ! Set  A: (  8   ) B: (  8   ) C: (  24  )
  data "321122" ! Set  A: (  9   ) B: (  9   ) C: (  25  )
  data "321221" ! Set  A: (  :   ) B: (  :   ) C: (  26  )
  data "312212" ! Set  A: (  ;   ) B: (  ;   ) C: (  27  )
  data "322112" ! Set  A: (  <   ) B: (  <   ) C: (  28  )
  data "322211" ! Set  A: (  =   ) B: (  =   ) C: (  29  )
  data "212123" ! Set  A: (  >   ) B: (  >   ) C: (  30  )
  data "212321" ! Set  A: (  ?   ) B: (  ?   ) C: (  31  )
  data "232121" ! Set  A: (  @   ) B: (  @   ) C: (  32  )
  data "111323" ! Set  A: (  A   ) B: (  A   ) C: (  33  )
  data "131123" ! Set  A: (  B   ) B: (  B   ) C: (  34  )
  data "131321" ! Set  A: (  C   ) B: (  C   ) C: (  35  )
  data "112313" ! Set  A: (  D   ) B: (  D   ) C: (  36  )
  data "132113" ! Set  A: (  E   ) B: (  E   ) C: (  37  )
  data "132311" ! Set  A: (  F   ) B: (  F   ) C: (  38  )
  data "211313" ! Set  A: (  G   ) B: (  G   ) C: (  39  )
  data "231113" ! Set  A: (  H   ) B: (  H   ) C: (  40  )
  data "231311" ! Set  A: (  I   ) B: (  I   ) C: (  41  )
  data "112133" ! Set  A: (  J   ) B: (  J   ) C: (  42  )
  data "112331" ! Set  A: (  K   ) B: (  K   ) C: (  43  )
  data "132131" ! Set  A: (  L   ) B: (  L   ) C: (  44  )
  data "113123" ! Set  A: (  M   ) B: (  M   ) C: (  45  )
  data "113321" ! Set  A: (  N   ) B: (  N   ) C: (  46  )
  data "133121" ! Set  A: (  O   ) B: (  O   ) C: (  47  )
  data "313121" ! Set  A: (  P   ) B: (  P   ) C: (  48  )
  data "211331" ! Set  A: (  Q   ) B: (  Q   ) C: (  49  )
  data "231131" ! Set  A: (  R   ) B: (  R   ) C: (  50  )
  data "213113" ! Set  A: (  S   ) B: (  S   ) C: (  51  )
  data "213311" ! Set  A: (  T   ) B: (  T   ) C: (  52  )
  data "213131" ! Set  A: (  U   ) B: (  U   ) C: (  53  )
  data "311123" ! Set  A: (  V   ) B: (  V   ) C: (  54  )
  data "311321" ! Set  A: (  W   ) B: (  W   ) C: (  55  )
  data "331121" ! Set  A: (  X   ) B: (  X   ) C: (  56  )
  data "312113" ! Set  A: (  Y   ) B: (  Y   ) C: (  57  )
  data "312311" ! Set  A: (  Z   ) B: (  Z   ) C: (  58  )
  data "332111" ! Set  A: (  [   ) B: (  [   ) C: (  59  )
  data "314111" ! Set  A: (  \   ) B: (  \   ) C: (  60  )
  data "221411" ! Set  A: (  ]   ) B: (  ]   ) C: (  61  )
  data "431111" ! Set  A: (  ^   ) B: (  ^   ) C: (  62  )
  data "111224" ! Set  A: (  _   ) B: (  _   ) C: (  63  )
  data "111422" ! Set  A: ( NUL  ) B: (  '   ) C: (  64  )
  data "121124" ! Set  A: ( SOH  ) B: (  a   ) C: (  65  )
  data "121421" ! Set  A: ( STX  ) B: (  b   ) C: (  66  )
  data "141122" ! Set  A: ( ETX  ) B: (  c   ) C: (  67  )
  data "141221" ! Set  A: ( EOT  ) B: (  d   ) C: (  68  )
  data "112214" ! Set  A: ( ENQ  ) B: (  e   ) C: (  69  )
  data "112412" ! Set  A: ( ACK  ) B: (  f   ) C: (  70  )
  data "122114" ! Set  A: ( BEL  ) B: (  g   ) C: (  61  )
  data "122411" ! Set  A: (  BS  ) B: (  h   ) C: (  72  )
  data "142112" ! Set  A: (  HT  ) B: (  i   ) C: (  73  )
  data "142211" ! Set  A: (  LF  ) B: (  j   ) C: (  74  )
  data "241211" ! Set  A: (  VT  ) B: (  k   ) C: (  75  )
  data "221114" ! Set  A: (  FF  ) B: (  l   ) C: (  76  )
  data "413111" ! Set  A: (  CR  ) B: (  m   ) C: (  77  )
  data "241112" ! Set  A: (  SO  ) B: (  n   ) C: (  78  )
  data "134111" ! Set  A: (  SI  ) B: (  o   ) C: (  79  )
  data "111242" ! Set  A: ( DLE  ) B: (  p   ) C: (  80  )
  data "121142" ! Set  A: ( DC1  ) B: (  q   ) C: (  81  )
  data "121241" ! Set  A: ( DC2  ) B: (  r   ) C: (  82  )
  data "114212" ! Set  A: ( DC3  ) B: (  s   ) C: (  83  )
  data "124112" ! Set  A: ( DC4  ) B: (  t   ) C: (  84  )
  data "124211" ! Set  A: ( NAK  ) B: (  u   ) C: (  85  )
  data "411212" ! Set  A: ( SYN  ) B: (  v   ) C: (  86  )
  data "421112" ! Set  A: ( ETB  ) B: (  w   ) C: (  87  )
  data "421211" ! Set  A: ( CAN  ) B: (  x   ) C: (  88  )
  data "212141" ! Set  A: (  EM  ) B: (  y   ) C: (  89  )
  data "214121" ! Set  A: ( SUB  ) B: (  z   ) C: (  90  )
  data "412121" ! Set  A: ( ESC  ) B: (  {   ) C: (  91  )
  data "111143" ! Set  A: (  FS  ) B: (  |   ) C: (  92  )
  data "111341" ! Set  A: (  GS  ) B: (  }   ) C: (  93  )
  data "131141" ! Set  A: (  RS  ) B: (  ~   ) C: (  94  )
  data "114113" ! Set  A: (  US  ) B: ( DEL  ) C: (  95  )
  data "114311" ! Set  A: (FNC 3 ) B: (FNC 3 ) C: (  96  )
  data "411113" ! Set  A: (FNC 2 ) B: (FNC 2 ) C: (  97  )
  data "411311" ! Set  A: (SHIFT ) B: (SHIFT ) C: (  98  )
  data "113141" ! Set  A: (CODE C) B: (CODE C) C: (  99  )
  data "114131" ! Set A: (CODE B) B: (FNC 4 ) C: (CODE B)
  data "311141" ! Set A: (FNC 4 ) B: (CODE A) C: (CODE A)
  data "411131" ! Set A: (FNC 1 ) B: (FNC 1 ) C: (FNC 1 )
  data "211412" ! START (Code A)
  data "211214" ! START (Code B)
  data "211232" ! START (Code C)
  data "2331112" ! STOP
 !
 Demo:
  open (hfn)"[lcl]*winprt*";
  Channel=lfo
 !
  call pgn+";code128",(Channel),"123456",200,200,50,2
 !
  close (Channel)
 !
  end


72
There are three special mnemonics that come into place with a file is closed:
  • *X - Contains the name of a program, with optional entry point, to call prior closure.  This program can use LFA to find the handle of the file being closed.
  • *C - Contains a string of data that will be output to the file prior closure.  This will NOT be sent to a Windows printer (*WINPRT*) unless opened in raw mode (*WINDEV*). 
  • *R - Contains an OS command line to INVOKE after the file is fully closed.  Generally this would be to used to send the file to the OS spooling system or elsewhere such as email.
When a file is closed the system will look for the existence of these mnemonics and, if defined, will process them in the order defined above.

These may all be defined using the MNEMONIC directive.
https://manual.pvxplus.com/page/directives/mnemonic.htm



73
If, by chance, the ODBC IO dies and you try to restart it you may get an error message indicating that shared memory is in use already.

While this can be cleared by rebooting, you may be able to manuually clear it yourself.

First off make ABSOLUTELY sure the process is not running as what you about to do is effectively overriding the logic used to make sure only a single instance is in the system at any time.

Once you have assured yourself of the above you should remove the pvxiosvr.pid file which identifies the process that was the IO server.

Next you may also need to deal with the "Shared Memory Segments" and the "Semaphore Arrays".

To see if they are still registered, use the "ipcs -m" for the shared
memory and "ipcs -s" for the semaphore ID. Once you have identified the
shared memory location and semaphore, use the command "ipcrm -m" and
"ipcrm -s" with the appropriate id value to remove them.
Eg.

 [root@rhel4-x86mikep pvxiosvr]# ipcs -m
 ------ Shared Memory Segments --------
 key shmid owner perms bytes nattch status
 0x00000000 131072 root 600 393216 2 dest
 0x00000000 163841 root 600 393216 2 dest
 0x00000000 196610 root 600 393216 2 dest
 0x00000000 229379 root 777 393216 2 dest
 0x00000000 262148 root 600 393216 2 dest
 0x00000000 294917 root 600 393216 2 dest
 0x00000000 327686 root 600 393216 2 dest
 0x00000000 360455 root 600 393216 2 dest
 0x00000000 557064 root 600 393216 2 dest
 0x0041083f 589833 root 660 8192 0
 0x00000000 458762 root 600 393216 2 dest
 0x00000000 491531 root 600 393216 2 dest

Using the value of the shared memory ID namely 589833 use the "ipcrm -m"
with the ID to remove it.
 
 [root@rhel4-x86mikep pvxiosvr]# ipcrm -m 589833
 
Use the "ipcs -s" to find the semiphore ID.

 [root@rhel4-x86mikep pvxiosvr]# ipcs -s

 ------ Semaphore Arrays --------
 key semid owner perms nsems
 0x00184948 131072 root 660 1

Using the semiphore ID namely 131072 use the "ipcrm -s" with the ID to
remove it.

 [root@rhel4-x86mikep pvxiosvr]# ipcrm -s 131072

Please note that ProvideX uses key value "0x0041083f" for the shared
memory, and "00x00184948" for the semaphore. 

74
Tips and Techniques / How to override internal NOMADS panels
« on: May 31, 2018, 11:27:44 AM »
From time to time you may want to override the panel layouts used by Nomads or any other standard ProvideX/PxPlus panels. For example you might want to suppress certain menu options or add other options to a panel.

While you could directly modify the standard application, this often leads to problems when the software gets updated or other patches get applied.

There is a simple technique that can be used to override *ANY* Nomads panel request and allow you to substitute one of your own making.

Both NOMADS and iNomads check for the presence of the global variable

  %NOMADS_PROCESS$

This variable can be set with the name of a program (and optional label) of sub-routine to be called whenever a Nomads panel is about to be PROCESSed. The routine is passed two parameters: the panel name and the library name and can change these as desired.

This functionality allows you to redirect any NOMADS panel call to any library of your own choosing.

Obviously you need to make sure that your replacement panel will handle any/all ARG_nn$ consistent with the original panel.

75
By default when PxPlus is run on Windows a 'Splash Screen' is displayed.  This splash screen indicates the version of the product and who the license is registered to.

The splash screen is only displayed if there is no lead program specified on the command line which is normally the case when running an application.  Should you want to suppress the splash screen even when not running a lead program simply specify "" as your lead program.  This will suppress the splash screen but drop to normal command mode as if no lead program was provided.



Pages: 1 ... 3 4 [5] 6 7