| 
 
 
 
  
    
Search our FrontPage Support Area 
FrontPage Support Area Site Map 
     
   
 
 
    The following documents are geared towards using VirtuFlex
    with Microsoft FrontPage. 
    ODBC to a Microsoft Access Query 
    November 12, 1997 
    W. Curtiss Priest, Ph.D. 
    The Access "Jet Search Engine" supports ODBC calls to BOTH
    TABLES and QUERYs present in the .MDB file. 
     
    This provides at least 3 uses: 
     
    1. A "defined field" may be constructed in the Query and used as if it exists in
    the Table. This permits use of Access "functions." 
    The SQL for a defined field can be, say: 
    
      (Space(32-Len([Member Table].[LastName])) AS LNamePad In the
      "Design" window the "Field" appears as:
        LNamePad:(Space(32-Len([Member Table].[LastName]))  
     
    See footnote 1 below about VirtuFlex and Access "built-in"
    functions. 
     
    2. The Access defined Query can be used just as it is (but see Rule #3). 
     
    3. The Access Query can be further qualified using  tests -- but tests may be applied
    to only those fields which do not have criteria in the original query (see Rule #2). 
     
    
    Rules -- 
     
    1. One uses the name of the Query in place of the name of the TABLE. 
     
    2. One may NOT specify in the WHERE clause any fields already specified in the Query 
     
    3. But, one must have something in the WHERE clause because VirtuFlex passes WHERE
    regardless if there is anything contained between the third and fourth colon in the
    DBASE:SELECT. 
    So, if you want exactly the existing query, you can pick any field, not
    already specified, and use:     unspecified_fieldname like '%' . 
    And the output will be exactly the same records as the query [see footnote
    3]. 
     
    4. You may always print fewer fields in the VirtuFlex Interlace, but never any fields that
    are not already printed by the original Query [see footnote 2]. 
     
    Symptom of violating rule #1: No existing criteria in the Query are applied, and No
    "defined fields" are visible to ODBC. 
     
    Symptom of violating rules #2 and #4:  ODBC will return an error, such as:
      "Too few parameters. Expected 1."  [where the number of
    "expected" (here 1) changes as follows]. 
     
    The number of "expected" will equal the number of specifications of fields that
    are already specified in the Query. In other words,     for every
    field you try to apply a criterion to, that already has a criterion in the original query,
    you will get that many "expected" parameters (in the ODBC error) . 
    But also, the "expected" are the number of fields in the
    interlace that are NOT output (printed) in the original Query. 
     
    However, if the specified field is the same as the unprinted field,  the
    "expected" is still 1 for that field. 
     
    By "specified" -- it is meant -- those fields that have search conditions
    applied to them, called "Criteria" in the Access Design window (or are in the
    WHERE clause of the, matching, SQL window). 
     
    Symptom of violating rule #3: ODBC will return the following error: "Syntax error in
    WHERE clause" 
     
    
    Footnote 1: 
     
    While Access functions may be used in VirtuFlex, they cannot be "operated upon"
    using other VirtuFlex macros. For example, while it is possible to return the length of
    'LastName' in VirtuFlex, it is not possible to compute 32 minus the length in VirtuFlex
    using, say EVAL:MATH because the macro is evaluated BEFORE the Access data is returned. 
     
    
    Footnote 2: 
     
    If you wish to use a criterion against a field in the Access Query, that field must appear
    in the Query as a printed field. This is because Access does not permit selecting a field
    that neither is printed nor has criteria. Such a field simply disappears from the Design
    form. 
     
    
    Footnote 3: 
     
    Rule #3 applies not only to Access query criteria against constants, but also to query
    criteria     against variables.  
    For example, if the field LastName has a criteria against the variable
    'lstnam' -- the criteria may appear as: 
    
      like [lstnam], or  =[lstnam], which becomes simply [lstnam] 
     
    The existence of any criteria tests for a field means that the ODBC query
    may not further test that field (and the "expected" ODBC error message will
    appear if one attempts to test that field). 
      |