Free trial download of Total Access Memo

Frequently Asked Questions for Total Access Memo


Pre Sales Questions

Total Access Memo is an ActiveX control. ActiveX controls are either 32 or 64-bit and need to correspond to the bitness of your Access version. Microsoft Access 2010 introduced the 64-bit version and all versions since 2010 can be installed as 32 or 64-bit.

The latest version of Total Access Memo includes both 32 and 64-bit ActiveX versions to suport either bitness for Access 2019/Office 365, 2016, 2013, and 2010. It supports both bitness without having to modify your forms and reports. For instance, you can insert the 64-bit version on your 64-bit Access installation and distribute it to users running the 32-bit version, and vice versa.

Visit the Product Compatibility Chart for version information for all of our products.

For information on the history of Access versions, visit our Microsoft Access Version Releases, Service Packs, Hotfixes, and Updates History page.

Absolutely! Download the Trial Version to try Total Access Memo before you buy it.

Also, remember that FMS products come with a 30-day money back guarantee, so you can buy with confidence!

Yes, you need Administrator rights to install Total Access Memo.

Total Access Memo is developed exclusively for the Microsoft Access community and includes features not found elsewhere for rich text format memo fields:

  • Display rich text format data on Access forms and reports bound to data stored in a field on a table. A table can have multiple RTF fields and an unlimited number of records.
  • Editing directly in the control with the option to bring up a full screen editor by pressing Shift-F2. This brings up a separate editor with a full menu, toolbars, ruler, etc. so you can format your text in a resizable or maximized window.
  • Built-in spell checker with support for 20+ languages. This is critical when people enter lots of text.
  • In addition to support for rich text format basics (fonts, point sizes, styles, etc.), Total Access Memo also supports the inclusion of active hyperlinks, graphics, paragraphs with hanging indents, bullet points, numbering, etc.
  • For VBA programmers, many properties and methods to let you control and edit your rich text fields and user experience.

Total Access Memo is an ActiveX control that you place on an Access form or report. We've worked hard to minimize the issues in that environment but it is still subject to the limitations of what Access supports with ActiveX controls. These include:

  • In reports, the Keep Together property cannot be supported
  • In reports, exporting the report to Word does not include the Total Access Memo contents and must be done programmatically.
  • In reports, the maximum size for a control is 22". Total Access Memo can store, display, and edit text of much greater length but Access reports have a maximum control and page size of 22 inches. In most cases this is okay. We're talking about one field's value exceeding 22 inches. If the text can be broken up to smaller sizes per field, the data can be display in their entirety. Sometimes changing the font size or paragraph settings can help.
  • No support for display in continuous forms
  • Cannot be placed directly on a tab control's page, but there is a workaround.

Post Sale Questions

The demo version of Total Access Memo lets you view, edit, and print rich text format memo fields in Microsoft Access. However, in order to insert the Total Access Memo control onto your own forms or reports in design time, you must obtain a retail license of Total Access Memo. While the demo version does not allow you to insert the Total Access Memo control into your own forms or reports, we offer a 30 day money back guarantee for this product to ensure that it meets or exceeds your expectations.

If you are using the demo of Total Access Memo and you would like to see how it will affect your own data, we recommend the following:

  1. Import your own table into the Total Access Memo sample database of the demo version.
  2. Rename the table "tblRTF" to "tblRTF_FMS"
  3. Rename your imported table to "tblRTF"
  4. Run the sample as normal and modify the text in your own table now.

NOTE: You still cannot open the forms or reports in design view without losing the licensing, however, the steps above will allow you to "use your own data" for a test. If you have already received a "license" error, you will need to rename this demo application and then re-install the product in order to get the licensed database again.

Occasionally, you may just want the text and not the rich text format of the RTF field. For instance, you may want the unformatted text on a report, or you may need to export the text to another program that does not support rich text format fields.

Total Access Memo exposes property called Text. The Text property returns the textual representation of the contents of the Total Access Memo control.

If you want to store it in a separate field, create an extra memo field for it. Use the Text property in BeforeUpdate event of your form, as in the following:

Private Sub Form_BeforeUpdate(Cancel As Integer) 
' Assign the text representation to the text field
TextField = tamDemo.Text 
End Sub

where TextField is the name of the text field, and tamDemo is the name of the Total Access Memo control.

No. Since Total Access Memo is an ActiveX control, it supports Single Form view only. It cannot support Continuous or Datasheet views because Microsoft Access does not provide this option for ActiveX controls.

Please note that this limitation applies to all versions of MS Access.

You can set the default font and other settings in two ways:

1. Manually set the font property in the property sheet:

Set Default Font for Rich Text Memo field in Microsoft Access

2. Programmatically set the font in an event such as Form_Load:

Private Sub Form_Load()
  Me.FMSMemo0.Object.Font.Name = "Arial"
  Me.FMSMemo0.Object.Font.Size = 14
  Me.FMSMemo0.Object.Font.Bold = True
End Sub

The Microsoft Access Tab control has intermittent problems with Total Access Memo. These problems manifest themselves as periodic GPF's (General Protection Faults), the Memo control losing the ability to gain focus, or the Memo control remaining focused even though you have changed to a tab that does not contain the control.

It is not recommended that you place Memo on a tab control. A workaround to this issue is to place Total Access Memo on your form, and hide and show the control in the Change event of the tab control. For example: Assume you have a Memo control named tamDemo, and a tab control named tabDemo. To show the Total Access Memo control when the second tab is selected, use code like this:

Private Sub tabDemo_Change()
  'Tabs are 0 based
  Me.tamDemo.Visible = (Me.tabDemo.Value = 1)
End Sub

The trick to making this work right is to ensure that the Memo control is NOT on the Tab control, but rather, is placed on the FORM in the same position you would have set it on the Tab control. When the control is made visible, it will appear as though it were on the tab control, even though it is not because you have properly placed the control.

Microsoft Access does not recognize ActiveX controls in the same way it recognizes other controls. Because of this, exporting the contents of an ActiveX control like the Total Access Memo control to other formats using Microsoft Access must be done programmatically.

Here's some sample code to show how to use the Windows Clipboard to do this.

Unfortunately, this is an Access bug that occurs when you first "dirty" a new field and it can effect Total Access Memo.

To work around this issue, set Me.Dirty = True when moving to a new record.

If you are updating the control's Text property with code like this, you will lose your rich text formatting:

tamMemo.text = tamMemo.text & "New Text"

The Text property applies to the the unformatted text contents of the control. Updating this property replaces all formatting and text in the control. Use the SelStart and SelText properties to append text into the control.

When setting the Locked property of Total Access Memo in code, you must make sure you use the .Object syntax. For example suppose you have a control named tamDemo. The following code does not set the property:

tamDemo.Locked = True

This code must be changed to:

tamDemo.Object.Locked = True

This is because Access has a locked property that conflicts with Total Access Memo. This is an issue for any custom control that provides a locked property.

This can occur for a few reasons:

1. If you have the Name AutoCorrect Option for the database enabled at runtime and relink tables, you cause the form containing the ActiveX control to be opened by MS Access in design view and saved. This causes the ActiveX control to lose it's license because the license is not available in runtime.

To workaround this issue, please ensure that the "Name AutoCorrect" options are turned off prior to relinking your tables (manually or programmatically).

Manually disable the Name AutoCorrect Option:

The Name AutoCorrect options are found under: Tools, Options, General Tab. Uncheck "Track name AutoCorrect info". Now you can use the Link Table Wizard to relink tables or relink them programmatically.

Programmatically disable the Name AutoCorrect Option:

STEP 1: Create variables to hold the values. Do this in the Declarations section of the form:

Private fTrackNameAutoCorrectInfo As Boolean
Private fPerformNameAutoCorrect As Boolean
Private fLogNameAutoCorrectChanges As Boolean

STEP 2: Set variables equal to existing database settings

' Record the value of the Track Name Autocorrect and other options into the module level variables (above)
fTrackNameAutoCorrectInfo = GetOption("Track Name AutoCorrect Info")
fPerformNameAutoCorrect = GetOption("Perform Name AutoCorrect")
fLogNameAutoCorrectChanges = GetOption("Log Name AutoCorrect Changes")

STEP 3: Turn Name AutoCorrect options OFF *before* you relink the tables

' Once Tracking is turned off, the rest are automatically disabled
Application.SetOption "Track Name AutoCorrect Info", False
			
'RELINK YOUR TABLES AFTER THE OPTION IS TURNED OFF!
'----- Perform your programmatic relink here -----

STEP 4: Set Name AutoCorrect options to their original settings again

SetOption "Log Name AutoCorrect Changes", fLogNameAutoCorrectChanges
SetOption "Perform Name AutoCorrect", fPerformNameAutoCorrect
SetOption "Track Name AutoCorrect Info", fTrackNameAutoCorrectInfo

2. If you are trying to use this control in an environment outside of Microsoft Access. This control is only supported in the MS Access environment, and should not be used in any other application.

' Once Tracking is turned off, the rest are automatically disabled
Application.SetOption "Track Name AutoCorrect Info", False
					
'RELINK YOUR TABLES AFTER THE OPTION IS TURNED OFF!
'----- Perform your programmatic relink here -----

STEP 4: Set Name AutoCorrect options to their original settings again

SetOption "Log Name AutoCorrect Changes", fLogNameAutoCorrectChanges
SetOption "Perform Name AutoCorrect", fPerformNameAutoCorrect
SetOption "Track Name AutoCorrect Info", fTrackNameAutoCorrectInfo

2. If you are trying to use this control in an environment outside of Microsoft Access. This control is only supported in the MS Access environment, and should not be used in any other application.

3. This issue can occur when distributing an application and the runtime executable was not run on the user's machine. This is an important part of the redistribution/runtime process. Please ensure that you have run this executable once on every machine which this run-time application is distributed. For more information regarding the Runtime distribution, please review the manual or help file.

4. One of the shared files which our program uses was changed by another program that installs an older version. To resolve this, you should be able to simply run the runtime executable again to overwrite these files. If this does not work, you need to find out what new software was installed by your users and see which files might were affected.

5. A reference to the control was lost. To resolve this, open any module. Then go to Tools | References menu and look for references listed as "MISSING". Also, ensure that the reference to our control is listed. If it is not or it is with "MISSING" next to it, you need to reset this reference. You can do so by removing the missing reference and using the browse button to locate the fmsmemo9.ocx control. This file is usually located in the C:\Windows\System folder.

6. Please ensure that you did not copy and paste the control from one form to another, or on the same form. Although this method of inserting an ActiveX control usually works on a development machine, it causes issues on the user's machine. The proper way to place the control is through the Insert | ActiveX Control method each time.

Unfortunately, this also applies to copying an entire form or report with an ActiveX control in it. When you copy a form or report, Microsoft Access Actually copies each control individually then pastes them again in the appropriate places wherever you paste the new form. Using this method is essentially the same as copying the control itself and it will not work.

7. This can happen if you have had the demo version installed previously, and still have your references set to the Trial version of the control, or inserted the trial version of the control. To resolve this, you can do this two different ways:

A. When going to Insert | ActiveX Control, and scroll down this list. The area which you want to look at is FMS Total Access Memo. If you have the trial version still installed, or did an automatic uninstall, there should be another saying FMS Total Access Memo Trial. If this is the case, please ensure that you are selecting the full version of the control and not the Trial version.

B. Un-Install and Re-install

  • Do an uninstall of the Full version and Trial version of the product. You can do this by going to the control panel and using Add/Remove programs.
  • After the uninstall is complete, go to the location where the products were installed. If there is a folder left for either one, delete them.
  • Reinstall the full version of the product only.

Unfortunately, there are many issues in Microsoft Access that cause ActiveX controls to lose their control source.

For Forms

Fortunately, you can resolve this issue by setting the ControlSource in the form's load event. For example:

Private Sub Form_Load()
  tamDemo.ControlSource = "RTFField"
End Sub

(where tamDemo is the name of the control, and "RTFField" is the ControlSource.) Close and re-open the form to fire the Form_Load Event, and reset the control source.

Please Note: If you are not using the code above, you must reset the control source manually any time an error occurs on the form that causes it to lose its control source.

For Reports

The simplest way is to ensure the Total Access Memo control always shows the proper information on Reports is to use Total Access Memo in an UNBOUND way.

  1. Create a Text box on the report and set it's "Visible" property to False. Make its BackColor red so you know in design view it is an invisible control to the user.
  2. Set the Text box to the same Control Source that Total Access Memo is currently bound to.
  3. Remove the Control Source for the Total Access Memo Control.
  4. In the detail format event (which you are using anyhow for HeightOfText), simply add this code as one of the FIRST things done in the Detail Format:
Private SubPrivate Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
  ' NOTE: tamDemo is the name of the Total Access Memo control
  ' Kill the existing Value
  				
  tamDemo.Value = ""					
  ' Reset the value to the text box value
  tamDemo.Value = YourNewTextBoxName
End Sub

Now continue on with the rest of the detail format code (like HeightOfText)

Important Information for both Forms and Reports:

NOTE: One of the major (known) issues where a Control Source is caused to be lost, is when the application encounters an error and continues to run. MS Access is known to drop the control source for ActiveX controls when this occurs.

Recommended Solutions:

  1. Stop using "On error resume next", prevent the errors, and close the object instead of continuing on. When an error occurs, the user should close the object and re-open it. Provided you are using the code above, when the form closes and re-opens the Control Source will be restored by the code.
  2. The same solution recommended for Reports, will also work for Forms. The code to reset the value will be put in the On_Current event of the form and be aware that there is additional code needed to ensure the control source (text box) is properly updated with changes made to the Total Access Memo control.

The solution to this is to use the KeyPress or KeyDown event to perform the action you are trapping for.

To use this for the "Tab" or "Shift + Tab" Key, simply add the following Code to your form:

' This code moves focus out of the Total Access Memo Control to the next or previous control you want to set focus to	
Option Compare Database
Option Explicit

Private mfShiftDown As Boolean

Private Sub mmoTest_KeyDown(KeyCode As Integer, Private mfShiftDown As Boolean

Private Sub mmoTest_KeyDown(KeyCode As Integer, ByVal Shift As Integer)
' This code is from Microsoft Help for the KeyDown event
' Use bit masks to determine which key was pressed.
  mfShiftDown = ((Shift And acShiftMask) > 0)
  
End Sub

Private Sub mmoTest_KeyPress(keyascii As Integer)
  If KeyAscii = vbKeyTab Then
	If mfShiftDown Then
	  Me!PreviousControl.SetFocus
	Else
	  Me!NextControl.SetFocus
	End If
	KeyAscii = 0
  End If
End Sub

Where "mmoTest" is the name of your control and "NextControl" is the next control you want to set focus to and "PreviousControl" is the name of the previous control you want to set focus to when using Shift and Tab keys together.

This code shows how to use the Windows Clipboard with Total Access Memo on Forms. Declarations and public constants needed to use Copy and Paste via the Windows SendMessage function.

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
  ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  
Private Const WM_COPY = &H301
Private Const WM_PASTE = &H302

' To copy as RTF including objects, you will need to get the long value of the clipboard format for Rich Text.
Private Declare Function RegisterClipboardFormat Lib "user32" Alias "RegisterClipboardFormatA" _
  (ByVal lpString As String) As Long
  
Private Const CF_RTF = "Rich Text Format"
Private objFMSMemo As FMSMEMO

Private Sub Form_Load()
  ' Get a handle to the memo control
	Set objFMSMemo = Me.tamDemo.Object
End Sub

Sub Copy()
  ' Comments: Copies the contents of the Total Access Memo control
  ' to the Windows Clipboard. This subroutine assumes that
  ' the name of the Total Access Memo control is tamDemo and is
  ' set to a dimensioned object named "objFMSMemo" in the Form_Load Event.
  ' If your control is named differently, modify this code. 
				 	 
  Dim lngClipboardFormat As Long
  
   ' This code sends a Windows Copy message to the Memo control.
  If objFMSMemo.SelLength > 0 Then
 
   ' RegisterClipboardFormat returns a long value.
   ' lngClipboardFormat holds the returned value.
   lngClipboardFormat = RegisterClipboardFormat(CF_RTF)
  
   ' Use the returned value of lngClipboardFormat to specify the type data the clipboard will hold
   SendMessage objFMSMemo.hwnd, WM_COPY, lngClipboardFormat, 0
  Else
   MsgBox "Please select something to copy", vbOKOnly, "FMS Demo"
  End If
  
End Sub

Sub Paste()
  ' Comments: Copies the contents of the Windows Clipboard to the
  ' Total Access Memo control. This subroutine assumes that
  ' the name of the Total Access Memo control is tamTest.
  ' If your control is named differently, modify this code.
  ' This code sends a Windows Paste message to the Memo control.
  
  SendMessage objFMSMemo.hwnd, WM_PASTE, 0, 0
  
End Sub

Use this for Reports

Option Compare Database 
Option Explicit	
			
Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function CloseClipboard Lib "User32" () As Long
Private Declare Function OpenClipboard Lib "User32" (ByVal hwnd As Long) As Long
Private Declare Function EmptyClipboard Lib "User32" () As Long
Private Declare Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, ByVal lpString2 As Any) As Long
Private Declare Function SetClipboardData Lib "User32" (ByVal wFormat As Long, ByVal hMem As Long) As Long
Private Declare Function RegisterClipboardFormat Lib "User32" Alias "RegisterClipboardFormatA" _
  (ByVal lpString As String) As Long
  
Private Const CF_RTF = "Rich Text Format"
Private Const GHND = &H42
Private Const MAXSIZE = 4096
Private lngClipboardFormat As Long

' Constant for the maximum report height set by Access to 22 inches
Const MAXREPORTHEIGHT = 31680

Function CopyToClipBoard(strValue As String)
  Dim hGlobalMemory As Long
  Dim lpGlobalMemory As Long
  Dim hClipMemory As Long
  Dim x As Long
  
  On Error GoTo PROC_ERR
  lngClipboardFormat = RegisterClipboardFormat(CF_RTF)
  ' Allocate moveable global memory.
  '-------------------------------------------
  hGlobalMemory = GlobalAlloc(GHND, Len(strValue) + 1)	
  				
  ' Lock the block to get a far pointer to this memory.
  lpGlobalMemory = GlobalLock(hGlobalMemory)
  					
  ' Copy the string to this global memory.
  lpGlobalMemory = lstrcpy(lpGlobalMemory, strValue)
  					
  ' Unlock the memory.
  If GlobalUnlock(hGlobalMemory) <> 0 Then
	MsgBox "Could not unlock memory location. Copy aborted."
  End If
  
  ' Open the Clipboard to copy data to.
  If OpenClipboard(0&) = 0 Then
	MsgBox "Could not open the Clipboard. Copy aborted."
  End If
  
  ' Clear the Clipboard.
  x = EmptyClipboard()
  
  ' Copy the data to the Clipboard.
  hClipMemory = SetClipboardData(lngClipboardFormat, hGlobalMemory)
					
PROC_EXIT:
  If CloseClipboard() = 0 Then
	MsgBox "Could not close Clipboard."
  End If
  Exit Function
  
PROC_ERR:
  MsgBox Err.Number & " " & Err.Description
  Resume PROC_EXIT
End Function	
				
Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
  tamDemo.SelStart = 0
  tamDemo.SelLength = Len(tamDemo.Text)
  CopyToClipBoard tamDemo.SelValue
  ' DO YOUR PASTE INTO OTHER PROGRAM (like MS WORD) here
  '
  ' Continue with HeightOfText from Sample Application.
  ' ...
End Sub

This error occurs when you attempt to run the Update Wizard by double clicking the "Update.exe" directly instead of running it from the Windows Programs Menu shortcut.

This is because the update.exe file requires parameters to run and return the correct information. In order to determine if there is an update available for this product, please run the update wizard program from the Windows Programs menu or Windows Metro menu.


Older Versions

Only the 32-bit version. Access 2010 introduced the 64-bit version of Access. Total Access Memo 2007 only includes the 32-bit version and does not support the 64-bit versions.

While it may still support the 32-bit versions of Access 2010 and later, we recommend upgrading to the latest version so that enhancements since the 2007 version are included and your rich text memo controls are supported if users install the 64-bit version of Access.

No. Because of the changes made to Microsoft Access 2007 forms and reports, the control from Total Access Memo 2003 does not support Access 2007 and 2010.

Total Access Memo 2007 supports Access 2007, Access 2010 (32-bit version), and is backward compatible with Access 2003, 2002/XP and 2000.

Total Access Memo Manual and CD

Microsoft Access 64-bit Version is Shipping!

New Features

Supports 64 and 32-bit versions of Microsoft Access 2010, 2013, 2016, 2019, 2021, Office 365,
and Access 2007, 2003, 2002, and 2000!


View all FMS products for Microsoft Access All Our Microsoft Access Products

Reviews

Best ActiveX Control
Best ActiveX Control

"Total Access Memo makes all the difference in my Access apps! Only Memo gives me fonts, colors, images and all the formatting tools I need. It's great!"

B. Simmons, Ciena, Linthicum, MD

Memo Info

Additional Info

Question

 

 

Free Product Catalog from FMS