[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

No Subject




VISUAL PROGRAMMING++

The biweekly newsletter featuring reviews for Windows development products and
Internet/Intranet tools.
VP++ is free to Visual Basic Programmer's Journal subscribers and premier club
members of FTP's Development Exchange web site: http://www.windx.com.

Vol. 1 No. 1
July 12, 1996

Welcome to the premiere issue of Visual Programming++, an e-mail newsletter
providing timely reviews of Windows components, utilities, add-on products and
Internet/Intranet development tools. 
	This premiere issue is being sent to every registered member of The
Development Exchange Web site (DevX). All future issues will be sent as a
service only to paid subscribers of either Visual Basic Programmer's Journal or
DevX's new Premier Club. To subscribe or unsubscribe, follow the instructions at
the end of this document. Every issue will be posted under "Reviews" on DevX.
	VP++ is a part of the totally re-designed DevX Web site. Explore DevX and
you'll see complete archives of articles and code from Visual Basic Programmer's
Journal and Microsoft Interactive Development, plus a database of more than
5,000 Windows development tools updated daily. You'll also see an event calendar
that covers all major trade shows for developers, including details on our
VBITS:Interactive, coming to San Francisco in October. 
	The VP++ charter includes reviewing products for VB, VB Script,
Access/Jet, VC++, Delphi, PowerBuilder, the Microsoft Internet Explorer,
Netscape's Navigator and other tools. Every two weeks subscribers receive
detailed reviews automatically delivered by e-mail.
	Utilities form a theme for this issue. All products are shipping--no beta
software was reviewed. We'll maintain a product review archive on our web site
as we add new editions of VP++. You can search for product information using key
words. For Premiere Club members, we have a bulletin board in the Reviews
section of the Developer's Exchange. You can discuss these reviews or products
there.
	Not only are venders offering demos on web sites, but some reviewers have
posted sample code on web sites as well. I hope you find these reviews useful.
Send questions or comments to editor [email protected] or
[email protected].

8 PRODUCTS REVIEWED

CONTENTS 
* VBNet 2.01: Automatically converts VB code and forms to VB Script. 
* CodeBank: VB routines you can plug into your own code or share across teams. 
* PowerDoc: Automated documentation generator. 
* IDSMail: OLE server for building email into applications. 
* Total Access Agent: Repair, backup and compacting utility for Access and
VB/Jet databases. 
* DynamiCube 1.31: 32-bit data-bound ActiveX custom control for On-Line
Analytical Processing.
* VB Compress Pro 4.03: Automatically deletes unused or un-referenced code.
* Visual SQL 4.0: Code generator and class library that turns Microsoft Visual
C++ into a client/server development environment.
*Subscribe/Unsubscribe 

------------------------------------------------------------------------

VBNet 2.01 

TVObjects Corporation 
Tel: 609 514-1444 
Fax: 609 514-1004 
http://www.tvobjects.com 
Price: $197 
Runtime: not applicable 
Quick Facts: VBNet 2.01 is a VB4 add-in that uses a wizard to convert VB4 forms
into HTML pages with embedded VB Script code. 

By John Clark Craig 
VBNet is a Visual Basic 4.0 add-in that turns VB4 into an environment for
developing HTML pages with embedded VB Script code. The add-in provides a wizard
that walks you through the automatic steps of converting each of the Visual
Basic forms in your VB 4.0 project into a set of equivalent HTML pages
containing embedded VB Script code that is executed directly by Microsoft's
Internet Explorer 3.0. You can even convert ODBC-compliant client/server
database applications this way. VB Script code is developed right in HTML
pages-there isn't any Integrated Development Environment (IDE) for VBS. Hence,
you can create your app using VB's rich IDE during development (where you can
use the debugger, for example), then you just do the conversion to VB Script
using VBNet. 
	You can do this tedious conversion chore by hand, but believe me, VBNet
simplifies this task quite a bit. While reviewing VBNet, I created a few simple
VB 4.0 applications using the new, restricted VB Script syntax and let VBNet do
its thing to them. I learned a lot about the way VB Script works by studying the
resulting HTML pages created by VBNet, and I realized that even though VB Script
follows a simplified Visual Basic 4.0 syntax, the details of reworking
applications into embedded VB Script code for web pages is more complicated and
exacting than I expected. VBNet handles these details with ease. 
	Here's how it works. You start by developing a working Visual Basic 4.0
application that runs successfully in the Visual Basic development environment,
purposely using the restricted syntax of VB Script. As just one example of this
new syntax, the only variable type allowed in VB Script is the Variant, so
you'll need to edit out the dollar signs from the end of string variable names,
and you'll need to be more explicit in the use of type conversion functions. To
convert existing VB programs, you need to edit variables to conform to VB Script
conventions. (Some helpful documents that cover all the new VB Script syntax
exist on Microsoft's web pages-http://www.microsoft.com/VBScript is the main VB
Script page. There are links to complete documentation, an online tutorial, FAQ
documents, sample VB Script pages, and more).

MAKING THE CONVERSION 
When you're ready to convert your application to HTML pages, you start the VBNet
wizard from VB's Add-In menu. VBNet automatically creates a folder hierarchy
based on your application's name, and populates these folders with the all the
files required for rebuilding the application in the user's browser. VBNet
converts standard buttons, check boxes, text boxes, and many other controls. To
test VBNet for converting third-party controls, I added a Sheridan Software
Tabbed Dialog and it worked. Any controls should be registered on the user's
system. Microsoft provides a set of free downloadable ActiveX controls that are
designed specifically for use with VB Script within IE3. These controls
duplicate the command button, text box, check box, and a few other standard VB4
controls. The set also includes IE Stock Ticker, IE Chart, IE Animated Button
and others. 
	As the conversion proceeds, VBNet generates a report you can view or
print. This report describes any parts of your Visual Basic application that
fail to translate to VB Script, and provides other useful information about the
conversion process. 
	I created an example VB Script application using VBNet that you can
browse at http://home.sprynet.com/sprynet/jccraig using IE3. Be sure to
right-click and select View Source so you can study the actual lines of code
that VBNet created as it converted this simple random-password-generation
application from VB 4.0 to VB Script. Also, TVObjects offers example VB Script
enhanced pages, product information and the latest downloadable updates at its
home pages: http://www.tvobjects.com. 
	You can build powerful ODBC-compliant client/server database applications
for use over the Internet using VBNet and the RemoteData control, available in
the Enterprise edition of VB 4.0. Hence, users can interact with data on your
company's Intranet, for example. You simply add controls to your form that can
be bound to your RemoteData control, get them working in the Visual Basic 4.0
environment, and convert it all using VBNet to enable deployment over the net.
Also, VBNet can generate JavaScript code for database compliant access with
Netscape 2.0. For security reasons, VB Script doesn't allow normal file I/O, but
the remote data capability more than makes up for this limitation. 
	VBNet is a great product. I just wish VBNet had a little tighter
integration with the Visual Basic 4.0 development environment. The syntax
checking for proper VB Script syntax works great, but only during the wizard's
conversion processing. What I'd like to see is immediate feedback as I enter
each line to let me know right away if I'm using a feature of Visual Basic 4.0
that's not allowed in VB Script.

John Clark Craig is the author of more than a dozen books on computer
programming, including The Microsoft Visual Basic 4.0 Developer's Workshop
(Microsoft Press, 1996). Craig lives with his family in Castle Rock, Colorado.
Email: [email protected]; Web: http://home.sprynet.com/sprynet/jccraig

------------------------------------------------------------------------

CodeBank 

Visual Components, Inc. 
Tel: 913 599-6500 
Fax: 913 599-6597 
http://www.visualcomp.com/ 
[email protected] 
Price: $99.00 
Runtime: not applicable 
Quick Facts: CodeBank makes it easy to store, update and manage Visual Basic 4.0
procedures for individual or multi-programmer development teams.

By David McCarter 
CodeBank is a system for storing re-usable code or for sharing routines with
other developers in your group. Sure, you can create massive, generic modules
that can be attached to every project, but this would waste space in your EXE
and bloat memory requirements. Using CodeBank, you can choose only the subs and
functions your project needs and add them to specific modules. While I think
there are a few kinks that need to be ironed out in this first version, it's off
to a great start. 
	CodeBank includes 163 subs and functions (procedures) ready for use in
your projects. The program displays a list of available procedures organized in
categories in an expandable tree box. Categories include graphic effects, text
effects, status bar control and others. Some of the 163 procedures include
rotate text, gradient background and elastic forms. Simply click on a category
and browse the procedures in it. You can also view procedures by procedure name,
type (sub or function) or author. Clicking on a procedure will show a sample of
how the procedure works in a different window. Double clicking on a routine will
bring up the editing window. By default, you can't edit the canned routines in
order to protect the archive. However, you can make copies of routines
(maintaining all dependencies), then edit them and save them with a different
names. A tabbed form contains all the information for the procedures, including
category name, whether it's a sub or function, description, instructions, code,
sample calls, revision history, and links to API calls or other procedures and
forms need for the procedure. 
	I must warn you that the majority of the stock 163 procedures are
graphically oriented. While this is great for those of you looking for ways of
doing really cool graphic tricks in VB without using a VBX or OCX, I would like
more general-use procedures in CodeBank. However, you can purchase CodeBank to
share code among your development team instead of for the canned procedures. 
	As you find procedures needed in your program, click on an Include button
to add them to a new or existing module file created with CodeBank. These
procedures are listed in a window under the module file name. Of course, you can
also remove these procedures. Consider this window your shopping basket. 
	When you are done selecting procedures, all you have to do is click on
the Make Module button and the module is created in just a few seconds.
Impressively, CodeBank automatically adds any required API calls and procedures.
This beats the copy and paste method hands down! Also, a message box informs you
of any forms you need to add to your project. 
	CodeBank offers an Update All Basic Modules feature for efficient
updating. CodeBank keeps a record of all procedures and API calls added to a
module. So if these procedures are modified at a later date, simply use this
feature to update your modules. It's a snap! 

IRONING OUT THE KINKS 
In my experience, CodeBank has a few kinks that need to be ironed out to make it
a more productive, useful tool. I tested 15 of the procedures that came with the
program, including graphic, form, toolbar and file dialog procedures. I found
one routine that didn't work correctly: UnloadAllForms. It crashed VB because it
did not take into account that it can't be called from a form that is already
being unloaded. Also, most of the procedures are poorly documented. The
beginning of the procedures need better commenting on how to use them and which
parameters to choose. And commenting is displayed on one long line, so I had to
scroll to read the entire comment. This is not a standard commenting practice.
The code itself could use better commenting. 
	There were a few other things that bothered me. I could not maximize the
main program window to view more categories and procedures simultaneously. Also,
code is stored in an Access database. I'm not sure of the reason for this
because it's used as a flat database. Access has a reputation for high memory
overhead (the database of 163 procedures is 622K), and for corrupting in my
experience. I think it'd be better to store routines in a flat ASCII file
system. Also, there seems to be no compression, backup or error checking
features in CodeBank for the Access database. 
	CodeBank comes in both 16- and 32-bit versions. It only creates VB4
modules (though you could translate some of the code to VB 3.0). It can also
import other CodeBank files or a specially tagged ASCII file (I did not have any
samples to test this feature). The program comes with sample projects that show
off a majority of the included routines.

David McCarter is editor and publisher of the electronic newsletter Visual Basic
Tips & Tricks. He works at an interactive television and wagering company, and
has his own software publishing/consulting firm. Contact him at
[email protected].

------------------------------------------------------------------------

PowerDOC for Visual Basic 

Catapult Systems 
Tel: 800 581-7354 
Tel: 512 328-8181 
Fax: 512 328-0854 (fax) 
http://www.launch.com 
[email protected] 
Price $79.00 
Runtime: not applicable 
Quick Facts: Powerdoc automatically creates VB documentation using Microsoft
Word. A demo version is available on the web site, which can be upgraded to full
version via registration.

By Craig M. Bobchin 
If you are a typical developer you probably dread the thought of writing
documentation. And if you have to work on a system written by anyone else, you
may be cursing the lack of documentation. If these scenarios sound familiar, you
may want to check out PowerDOC. 
	PowerDOC works with Microsoft Word 6.0c or 7 to automatically create
technical documentation for VB3 or VB4 apps. It handles third-party custom
controls by default. I tested PowerDOC with Sheridan, Crescent, and Apex and
Farpoint custom controls with no problems. You can set options to document a few
types of controls, such as text boxes and labels, or you can document all
properties of every control in your app. Also, PowerDOC creates screen captures
of forms in black and white, 16- or 256-colors. 
	PowerDoc offers an easy installation with plenty of user control as to
where the program installs, including drive, directory, and program group.
However, you must have VB3 or VB4 on your system before PowerDOC will install. 
	The utility is easy to use. Select the project you want to document,
determine the level of detail by selecting which controls, properties, events,
and modules you want to document, set a few other options, such as where you
want the resulting file to be stored and if you want a table of contents and
index, and PowerDOC does the rest.

SELECTING OPTIONS 
PowerDOC offers a 3-tabbed interface that leads you through the steps for
documenting your application. The first tab, Select Application, lets you select
the VB project you want to document. After selecting the project in the normal
Open File dialog, PowerDOC presents a list of forms and modules to be
documented. You can select as many or as few as you want to document. You can
then sort the items by name or type, or keep them in the order they are in the
project. 
	The next tab, Select Output, lets you choose projects, forms, classes,
and modules. Each selection gives you several check boxes showing which portions
of the objects you can document. Pressing the Advanced button on this tab lets
you select which control types and properties you want to document, as well as
how you want any screen captures stored. 
	I documented an entire application with 14 forms and 3 modules. The app
had approximately 100 controls and about 5,000 lines of code. I documented all
controls and objects, and the resulting Word document was 374 pages. You can
customize the scope and size of your documentation by either not documenting the
entire system, or by selecting which pages you want to print. 
	The last tab, Customize Word, lets you customize Word options and
settings, such as generating a table of contents and index, and determining
their style.

MINOR ANNOYANCES 
When you press the Document button, PowerDOC launches VB with your application
loaded. Documenting a VB4 app works fine. However if you try to document a VB3
project using VB4, a message states that you must first save the project in VB4
format before you can run PowerDOC. If you have both VB3 and VB4, you can
specify which version of VB you want to use. 
	The second minor glitch shows up if you already have Word open. In this
case you get a message asking you to close Word and try documenting again. 
	Performance is adequate: it took about 20 minutes on my P90 with 24 MB of
RAM to document my test application. Your time will vary based on the size of
your application, the level of detail you want and the power of your machine. 
	PowerDOC comes with a 30 page manual that assumes you have the knowledge
to install the product. The manual does a good job of explaining the program and
how to use it. The manual covers topics ranging from a step-by-step tutorial to
a trouble shooting guide of frequently asked questions (FAQ). The help file is
similar to the manual in scope and content. 
	Overall, I like PowerDOC. It does what it is supposed to with a minimum
amount of fuss. I expect that most developers can live with the minor annoyances
I described. I say get this program if you need to document your Visual Basic
applications.

Craig Bobchin is president and founder of CMB Systems Design, a microcomputer
consulting firm specializing in application development and training. He has
written more than 150 articles and Powerpoint 4.0 for Windows QuickStart (Que).
[email protected] or 102142,[email protected]. 

------------------------------------------------------------------------

IDSMail 2.1 

Intuitive Data Solutions 
Tel: 408 778-1376 
Fax: 408 776-1267 
http://www.kudonet.com/~ids 
[email protected] 
Price: Standard Edition: $295 (send mail only), Professional Edition: $495 
(send and receive mail) 
Size: 460K (total for all DLLs for all mail systems) 
Runtime: licensing required only when distributing more than 100 copies external
to your company. 
Quick Facts: An OLE Server that supports major E-mail protocols and provides
e-mail services under any version of Windows for any tool that supports OLE
automation. Download sample code: http://www.kudonet.com/~ids/idsmprog.htm. 

By Peter Vogel 
Electronic mail is becoming a necessity rather than an option. IDSMail lets your
apps send and receive mail using any version of Windows across four mail
systems: MAPI, VIM, MHS, and Vines. You can even download a VB program from the
company's website showing how IDSMail makes your mail system accessible from the
Internet (though the package does not support the Internet mail protocols: POP3
and SMTP). 
	If VB's MAPI control satisfies your email requirements, you don't need
IDSMail. However, if you must support multiple types of systems (MAPI, VIM, MHS
and Vines), or you want to extend the mail capabilities of Excel and Access
under Windows 3.1, then I recommend IDSMAIL. 
	IDSMail comes as a 16-bit OLE server, hence it works with any tool that
supports OLE Automation under Windows 3.1 or Windows 95. I had no problems
installing IDSMail on either version of Windows. Ten minutes after starting up
VB4 and copying some code from the help file, I had a mail application running.
The brief Windows help file is the only documentation provided; it seems
complete and I found only a few minor inaccuracies (some VB3 code labeled as
VB4, for instance). The help file and additional sample code can be downloaded
from the IDS website. IDSMail used only 2% to 3% of my system's resources when
running, but while the documentation doesn't indicate it, I found I didn't get
all of those resources back unless I set my program's reference for IDSMail to
Nothing after use. Performance was acceptable even on a 33mz 486 with 16MB of
RAM with Excel 5.0 using the server and Access 2.0 or Word 6.0 loaded.

WEIGHING THE PROS & CONS 
The product has some neat extensions to MAPI: you can specify how many messages
you want to retrieve, prevent attachments from being copied to your disk, build
an array of message headers or text for search purposes, and read messages
without flagging them as having been read. On the other hand, compared to VB's
MAPI controls, you give up some things. These include single methods for
forwarding, copying, and replying to messages, the ability to customize the
address book dialog, and message types. While I found some activities (notably
logging in) simpler, some activities (like reviewing the recipients list) were
more awkward. Obviously, in providing a universal mail server, IDS had to decide
which features they were willing to support across all protocols. Even so, not
all of IDSMail's functionality is available for all mail systems. There are
dozens of properties and methods supported by IDS across different systems, and
sorting through which functions are supported on which systems is beyond the
scope and length of this review. 
	If portability matters to you, you'll want to review the help file's
Implementing Truly Universal Email topic. Most of the recommendations are made
to ensure consistency as you move from one mail system to another. For instance,
IDS suggests that you always use IDSMail's Mail Send dialog, though this means
losing the functionality of the native dialogs provided with VIM and MAPI. IDS
also recommends not using folders because they are not supported under MAPI, and
using PeekOnly is discouraged because it isn't supported by MHS. While these are
all useful tips, their recommendation to not use the NameResolution property is
not a good idea if you might be working with a MAPI compliant system. 
	If you follow the advice to leave NameResolution set to false, you'll
encounter a problem with users whose display names are similar under MAPI. MAPI
considers Jane Smith to be an ambiguous name compared to Jane Smith-Jones, and
it won't send mail to the display name Jane Smith. You can use the ResolveName
action to retrieve Jane Smith's unique mail address to solve this problem with
the MAPI VBX. Unfortunately, IDSMail's ResolveName method just returns the still
ambiguous display name. Setting IDSMail's NameResolution property to True,
however, solves the problem. Because theNameResolution property is ignored under
the other systems IDSMail supports, there seems to be no reason not to leave it
set to True, contrary to IDS's recommendation. Another solution would be to use
each user's unique mail address, but there isn't any way to get those with
IDSMail. 
	I called the company's technical department with a question just before
5:00PM IDS time and left a message. I also sent in a request for support using
the IDSMail server on the company's website. I got a response to my mail request
in a few hours and heard back about my phone request the next business day. 
	Each IDSMail server has a unique license file that provides the objectkey
your program must pass to the server before use. You'll want to make sure that
you have only one license file in circulation no matter how many development
licenses you buy. 
	There's definitely a niche for ISDMail, even if you are only using a MAPI
compliant mail system. If you want to receive mail from within Access 2.0 or
Excel 5.0, or if you want to send a non-Access attachment from within Access
2.0, you should consider IDSMail-the alternative is having to code the MAPI
calls yourself. If you don't use a MAPI compliant system and you want any mail
functions at all, IDSMail will let you mail-enable your applications. 
	Finally, if you may be changing mail systems, IDSMail will save you from
rewriting your code as part of the changeover. While not everyone will need
IDSMail, those who do will be glad to have it.

Peter Vogel is the applications supervisor at Champion Road Machinery and a
Microsoft Certified Solution Developer. Reach him at [email protected] 

------------------------------------------------------------------------

Total Access Agent 1.02 

FMS, Inc. 
Tel: 703 356-4700 
Fax: 703 448-3861 
http://www.fmsinc.com 
Price: single copy: $199; five-pack: $599 
Size: 1.7MB 
Runtime: not applicable 
QuickFacts: Total Access Agent is a maintenance scheduling utility for Microsoft
Access/Jet databases. It performs routine tasks such as compacting and repairing
databases, gathering statistics, and archiving tables or whole databases in both
16- and 32-bit versions.

By Don Kiely 
Total Access Agent automates the drudgery of maintaining and archiving Jet
databases. It works with all versions of Jet .MDB database files, so you can use
it with VB and all Access releases. The product is a program scheduler tailored
for easy maintenance of Access databases. It includes several standard,
pre-configured actions: archive a database, archive table data, compact and/or
repair a database, gather statistics about database objects and execute named
macros. It also includes a custom command option that lets you run any command
line. Archiving table data is a nice touch, because macros, forms, reports, and
code can take up a lot of disk space but rarely change, so why back them up
hourly? 
	Total Access Agent consist of three components: the Manager, Monitor, and
Engine. You use the Manager to maintain actions, such as to add and remove
databases, schedule events, and specify network passwords. The Monitor runs
continuously and launches the action at the scheduled time. Finally, the Engine
is the backend that runs everything-it has an OLE interface so you can launch
events programmatically. 
	Total Access Agent can schedule hourly, daily, weekly, and monthly
events. The hourly and daily intervals had all the flexibility I needed, but I
would like to see more options for the weekly and monthly intervals. For
example, you can select the particular days of the week to run an event, but you
can only run monthly events on a particular day of the month, such as the 15th.
It would be useful to run something on the third Thursday of the month or every
other week without creating multiple, duplicate actions. 
	The utility has some slick scheduling features. I was impressed with how
it manages database files. Once you add a particular file to an event, it is
added to a master database list, no matter how many actions use it. That means
that if you change a single database file that is used in 15 Total Access Agent
actions, you only have to change one setting in one place. This is just one
benefit of a well-defined and consistent user interface that belies the work
that went into planning the product. 

DOING THE TESTING 
I set up the program on Windows NT 3.51 and 95 machines connected on an NT
Server network to put Total Access Agent through its paces. I used two large
Access databases for testing and performed just about every available event as
frequently as possible. Once I got everything set up properly, the program
performed flawlessly, repeatedly backing up the databases and gathering
statistics. 
	Some impressive features include automatically emailing a message when an
error occurs, copying whole groups of events so you don't have to recreate them
by hand, and suspending an event so that you don't have to delete and then
recreate it. It even includes a Test button so you can immediately test any
scheduled action to make sure that you've set it up correctly. FMS did a nice
job with these extra touches. 
	The 73-page manual is well-written, concise, clear, and indexed. It has
almost too much detail, but this is a testimony to the quality of product design
rather than a flaw in the manual. The Windows help file contains the same
material as the manual--another nice touch. The documentation is careful to
point out the program's limitations, such as to caution you that Total Access
Agent uses the Jet engine's database repair capabilities, so don't expect
miracles if Access itself can't fix a file. Total Access Agent includes both 16-
and 32-bit versions, so it runs under Windows 3.x, 95, and NT using all Jet
database versions.

WINDOWS NT GOTCHA 
I did encounter a minor problem with Total Access Agent on my Windows NT 3.51
SP4 development machine. Total Access Agent Manager ran fine, as did Monitor,
but I got an OLE error any time the Engine tried to perform an action. Technical
Support via email and phone was helpful and responsive, and we ultimately solved
the problem: the server wasn't registering properly--a typical NT problem. The
product worked great on Windows 95. 
	Besides this small problem with the Windows NT installation, there are a
few minor improvements I'd like to see. There isn't always a list presented to
the user when it would make sense, such as when you enter the name of an
existing macro in the database you want to schedule. It would be easy enough to
get a list of macros; the utility does present a list of tables to archive. If
you change the scheduled events in Manager, you have to remember to either
restart Monitor or click the Refresh Event Schedule button for the changes to
take effect. I'd prefer having an option for the schedule to refresh itself at a
specified interval, because this could easily be overlooked. 
	My first impression on learning about Total Access Agent was, why bother?
Access itself can do all the maintenance chores that Total Access Agent handles,
and a simple program scheduler will run them. But it would take you a long time
to match Total Access Agent's ease of use and elegance. So if you have Access
databases to maintain, I'd definitely suggest you consider Total Access Agent.

Don Kiely is Development Manager for the Arctic Development Council on the North
Slope of Alaska. He programs in VB and writes about it when he isn't chasing
polar bears. He's written several books about VB and VC++, including Visual
Basic 4 Database How-To (co-author) from Waite Group Press and the Ultimate VB 4
Controls Sourcebook from Coriolis Group Books. Reach him at
[email protected] or [email protected].

------------------------------------------------------------------------

DynamiCube 1.31 

Data Dynamics, Ltd. 
Tel: 614 895-3142 
Fax: 614 899-2943 
[email protected] 
http://www.datadynamics.com 
[email protected] 
Size: 1.2 MB 
Runtime: not applicable 
Price: $499 
Quick Facts: DynamiCube is a 32-bit data-bound ActiveX custom control for
On-Line Analytical Processing (OLAP). Supports VB4 32-bit Professional and
Enterprise Editions, or other 32-bit ActiveX compatible development tools.
Downloadable demo. Requires Windows 95 or Windows NT compatible PC, 3 MB HD, 8
MB RAM (16 recommended). 

By Jeff Borgoff 
With corporate America embracing On-Line Analytical Processing (OLAP), Data
Dynamics, Ltd. has thrown its hat in the ring with DynamiCube, an ActiveX custom
control that allows VB4 developers to build OLAP capability into executive
information systems (EIS) and decision support systems (DSS). DynamiCube
delivers custom n!-multidimensional data analysis capability, where the
dimensions are limited only by system resources. To give you a better idea of
the concept of dimensions, consider this: you want to see your company's total
sales by product, category, country, region, quarter and year. The quarter,
category and product constitute your columns, the region, country and year make
up the rows, and the sum of sales is presented as your data. The result is six
dimensions of data--or 6! 
	A market saturation of first tier OLAP tools with OLE Automation support
may make it difficult for Data Dynamics to position DynamiCube as a enterprise
solution for OLAP. I'm familiar with other OLAP tools, but they're all larger
and more expensive than DynamiCube. I see DynamiCube best suited for
small-business, departmentalized or small commercial-product development where
the fat competitive products aren't suitable due to size and cost. 
	DynamiCube's claim to fame is its small foot-print (less than a megabyte
for distribution), fast processing (assisted by Win32), impressive built-in
print engine with print preview, OLE Automation support and slick presentation
of data with drill-down capability. The product does its number-crunching on the
client-side using the Microsoft Jet engine (DAO and RDO) and ODBC data sources.
This works well enough if your clients have powerful machines, but this could be
a problem with the client-side processing of massive amounts of data that would
be processed faster on a server. DynamiCube also binds to the Visual Basic Data
Control, Remote Data Control or directly to a data source without the Data
Control. As long as clients have adequate resources, DynamiCube retrieves,
crunches and displays huge amounts of data. The vendor recommends a Pentium 100+
MHz processor with 24 to 32 MB RAM for the power user of heavy DynamiCube
applications. Data Dynamics provided me with a formula for virtual memory
consumption of a Cube in action:

((Number of Dimensions * 4 bytes) + ( Number of Data Items * 8 bytes)) * (The
Summarized Number of Records)

For example:

((6 * 4) + ( 2 * 8)) * (10,000) = 3,840,000 bytes consumed.

TESTING PROPERTIES
DynamiCube's interface is developer friendly. The grid-layout properties page is
robust, with an ample amount of customization ability comparable to capabilities
offered by third-party grid controls. The properties page uses drag-and-drop to
setup the data views. 
	Notable property features include the dcConnect, dcConnectType,
dcDatabaseName, dcOptions, dcQueryTimeout and dcRecordSource. These built-in
DynamiCube replacement properties for the VB Data Control allow direct support
for DAO, RDO and ODBC. I tested DynamiCube's connection to a Visual Basic Data
Control compared with a direct connection using DynamiCube's built-in connection
properties, and found performance about the same for each approach. However,
there are a couple of benefits for using the built-in connection properties for
DAO, RDO and ODBC. First, you don't have to deliver the Visual Basic Data
Control with your application; secondly, you don't have to write any code using
DynamiCube's built-in connection properties. 
	DynamiCube's obvious weaknesses are its lack of support for Windows 3.1
(no 16-bit ActiveX version) and no integrated charting. Data Dynamics obviously
chose to go with a 32-bit version because of the added power for processing
large amounts of data, but if your users are running 16-bit systems, you're out
of luck. The single sample project that comes with DynamiCube demonstrates a
charting method using Visual Basic's anemic charting control--not exactly EIS
presentation quality. However, you can export data to Excel using OLE
Automation. 
	The good news is DynamiCube has a few runtime properties that make it
fairly simple to populate any chart control on the market. The sample
application demonstrates all of DynamiCube's features (if you work through
everything). I couldn't find some features in the manual or help file (e.g. the
"PerformanceDlg" method), however PerformanceDlg was demonstrated in the sample
app. I would prefer to have Data Dynamics spell out everything in the
documentation. I encountered some problems using DynamiCube's on-line help file,
such as properties missing from the properties list, and keywords not found
during a context-sensitive search. I had to reference the 90 page manual more
than I usually do for a custom control. Also, the manual has a two-page guided
tour with some documentation errors that prompted me to call the vendor. They
noted the errors and will hopefully make corrections for subsequent releases. 
	If you want to see a cool example of how Data Dynamics' ActiveX
DynamiCube works on the web, download Microsoft Internet Explorer 3 (beta as of
early July) and go to http://www.datadynamics.com. You'll find an excellent
demo. 
	In spite of the documentation shortcomings, if you're looking to add OLAP
capability to departmental or small-business EIS or DSS applications using
client-side processing, DynamiCube is worth a look.

Jeff Borghoff is the founder and President of Avalon Logic, Inc. He is a
Microsoft Certified Professional and Visual Basic Product Specialist. His New
Jersey based firm specializes in the design and development of Microsoft Windows
based client/server systems. Reach him at [email protected]. 

------------------------------------------------------------------------

VB Compress Pro 4.03 

WhippleWare 
Tel: 617 242-2511 
Fax: 617 241-8496 
BBS: 617 241-9284 
Price: $100 
Runtime: not applicable 
Quick Facts: VB Compress Pro 4.03 automatically deletes unused or un-referenced
code. It generates reports, regenerated code, or both. Supports VB2, VB3, VB4-16
and VB4-32.

By Bill Shadish 
Many VB projects accumulate unused code over time. For example, code is orphaned
when you delete a control on a form and forget to delete any corresponding event
code for that control. VB Compress ferrets out any un-referenced code and
deletes it. I must admit, VB Compress is one of the tools I hoped would make the
treacherous journey from VB3 to VB4 with me. And it has, with release 4.03
offering significant improvements. 
	VB CompressPro 4.03 (VBC4) searches your projects' source files for
un-referenced API calls (declarations), unused variables and constants, unused
subs, functions or property procedures and un-referenced controls or other
external references. Selecting appropriate options configures the utility to
automatically delete unwanted code. 
	This latest release offers improvements over version 3, including: 

* Server mode checks that allow you to compress automation server code. 
* Intelligent checking of public references so that dynamically loaded routines
are preserved. 
* Long file name support for use on Win95. 
* The ability to place C++-like assertions in your VB code to perform actions in
case of unexpected errors. 
* Speed improvement of 30-40%.

	This new release requires less puttering around with options than VBC3
demanded. You can rewrite project code after reviewing a brief informational
screen. Moving between options and reports lets you control the level of detail
to code changes. Also, many options are provided to control which of these
unwanted impurities are actually removed from the final rewritten code.

GENERATING REPORTS
I ran VBC4 against a 5070 line, 12 file, OLE Server project. VBC4 quickly
produced an informational analysis, showing referenced and un-referenced
controls, and references to outside DLLs and EXEs. Also included were missing
external references that show up as unresolved. The utility also produced a list
of file facts, including the oldest file, largest file, file sizes, byte counts
and other types of files. I received a file-by-file analysis featuring the
number of comments, blanks, executable code, variable declarations, form
definitions and in-line counts that make up each file. 
	I analyzed the code, generated a report and produced source code.
Analyzing the 5070 line server took 1 minute, 39 seconds on a 486-33 with 16MB
of RAM (the slowest machine that I could find). 
	The Analysis Report step told me which constants, variables, and routines
(sub, function and property) are un-referenced (that means unused) in my
program. I also received an analysis of external objects I had left
un-referenced. The analysis even included unused labels, such as unused error
handlers. Armed with this information, I analyzed my code manually to see why
variables or routines were un-referenced. This is a great tool for
double-checking your code to see if something was forgotten or unfinished. I let
VBC4 automatically produce an updated version of my code, dropping the
un-referenced items. 
	The VBC4 report also shows any unused API declarations so they can be
deleted as well. API calls take up a fair amount of space within VB, because the
string itself must be allocated, along with enough space to hold and resolve the
parameters passed through the API call. Removing unused declarations can save
quite a bit of memory if you have a large number of un-referenced API
calls--possibly duplicated across several modules. 
	The report is generated as a text file. VBC4 provides a viewer (VBC
Viewer) that formats this file for viewing. You can drill down into further
detail in some areas marked "click-here" to see more information about the items
marked. And you can change report options to produce more or less of a
breakdown. For example, you can select options to show all control events that
have had code written behind them--a rather handy reference guide. You can print
the report from the VBC Viewer, but WhippleWare left out the ability to copy,
cut and paste the information directly from the on-screen report. Hence, you
can't easily export the statistics into other tools, such as Excel.

CODE GENERATION 
VBC4 offers quite a bit of control for handling code generation. For example,
you can change options to have unused files deleted when the code is
regenerated. You can also remove unused control objects from your project (which
means I don't have to remember to remove control objects prior to creating
install disks!). You have the ability to comment out, remove, ignore, mark or
interactively decide how to handle the un-referenced local, private or public
items. These items include constants, variables, type declarations, declarations
or procedures. 
	Lastly, VBC4 loads VB.EXE under its control and runs the VB design
environment. You are able to interrupt the code generation process using a VBC4
toolbar that appears within VB. Using this same toolbar, you can generate a new
.EXE and decide whether to update the VB source files or not. 
	The one glitch I found working with VBC4 was running out of memory while
producing updated code (for code procedures or declaration sections approaching
64K). This type of problem is often due to limitations within VB's editor
itself. 
	In case you couldn't tell by now, I like this product.

Bill Shadish is a principal of Fundamental Objects, Inc., where he works with
ActiveX controls and OLE server technology. He teaches VB programming, and
writes regularly for VBTech and Visual Basic Developer. He co-authored the book
Using OLE In Visual Basic 4, (Pinnacle Publishing, Inc.). Reach him at
[email protected] or at http://www.fo.com. 

------------------------------------------------------------------------

Visual SQL 4.0 

Blue Sky Software Corporation 
Tel: 619 459-6365 
Fax: 619 551-2486 
http://www.blue-sky.com/ 
Price: $1899 
QuickFacts: Visual SQL 4.0 is a code generator and class library that turns
Microsoft Visual C++ into a client/server development environment. Supports
32-bit VC++ 4.0, Windows 95 and Windows NT.

By Steve Jackson 
Visual SQL is a code generator and class library that creates 32-bit
client/server database applications using Visual C++ 4.0 and the Microsoft
Foundation Classes. It requires Windows 95 or Windows NT, and comes bundled with
Sybase SQL Anywhere. The main benefit of Visual SQL is that it saves the time
otherwise necessary coding screens and creating code to move data to and from
the edit controls. The developer starts up the Visual SQL application generator
wizard, selects the ODBC data source, tables, and columns needed for the
application, and Visual SQL generates all the Visual C++ code needed for a fully
functioning MFC database application. You can use any database with a 32-bit
ODBC database driver. Visual SQL and the code it creates are fully integrated
into the Visual C++ Developer Studio IDE. No runtime DLL is needed other than
the standard ODBC DLLs. The product includes some useful utility programs and a
repository that can be used optionally to store queries. The repository can be
used in a team environment to share queries among multiple developers. 
	I put the Visual SQL application wizard to the test by creating a
customer order-entry database update program. Creating update screens was
easy--I chose the table and columns, and they appeared on the form. The wizard
created the update screens automatically, with edit controls for each field and
the field name placed as a label above each edit control. I was then able to
visually modify the form by dragging fields around and clicking on labels to
change text. The wizard gives you some choices for how to do database retrieval
and how the screens appear. Database retrieval can be done for an entire table,
for SQL statements you create, or using a query stored in the Visual SQL
Repository. Screens can appear as a data sheet with multiple records per screen
like a spreadsheet, or as a data screen with one record showing at a time. Menu
choices and toolbar buttons are automatically generated with navigation commands
(first, next, and last record) and update commands. The code generated by the
wizard compiled and ran cleanly the first time without any errors or warnings.

SEAMLESS INTEGRATION
I found the code generated with Visual SQL to be well written and well
integrated with the MFC document/view architecture. I have seen other code
generators that require the programmer to stay within the code generator IDE for
all compiles, with limited ability to modify the program code. I was quite
pleased to discover that Visual SQL creates an entire MFC project that can be
compiled and modified with the Visual C++ IDE. I easily set debug breakpoints
and ran the code from the Visual C++ debugger, and was able to modify the code
using Visual C++ class wizards. Using the MFC Class Wizard, I added code to the
undo menu items to cancel database changes made to a record. Oddly, the Visual
SQL wizard generated menu selections for this, but failed to generate any code
behind the menu choices. 
	Looking under the hood, I found that the database operations were carried
out in a Visual SQL class library. This library consists of classes that are
wrappers around standard MFC data access objects (DAO) using dynasets and
snapshots. Because the MFC DAO classes are built on top of the ODBC API, a
developer can add calls directly to the ODBC API if needed. 
	The product comes with a suite of useful utility programs. The Database
Explorer allows the developer to view database table structures, analyze ODBC
connections, and view repository entries. The ODBC Data Source tester and
Configuration tester can be distributed with applications generated by Visual
SQL. These testers verify that ODBC data sources are installed correctly, and
that a user has the right versions of all the required DLLs; this information is
highly useful for debugging an application, and for remote telephone support.
The Visual Query builder presents a graphical interface for creating database
queries and SQL statements, saving the developer time spent looking up column
names and SQL syntax. 
	Installation went smoothly, and the setup program automatically
configured an ODBC data source for the tutorial programs. The documentation is
well written and complete. For example, the documentation includes a detailed
description of all the generated code modules, what each routine does, and how
the modules are named. A few potential improvements I'd like to see in future
releases include: the ability to automatically generate undo code to allow a
user to cancel updates on a data screen, transaction commit point processing, a
report generator and the ability to store labels in the repository instead of
using field names when creating data screens. 
	Blue Sky maintains a web site at http://www.blue-sky.com. Be sure to
include the dash in blue-sky in the web address--if you leave it out you will
find the web site for another company also called Blue Sky!

Steve Jackson develops network-based applications using VB, C, SQL Server,
Oracle and other tools at Loral Aeronutronic in Southern California. Steve is a
Visual Basic Programmer's Journal author and CompuServe section leader:
[email protected].

------------------------------------------------------------------------

To subscribe to Visual Programming++, send an e-mail to
[email protected]. Include the word "subscribe", space, your
e-mail address in the body of the message. For example, subscribe
[email protected]. To cancel your subscription, include the word
"unsubscribe", space, yourmailaddress and send the same request. VP++ is
separate from Hot Links, a brief e-mail sent to registered users of DevX
alerting them to interesting new items on the site, and industry news.

ABOUT FAWCETTE TECHNICAL PUBLICATIONS 
Visual Programming++ is Published by Fawcette Technical Publications. Copyright
(c) 1996 Visual Programming++. All rights reserved. FTP also publishes or
produces: Visual Basic Programmer's Journal, Avatar: http://www.avatarmag.com,
Microsoft Interactive Developer, VBITS conferences, The VBCD, The VBPJ Guide to
VB4, VBPJ CompuServe forum (GO VBPJ). 
Fawcette Technical Publications 
Publisher/President: Jim Fawcette 
209 Hamilton Avenue 
Palo Alto, CA 94301-2500 
USA 
Editorial Offices. Tel: 415-833-7100 
Editorial Offices. Fax: 415-853-0230 
Customer service and subscriptions: 303-541-0610 
Orders: 800-848-5523 or 415-833-7100