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:
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:
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:
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:
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:
Private fTrackNameAutoCorrectInfo As Boolean Private fPerformNameAutoCorrect As Boolean Private fLogNameAutoCorrectChanges As Boolean
' 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")
' 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 -----
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 -----
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
Unfortunately, there are many issues in Microsoft Access that cause ActiveX controls to lose their control source.
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.
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.
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)
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.
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
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.
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.
Supports 64 and 32-bit versions of Microsoft Access 2010, 2013, 2016, 2019, 2021, Office 365,
and Access 2007, 2003, 2002, and 2000!
"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