Microsoft KB Archive/202352

= ACC2000: Errors Caused by Strong Typing in Microsoft Access 2000 =

Article ID: 202352

Article Last Modified on 6/29/2004

-

APPLIES TO


 * Microsoft Access 2000 Standard Edition

-



This article was previously published under Q202352



Moderate: Requires basic macro, coding, and interoperability skills.

This article applies to a Microsoft Access database (.mdb) and to a Microsoft Access project (.adp).



SYMPTOMS
In Microsoft Access 2000, you may receive one of the following error messages when you try to set or use some form and report properties in your database:

Run-time error '13':

Type mismatch

-or-

Run-time error '94':

Invalid use of Null

NOTE: The same action that causes the error message in Access 2000 may not produce an error in earlier versions of Access.



CAUSE
Some properties that returned values of the Variant data type in earlier versions of Microsoft Access are strictly typed as non-Variant data types in Microsoft Access 2000.



RESOLUTION
Verify that no errors exist in your application by doing the following:
 * Compile and save all modules in your database. To compile your database and its modules, follow these steps:
 * In the Database window, click Modules.
 * On the View menu, click Code.
 * On the Debug menu, click Compile . If this option is not available, it means that your database is already compiled and the modules have been saved.
 * Check for run-time errors when you run your code.



MORE INFORMATION
Some form and report properties that returned Variant values in earlier versions of Microsoft Access now return strict data types. The term for this is strong typing or strict typing. Visual Basic for Applications code in your database that includes strictly typed properties runs faster in Access 2000. However, when you convert a database from an earlier version of Access to Access 2000, you must verify that no errors are introduced in your application by the new data types.

The following are lists of properties that returned Variant values in earlier versions of Microsoft Access, but which return specific data types in Access 2000.

Properties Returning String Data Types
  AfterDelConfirm      InputMask        OnGotFocus     OnRetreat AfterInsert         Item             OnInsert       OnTimer AfterUpdate         MenuBar          OnKeyDown      OnUnload BeforeDelConfirm    OLEClass         OnKeyPress     OnUpdated BeforeInsert        OnActivate       OnKeyUp        OrderBy BeforeUpdate        OnApplyFilter    OnLoad         Picture Caption             OnChange         OnLostFocus    RecordSource Class               OnClick          OnMenu         RowSource ColumnWidths        OnClose          OnMouseDown    RowSourceType ControlName         OnCurrent        OnMouseMove    ShortcutMenuBar ControlSource       OnDblClick       OnMouseUp      SourceDoc ControlTipText      OnDeactivate     OnNoData       SourceItem DatasheetFontName   OnDelete         OnNotInList    SourceObject DefaultValue        OnEnter          OnOpen         StatusBarText Filter              OnError          OnPage         Tag Format              OnExit           OnPrint        ValidationRule FormName            OnFilter         OnPush         ValidationText HelpFile            OnFormat         OnResize

Properties Returning Boolean Data Types
  AddColon     Dirty AutoLabel   HideDuplicates Cancel      RepeatSection

Properties Returning Double Data Types
  CurrentX       ScaleLeft CurrentY      ScaleTop ScaleHeight   ScaleWidth

Properties Returning Integer Data Types
  DatasheetGridlinesBehavior    FillStyle     OLETypeAllowed DrawMode                     LabelAlign    RunningSum DrawStyle                    LabelX        ScaleMode DrawWidth                    LabelY

Properties Returning Long Data Types
  BackColor            DatasheetBackColor         FillColor BorderColor         DatasheetForeColor         ForeColor CurrentRecord       DatasheetGridlinesColor

Steps to Reproduce Behavior
The following example demonstrates the error message that you receive if you try to set the ControlSource property of a text box control to Null in Access 2000. The ControlSource property is typed as a String data type in Access 2000; you receive an error because String data types cannot contain Null values.  Start Microsoft Access 2000 and open the sample database Northwind.mdb. Open the Customers form in Design view. Add a command button with the following properties to the form:

Command button

Name: CommandStrict

</li>  Set the OnClick property of the command button to the following event procedure: Private Sub CommandStrict_Click Me![CompanyName].ControlSource = NULL End Sub </li> On the View menu, click Form View, and then click the CommandStrict button. Note that you receive the following error message:

Run-time error '13':

Type mismatch

</li></ol>

<div class="references_section">