Microsoft KB Archive/160575

= ACC: Cannot Paste Append Using Input Mask Based on Short Date =

Article ID: 160575

Article Last Modified on 1/19/2007

-

APPLIES TO


 * Microsoft Access 95 Standard Edition
 * Microsoft Access 97 Standard Edition

-



This article was previously published under Q160575





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

When you use the Paste Append command to append a record in Form view of a form containing a control with any variation of the Short Date in its InputMask property, the appended record contains a Null value in that control.

The Short Date format appears in the InputMask property as something resembling "99/99/00;0;_".



RESOLUTION
There a three workarounds:


 * Change the control's InputMask property from Short Date to a different input mask, such as Medium Date.
 * Open the form in Datasheet view before you execute the Paste Append command.
 * Write code to temporarily move the control's input mask to a form level variable before you execute Paste Append, and then reassign the input mask from the variable to the control's InputMask property using the OnEnter property of the control.

Follow these steps to implement the third workaround:

The following example assumes that you are familiar with Visual Basic for Applications and with creating Microsoft Access applications using the programming tools provided with Microsoft Access. For more information about Visual Basic for Applications, please refer to your version of the "Building Applications with Microsoft Access" manual.

CAUTION: Following the steps in this example will modify the sample database Northwind.mdb. You may want to back up the Northwind.mdb file, or perform these steps on a copy of the Northwind.mdb database.

 Start Microsoft Access and open the sample database Northwind.mdb. Open the Employees (page break) form in Design view (or the Employees form in version 7.0). Select the HireDate text box control, and then view its properties. Click the Build button next to the InputMask property to invoke the Input Mask Wizard. Click Short Date, and then click Finish. On the View menu, click Code. Type the following line in the Declarations section of the form module:

Dim mstrIMask As String</li>  Type the following procedures: Private Sub Form_BeforeInsert(Cancel As Integer) mstrIMask = Me!HireDate.InputMask Me!HireDate.InputMask = "" End Sub

Private Sub Form_AfterInsert If mstrIMask<> "" Then Me!Hiredate.Inputmask=mstrImask End Sub </li> Close the form module and switch to Form view.</li> On the Edit menu, click Select Record.</li> On the Edit menu, click Copy.</li> On the Edit menu, click Paste Append.</li> On the Edit menu, point to Go To and then click Last. Note that the HireDate value is appended correctly.</li></ol>

<div class="status_section">

STATUS
Microsoft has confirmed this to be a problem in Microsoft Access 7.0 and 97. This problem no longer occurs in Microsoft Access 2000.

<div class="moreinformation_section">

Steps to Reproduce Problem
CAUTION: Following the steps in this example will modify the sample database Northwind.mdb. You may want to back up the Northwind.mdb file, or perform these steps on a copy of the Northwind.mdb database.


 * 1) Follow steps 1 through 4 in the "Resolutions" section of this article.
 * 2) Switch the form to Form view.
 * 3) On the Edit menu, click Select Record.
 * 4) On the Edit menu, click Copy.
 * 5) On the Edit menu, click Paste Append.
 * 6) On the Edit menu, point to GoTo and then click Last. Note that the HireDate field is empty.

<div class="references_section">