Turbo-charge your SQL data sources with virtual variables

CategoryTip of the Month

Without doubt, the most effective way to create powerful web or mobile apps with minimal code is achieved by harnessing the power of SQL in your data sources. We've used variations of SELECT * FROM DEMOCMAST in countless examples here over the years, and likely you've leveraged that concept in many of your own applications as well. The columns returned by SQL automatically propagate into your widgets, and with some quick configurations you can have a ready-to-run app for your users in no time.

SQL power

Integrating detail-level items into a header-level grid cell

CategoryTip of the Month

If you spend enough time handling end user app requests, you're bound to run into a case where someone wants to see data from a detail level file inside a grid displaying header-level data. For instance, a customer service rep might ask you to integrate a list of line items into a customer orders app that currently only shows header information.

Upon hearing such a request, you might respond, "So you want to be able to click on an order row to drill down and see all the items?"

Data drawer

Auto-hide grid columns based on user ID

CategoryTip of the Month

When creating grid apps, it can be tempting to pull in every conceivable column someone in the company might want to see. Consider, for example, the case of a grid of inventory items. You know users in accounting like to see dollars, while warehouse users like to see quantities, people in purchasing like to see dates, etc... Everybody has something special they want to see.

Listen

Activating spreadsheet-like editing on physical files

CategoryTip of the Month

Business systems are replete with lists of data, many of which entail users editing, adding or removing records in one or more underlying physical files. Conventionally, a maintenance app for, say, basic customer info would be initially presented to users in the form of a grid. Users would then click on a row to bring up a pop-up window, where the respective data is arranged in a form for editing.

Listen

Your Valence instance can listen on more than one port

CategoryApache

Since the official Valence 6 release in September, many sites currently using a prior version of Valence face the somewhat daunting task of getting users to change their URLs to the new instance. If you're not using some sort of an alias or permanent redirect in Apache — meaning the port number for your Valence instance is part of the URL — then you're looking at potentially hundreds of users needing to update their browser bookmarks to point to a different port.

Listen

Getting the Correct User ID into your Applications

CategoryTip of the Month

Programs running on IBM i routinely need to retrieve the specific user ID associated with the person executing the code. In traditional interactive 5250 programs, the user ID is often accessed in RPG through the program status data structure, or by making a call to a CL program that uses the RTVJOBA command. These "old school" green screen approaches for obtaining the user ID may need to be tweaked a bit when running within a web environment.  

Checklits

Allowing multiple selections on a combo box filter

CategoryTip of the Month

Imagine going to a buffet and being told you can only choose ONE item for your plate, and if you wanted more you'd first need to take that single-item plate back to your table, consume it, then return for the next item.  Wouldn't it be great if you could just load up your plate with two, three, four items or more and consume them all at once?  

Congestion

Using an Exit Program with VVMAIL

CategoryTip of the Month

If you're creating NAB forms or custom apps that send emails using the VVMAIL service program module, as demonstrated in the "Send Email" utility nested inside the Examples app, you can set up a back-end routine to globally intercept all outbound messages using an exit program. The exit program you create can be used to override the mechanism through which emails are sent, or to store pertinent details in a custom "outbound email log" for auditing purposes. 

Upload

Quickly create a file upload app

CategoryTip of the Month

Even as companies move toward a more paperless workplace, printed documents and paperwork remain an inevitable part of doing business. Whether it be a supplier invoice, a bill of lading, a certificate of quality, a signed contract, a proof-of-delivery or what-have-you, many business transactions are still supplemented with a piece of paper somewhere.

Upload

Add intuitive action buttons to your grid rows

CategoryTip of the Month

If a picture is worth a thousand words, how much more valuable is a button with an icon on it, compared to a string of words nested inside a row menu?  While a thousand times valuation differential may be a stretch, there's no doubt that a visible action button on a grid row is going to be considerably more intuitive to users, particularly new users who are exploring apps for the first time.  Such buttons also offer the added value of requiring one less click to trigger a row action.

Timeline

Best Practices for Managing your Valence Instances

CategoryTip of the Month

With the end of the year approaching, most companies find they have a rare opportunity to do some significant system maintenance as users go offline for the holidays.  In addition to, say, upgrading to IBM i OS 7.4, this may also be a good opportunity to rearrange your Valence setup so it's following a "best practice" configuration.  In a proper setup you can download and test new Valence builds without affecting any of your production or test instances.

Best Practice

Introducing Valence Fusion5250 - Integrating Green Screen with Web

Since its introduction in 2008, Valence has helped countless IBM i developers create top-notch web and mobile apps using some of the slickest UI technology available.  As the customer base grew, CNX introduced a number of additional development tools to Valence, including AutoCode and App Builder, to make the process of creating and deploying apps as easy as possible. 

Fusion5250