|
Please sign our guestbook! |
|
What's New in Version 2.0Wow! Where to start? Of course, the big news is that we now support the latest data access technology from Microsoft, the OLE DB standard. That means you can now use VB ELF directly with enterprise database systems like SQL Server 7.0 and Oracle, without passing information through the Jet Engine. In other words, we've finally lived up to our promise to provide a complete natural language solution that works effectively with every database configuration, from desktop, to client-server, to Web-based data distribution. (We've also kept and enhanced all the older functionality, so that you can continue to "attach" to ODBC databases through a Jet frontend database, if you prefer.) There are two main differences between the older (Jet attachment) approach and the new OLE DB Provider approach. The first is that, with an OLE DB Provider, the query is passed directly to the server database for processing, and only the answer set is returned to the client application. In the Jet system, all rows from all tables related to the question were passed back to the client -- where they were filtered to provide the answer. This is the key to the efficiency of client-server systems: When you ask about "Bob in accounting", the network has to handle only information actually related to Bob -- not everyone in the Employee table. The second main difference is that, since we no longer rely on Jet to intervene between the question and the data source, we can no longer generate a single dialect of SQL (namely Jet SQL). Instead, VB ELF must be able to generate SQL in the exact syntax that's accepted by the database in use. And there are indeed many, many differences between SQL dialects. With Version 2.0, we think we've addressed the core issues by providing a system which can generate two versions of Jet SQL syntax (Access 97/Access 2000), as well as Microsoft SQL Server 7.0 SQL, and Oracle SQL. In addition, we've provided a "switch" (ODBC Escape Sequences) that instructs VB ELF to use the selected dialect BUT to avoid using any language-specific function (eg. date or conversion functions), substituting instead the appropriate "escape sequence" that, by ODBC conventions, can be understood by any ODBC-compliant driver. So you can easily use VB ELF with another ODBC database, such as Sybase SQL Anywhere, by creating a .UDL file which uses the Microsoft OLE DB Provider for ODBC Drivers. In fact, you can select ANY of the dialects for use with SQL Anywhere -- since it seems to be particularly flexible in dealing with the different varieties of JOIN syntax.
A Query Builder that Works! So we built a Query-By-Example Builder that handles all this and more. (For example, it lets you translate between SQL dialects with a single click.) Now we think our Access friends will envy our Query Builder.
Scripting . . . and more The Worksheet mode has been refined, with better formating of data and graphs, and we've added a new feature that lets you see hierarchies (such as organizational structures) at a single glance. To use this, all you do is connect two fields from the same table (for instance, [EmployeeID] and [ReportsTo]) in the Verb Mapper. Now you can click the hierarchy button to see the tree, or sum different values over the hierarchy -- for instance to see the total sales in each division, with the totals being credited upwards from employee to boss. Another use would be to see the next, or previous, occurrence of some date -- such as an anniversary or birthday. In other words, you can push a button and see what's the next birthday along every path of the organizational tree. (Sorry, "birthday" feature not implemented in Oracle.) You can also export all of the Worksheet; selected rows; selected columns; or a selected "rectangle" of data, to Microsoft Excel with a single click. You can even export data from OLE DB data sources directly into Microsoft Access tables. The Verb Mapper has also been extended to handle a much-requested feature -- letting you automatically link up two fields so that when one is displayed, the other will be too. Just add an entry in the Verb Mapper using the special verb "imply". The two fields can come from the same, or from different tables.
Still Faster and Yet Smaller: A few things that were missing from the last version has been added, like the ability to set the Acknowledge flag on non-text fields (right-click a tablename from the Custom Analysis window to get to this option). This lets you exclude numeric information from your analyses -- most importantly perhaps, the system fields that are generated in replicated MS Access databases. We've also changed the way crosstab queries are triggered. You no longer have to use the "compare" keyword; using "down" and/or "across" will usually be enough to get a 3D dataset -- for instance, "Give me the total quantities, showing employee name across and product down." or "Display the average discount, with the month of order date down and customer name across." Now, just a minute -- we hear some people saying. SQL Server doesn't support pivot tables. Oracle certainly doesn't support pivot tables. For this kind of thing, don't you need these new high-falutin' OLAP-type thingies that only a few propeller-heads understand? Actually, no. Most of the documentation concerning OLAP presents it as a solution to an efficiency problem -- in other words, they say that you need a tool beyond SQL because the queries that answer your real, everyday business questions run too slowly against production databases. So they give you tools to create a heavily preprocessed, intermediate layer -- a "cube" -- to quickly run queries involving aggregates. Well, this is only half-right. With the power of today's machines, the bottleneck isn't really running the query, it's creating it. Because there's no PIVOT keyword in SQL Server Transact SQL, or in Oracle PL1/SQL, until now your only choice for pivot table queries has been an OLAP tool. All that changes with VB ELF 2.0. VB ELF will instantly create pure "SELECT statement" SQL which effectively creates the same result as MS Access pivot tables -- for both SQL Server and Oracle. In fact, it goes one better than Access, by providing optional column and row totals. (To drop the totals, eg. for nicely balanced graph images, use "without totals", "without row totals" or "without column totals" in your query.) How does VB ELF do this? By running an initial query against your database to extract the data items to use as column headers, then creating a mile-long SQL statement using CASE switches to sum up the appropriate data. (Oracle doesn't have CASE statements either, but don't think we let that stop us.) So, using the famous Northwind database ported to Oracle as an example, if you ask: "Show total quantities giving the employee name across and week of order date down during 1994", VB ELF reads the names of the employees from the database and generates: SELECT TRUNC(TO_DATE(ORDERS.ORDER_DATE),'DAY') AS ORDER_DATE , sum(sign(ascii(substr(substr(' ',1,instr( EMPLOYEES.LAST_NAME ,'Buchanan')),1,1))) * ORDER_DETAILS.QUANTITY) AS Buchanan , sum(sign(ascii(substr(substr(' ',1,instr( EMPLOYEES.LAST_NAME ,'Callahan')),1,1))) * ORDER_DETAILS.QUANTITY) AS Callahan , sum(sign(ascii(substr(substr(' ',1,instr( EMPLOYEES.LAST_NAME ,'Davolio')),1,1))) * ORDER_DETAILS.QUANTITY) AS Davolio , sum(sign(ascii(substr(substr(' ',1,instr( EMPLOYEES.LAST_NAME ,'Dodsworth')),1,1))) * ORDER_DETAILS.QUANTITY) AS Dodsworth , sum(sign(ascii(substr(substr(' ',1,instr( EMPLOYEES.LAST_NAME ,'Fuller')),1,1))) * ORDER_DETAILS.QUANTITY) AS Fuller , sum(sign(ascii(substr(substr(' ',1,instr( EMPLOYEES.LAST_NAME ,'King')),1,1))) * ORDER_DETAILS.QUANTITY) AS King , sum(sign(ascii(substr(substr(' ',1,instr( EMPLOYEES.LAST_NAME ,'Leverling')),1,1))) * ORDER_DETAILS.QUANTITY) AS Leverling , sum(sign(ascii(substr(substr(' ',1,instr( EMPLOYEES.LAST_NAME ,'Peacock')),1,1))) * ORDER_DETAILS.QUANTITY) AS Peacock , sum(sign(ascii(substr(substr(' ',1,instr( EMPLOYEES.LAST_NAME ,'Suyama')),1,1))) * ORDER_DETAILS.QUANTITY) AS Suyama FROM ORDERS , EMPLOYEES , ORDER_DETAILS where ORDERS.EMPLOYEE_ID = EMPLOYEES.EMPLOYEE_ID and ORDERS.ORDER_ID = ORDER_DETAILS.ORDER_ID and ( ( ( ( ORDERS.ORDER_DATE >= TO_DATE('01/01/1994','mm-dd-yyyy') and ORDERS.ORDER_DATE < ADD_MONTHS ( TO_DATE('01/01/1994','mm-dd-yyyy'),12 ) ) ) ) ) group by TRUNC(TO_DATE(ORDERS.ORDER_DATE),'DAY') ; Oh yes, in the previous What's New, we said : "VB ELF does not yet implement the user-defined forms option . . . We expect to have this feature, which has proved so popular in our Access ELF product, incorporated into VB ELF for the 2.0 release." We've come through on this as well. Which means you can point to any Microsoft Access form, within any Access database, and use it as the display form for your data -- no matter what the current data source. As one example, you could upsize your database from Access to SQL Server, and continue to view data in the way you're familiar with from your legacy MS Access app. Just choose the display form in the My Reply Style section of the Responses Tab. VB ELF will read the form, extract any required fields missing from your query, and build an exact copy of the form to present your data, on-the-fly. What's New in Version 1.2Version 1.2 has a new look and feel, and incorporates hundreds of changes to the rule-base, both for better comprehension and for a wider range of response types. We've even got a brand new answer format, that lets you see how a multi-part SQL statement is built-up, one statement at a time, to the query that's finally returned. (Plus split screen graphs, automatic duplicate elimination, and many more options.) We're so excited about this new release, we're getting ahead of ourselves. Let's take it one section at a time.
Standard self-installing setup:
Faster and Smaller:
Ease of use features on the Custom Analysis window:
Toolbar:
Selectable Settings: The new Verb Mapper tab gives you a quick way to associate action words with the relationship between tables, or even between tables and queries. For instance, if you want "require" to imply the relation between Customer and Product, you can click the Add New >* record selector, and enter a new relation record for Customers and Products. Type REQUIRE into the verb box, and you're done. Now VB ELF will understand that "Who requires seafood?" means "Which customers buy seafood?" We've also added many new Customization features. From the Advanced tab you can customize the message displayed when VB ELF can't process your query, and a default header for custom responses to off-topic or improper queries. You can define these responses themselves in the Phrase editor, by starting the definition with an exclamation point. See the Customizing topic for more on this.
Slimmer, trimmer History form:
Easier lookups:
New phrase definition capabilities:
Worksheet mode: The worksheet showing the stages of the query is indeed tremendously useful. My article might have helped to identify a problem and have thrown some ideas around, but you developed a coherent original solution.
New Graph Options:
New Graph Engine:
Last Updated: November, 1999 |