Welcome to a new column in PBDJ. In this column, we'll discuss all things
"new" in PowerBuilder - from keys to success in starting new projects to tips
and techniques you need to know to features in the latest, and upcoming,
releases of the product.
Our mission is to guide you on your path to developing state-of-the-art,
robust, maintainable applications using PowerBuilder and other technologies.
Your mission is to ensure we are fulfilling our mission. Your feedback and
input on past and future topics will be critical in making sure this column
provides educational, accurate and, most importantly, useful information.
Disclaimer: both Larry and I have many years of development experience to
share with you, but there will inadvertently, and inevitably, be times where
we present (slightly) inaccurate information. Please remember that those
errors and omissions are ALW... (more)
Now that Steve has discussed frameworks and building from scratch, I'll cover
some things to help you avoid writing duplicate code.
Remember that the purpose of these articles is not a tutorial with
step-by-step instructions but a guide to assist in the design and development
process. Our goal is to help new developers get started in the right
direction and to avoid pitfalls. This month's column will center on pitfalls
with the Web target.
Before I discuss Web targets I want to reemphasize the foundation that Steve
covered last month. A solid foundation and base classes are extre... (more)
When we last left off, our hero was perched precariously on the edge of a
cliff...oops, wrong article.
When we last left off, we had a functional shell of an application. We had a
menu that would open our five different sheets (Controls, Users, Messages,
Menus, and Contacts); we had the shell of those five sheets themselves; we
had some basic shared functionality with regards to managing sheets
(arranging sheets, closing all open sheets); we had some basic shared
DataWindow/DataStore error handling in the DBError event of our base-class
u_dw and n_ds objects; we had some basic t... (more)
As I was reviewing my previous "state of the application" and began to work
toward a basic application shell, I realized that there was some additional
code that I needed to write.
Missing Pieces
First, I realized that I could add a default SetTransObject() call on my u_dw
and n_ds objects in the framework to automatically assign SQLCA to the
object. This is a convenience to anyone using the framework since SQLCA is
utilized 99% of the time as the application transaction object. I added this
into the constructor event of both u_dw and n_ds. However, I needed to
remember to do th... (more)
Now that we understand workspaces and targets, we can start to get a feel for
what type of infrastructure we want to use for our application.
As I mentioned in my last column (PBDJ, Vol. 12, issue 7), we need to answer
some questions regarding standards and frameworks.
As Larry wrote about in last month's column (PBDJ, Vol. 12, issue 8), we also
have to choose whether to include multiple applications in a single
workspace, have a workspace contain one application, or perhaps have a
workspace contain all applications related to a specific business area. Once
those issues are resol... (more)