/ 30-Day Free Trials / Site Map / About Us / Contacts & links / Products / Demonstrations / Home page /
![]() |
PixieEditor Documentation |
Chapter 1 - Overview (this document)
Chapter 2 - To install, configure and test-run
Chapter 4 - Batch-Submit web apps and Example PX2
Appendix 1 - Technical Reference: PixieEngine Functions and Data Transfer
Appendix 2 - PxEngWeb interface for some Web Apps and COM Clients
PixieEngine configures various database engines, eg 'MySQL', 'MS SQL SERVER',
'ORACLE', 'MS JET/ACCESS' to act in a "PICK-like" way, including
working with existing PICK-etc data copied into them. PixieEngine also provides
a host programming environment in Visual Basic with a PICKBASIC-like flavour.
Other languages are also possible.
PixieEngine also works with these MV
Datastores: 'PICK', 'MVBASE', 'ULTPLUS', 'UNIDATA', 'UNIVERSE'.
What it
does for them is provide programming in server-side Visual Basic with our Web
App and Gui libraries, and close integration with modern Windows practice.
Our "Field-by-Field" Web App framework is especially suitable for modernising
existing PICKBASIC apps.
PixieEngine is Windows software at
present. Datastores can however be on other machines which can be any
suitable OS.
We use MS Access/Jet .mdb files. as a lightweight prototyping demo and test alternative. Access/Jet also makes for an easy-to-setup download package. You can try Access/Jet immediately whereas it takes additional steps to get a Server Engine going. However MS Access is less effective at emulating MV than the true server engines. So please use one of them for any serious performance assessment.
What "Microsoft Access" does make possible is the wrapping of some of the PixieEngine functions into file "testpxe1.mdb" as VBA code. This means that "testpxe1.mdb" acts as a self-contained "quickie" demo of some of PixieEngine. You need "Access 97" or newer to open it. If reading this with internet access, click here to download testpxe1.zip (only 100K) .
Note sample data is fictional, especially the randomly generated prices.
The PixieEngine package includes:
There are 3 licensing levels for PixieEngine:
Pricing of 2 and 3 is by negotiable quote for each situation and is usually a single price for unlimited use within a site or organisation with a support package built in..
Web downloads and other promotional copies of PixieEngine will install as a full-strength trial for 30 days then switch to Personal Licensing.PixieEngine's equivalent to PICKBASIC is to program with Microsoft VB5 or VB6 by creating your app as an ActiveX .dll, instances of which get hosted inside PixieEngine's "UserPort" objects. We provide a template app to copy and adapt. In theory any Windows development environment that can talk to ActiveX objects should work as a VAR-Programming method, but VB is close enough to PICKBASIC that a high degree of automatic conversion is possible.
VB5/6 has a very attractive editing and debugging environment. The obvious question is "big change from DATABASIC ?" but VB is a very "extensible" system and we have done 2 things to bring it close to DATABASIC:
eg DATABASIC OPEN "cust" TO File.Cust ELSE CRT 'Cannot open file "Cust".' STOP END ** dynamic variables A<3,4> = B C = D<1,2,3> |
translates to VB
If Not OOpen("cust", File_Cust) Then
Crt "Cannot open file ""Cust""."
Exit Sub
End If
'* dynamic variables
A = RReplace(A, 3, 4, B)
C = Extract(D, 1, 2, 3)
|
We have written a utility "PixieMassage" which does such conversions automatically. Note that VB and the DataStores have their own reserved purposes for "dot" and "hyphen" operators. So in most cases, DATABASIC and TCL file, variable and routine names like "File.Cust" and
"BP.WEB" get changed eg to "File_Cust" and "BP_WEB".
"PixieEngine" handles most required PICK
emulation. With version 2.1 we offer some major advances in automatic
conversion, the main one being handling of PICK-etc LIST, SORT, SELECT, SSELECT,
and QSELECT queries.
An example remaining challenge is handling GOTO into and
out of INCLUDEd code. At present, setting common variables and values in
INCLUDEs is no problem, the Visual Basic "Procedure Header" with Public
variables does much the same thing. But you do need to convert INCLUDEs which are coded processes, to subroutines.
WebServer / VBA/ COM Programming
There are 2 approaches:Example 1: ASP SCRIPT fragment for the "Non-Persistent Microsoft Way"
Set P = Server.CreateObject("PixieEngine.Port")
Set F = Server.CreateObject("PixieEngine.Functions")
'** Login user "jeffrey" with a password of "biscuit"
Call P.ExecutePS("LOGIN jeffrey biscuit")
If P.OOpen(Cust, File_Cust) = False
Then
Response.Write "Cannot open file 'Cust'."
Response.End
End If
'** PixieEngine supports
dynamic variables"
A = F.RReplace(A, 3, 4, B) 'was A<3,4> = B
C = F.Extract(D,
1, 2, 3) 'was C = D<1,2,3>
…
Example 2: Similar ASP scripting but supporting a mostly PICK-style
app.
All data handling and processing happens in a PICK-like way in
the
separate PixieEngine environment. Pixie.Execute represents a
conversational
step where this script talks to INPUT statements in your app
and gets its
responses back via CRT.
Set Pixie =
Server.CreateObject("PxEngWeb.clsAgent")
Pixie.TimeOut =
30
Call
Pixie.Connect(Session.SessionID)
Call Pixie.ExecuteET("jeffrey", ":")
Call Pixie.ExecuteET("biscuit",
":")
If Pixie.State = "ERROR"
Then Call AppExit
Call Pixie.ExecuteET("logto myaccount",
":")
sResponse = Pixie.ExecuteTX("RUN MYAPP.BP MAINPROCESS " &
Request.Querystring)
If
Pixie.State <> "ERROR" Then
Response.Write
sResponse
Else
Call
ErrorHandler("ERROR: in App 'MyApp' ", sResponse)
End If
Click Here , for a full-length example
Description of Data Stores: MS_SQL_SERVER, MySQL, JET/Access
"Accounts"
are emulated by "databases".C:\Program Files\PixieEngine\JetMDB\
"Files"
( aka "Tables") feature:Description of Data Stores: D3, UV and other MultiValue
New in PixieEngine 2.1 is its ability to provide VB or
other modern programming environments for MV datastores.
To run in these modes you
need to:
CREATE-ACCOUNT, CREATE-FILE and other such admin tasks retain their classic syntax. Such operations are best done through a traditional terminal interface.
QUERIES work differently.
To get query results in with each cell as a separate value, use the PICK-like syntax:
Call ExecutePS("SELECT ...") or Call ExecutePS("SSELECT ..
")
followed by coded READNEXT loops.
You can also
run:
sQuery = ExecutePS("LIST
...")
sQuery = ExecutePS("SORT ...")
It is a good idea
to include limiting options
in your queries, eg D3's
SAMPLING 500
Top Next = Chapter 2: Installation... Appendix - keyword reference