Astuce
Astuce
Valeur de ELEMENT :
- "appwiz.cpl" ' ajout/supression de programmes
- "desk.cpl" ' affichage
- "inetcpl.cpl @0" ' internet
- "inetcpl.cpl @1" ' utilisateurs
- "intl.cpl" ' paramètres régionaux
- "joy.cpl" ' contrôleurs de jeux
- "main.cpl @0" ' souris
- "main.cpl @1" ' clavier
- "modem.cpl" ' modems
- "mmsys.cpl @0" ' multimédia
- "mmsys.cpl @1" ' sons
- "netcpl.cpl" ' réseau
- "password.cpl" ' mots de passe
- "sysdm.cpl @0" ' système
- "sysdm.cpl @1" ' ajout de nouveau matériel
- "timedate.cpl" ' date/heure
Décharger toutes les Forms
Créez la procédure suivante :
Public Sub UnloadAllForms()
Dim Feuille As Form
For Each Feuille In Forms
Unload Feuille
Set Feuille = Nothing
Next Feuille
End Sub
Enumerations
This section lists enumerations exposed by cPopMenu.
Interfaces
This section lists the Classes exposed by cPopMenu. For each class, the methods and events are listed.
PopMenu {A22D979C-2684-11D2-8E21-10B404C10000}
Methods
Property Get HighlightStyle() As CSPHighlightStyleConstants
Under development.
Property Let HighlightStyle(RHS As CSPHighlightStyleConstants)
Under development.
Function ShowPopupMenu(ByVal objTo As Object, ByVal vKeyParent As Variant, ByVal x As
Single, ByVal y As Single, Optional ByVal eOptions As CSPShowPopupMenuConstants=0) As
Long
Shows the popup menu associated with a given menu item.
Property Set BackgroundPicture() As Picture
Sets a picture to tile into the background of the menu.
Property Get BackgroundPicture() As Picture
Sets a picture to tile into the background of the menu.
Sub ClearBackgroundPicture
Removes the picture set with the BackgroundPicture property.
Sub GetVersion(ByVal lMajor As Long, ByVal lMinor As Long, ByVal lRevision As Long)
Returns the current control version string.
Property Get HighlightCheckedItems() As Boolean
Gets/sets whether the background to icons for checked menu items are highlighted using a dither pattern
when the menu item is selected.
Property Let HighlightCheckedItems(RHS As Boolean)
Gets/sets whether the background to icons for checked menu items are highlighted using a dither pattern
when the menu item is selected.
Property Get MenuExists(ByVal vKey As Variant) As Boolean
Returns whether a given menu index or key exists in the menu.
Property Get MenuIndex(ByVal vKey As Variant) As Long
Gets the index of the menu item with the specified key.
Property Get MenuKey(ByVal lIndex As Long) As String
Gets/sets a unique key string associated with a menu item.
Property Let MenuKey(ByVal lIndex As Long, RHS As String)
Gets/sets a unique key string associated with a menu item.
Property Get MenuTag(ByVal vKey As Variant) As String
Gets/sets a string value associated with a menu item.
Property Let MenuTag(ByVal vKey As Variant, RHS As String)
Gets/sets a string value associated with a menu item.
Property Get MenuDefault(ByVal vKey As Variant) As Boolean
Gets/sets whether the menu item should be shown in Bold font.
Property Let MenuDefault(ByVal vKey As Variant, RHS As Boolean)
Gets/sets whether the menu item should be shown in Bold font.
Property Let TickIconIndex(RHS As Long)
Gets/sets the 0 based index of an icon in the ImageList used to draw the check image for checked menu
items if no other icon has been set.
Property Get TickIconIndex() As Long
Gets/sets the 0 based index of an icon in the ImageList used to draw the check image for checked menu
items if no other icon has been set.
Property Get SystemMenuCaption(ByVal lPosition As Long) As String
Gets/sets the caption of a system menu item given its ID.
Property Get SystemMenuCount() As Long
Returns the number of items on the system menu.
Sub SystemMenuRemoveItem(ByVal lPosition As Long)
Removes an item from the system menu given its ID.
Function SystemMenuAppendItem(ByVal sCaption As String) As Long
Appends an item to the System Menu and returns its identifier ID.
Sub SystemMenuRestore
Restores the system menu to its default state.
Property Let ImageList(RHS As Variant)
Associates an ImageList with the control. This can either be a COMCTL32 image list, a vbAccelerator
ImageList or an API hImageList handle. Make sure the ImageList contains some icons before using this.
Property Get Caption(ByVal vKey As Variant) As String
Gets/sets the caption of a menu item.
Property Let Caption(ByVal vKey As Variant, RHS As String)
Gets/sets the caption of a menu item.
Property Get Enabled(ByVal vKey As Variant) As Boolean
Gets/sets whether a menu item appears enabled or not.
Property Let Enabled(ByVal vKey As Variant, RHS As Boolean)
Gets/sets whether a menu item appears enabled or not.
Property Get Checked(ByVal vKey As Variant) As Boolean
Gets/sets whether a menu item is checked or not.
Property Let Checked(ByVal vKey As Variant, RHS As Boolean)
Gets/sets whether a menu item is checked or not.
Property Get HelpText(ByVal vKey As Variant) As String
Gets/sets a string associated with a menu item. This can be used to display help text in response to the
MenuHighlight event.
Property Let HelpText(ByVal vKey As Variant, RHS As String)
Gets/sets a string associated with a menu item. This can be used to display help text in response to the
MenuHighlight event.
Property Let ItemIcon(ByVal vKey As Variant, RHS As Long)
Gets/sets the 0 based index of an icon in the ImageList to be shown against a menu item. Set to -1 to
show no icon.
Property Get ItemIcon(ByVal vKey As Variant) As Long
Gets/sets the 0 based index of an icon in the ImageList to be shown against a menu item. Set to -1 to
show no icon.
Property Get ItemData(ByVal vKey As Variant) As Long
Gets/sets a long value associated with a menu item.
Property Let ItemData(ByVal vKey As Variant, RHS As Long)
Gets/sets a long value associated with a menu item.
Property Get hPopupMenu(ByVal vKey As Variant) As Long
Returns a Win32 hMenu handle to a popup menu under the specified menu item.
Property Get PositionInMenu(ByVal vKey As Variant) As Long
Under development.
Property Get NextSibling(ByVal vKey As Variant) As Long
Gets the next menu item from the specified menu item.
Property Get SiblingCount(ByVal vKey As Variant) As Long
Returns the number of menu items at the same level as the specified menu item.
Property Get HasChildren(ByVal vKey As Variant) As Variant
Returns whether the specified menu item has any sub-menus.
Property Get FirstChild(ByVal vKey As Variant) As Long
Returns the index of the first menu item below the specified item.
Property Get Parent(ByVal vKey As Variant) As Long
Gets the index of the parent menu item for a given menu item.
Property Get UltimateParent(ByVal vKey As Variant) As Long
Gets the ultimate parent menu item index of a given menu item.
Property Get IndexForMenuHierarchyParamArray(Optional ByVal vHierarchy() As Variant) As
Long
Same as IndexForMenuHierarchy, but takes a parameter array rather than a long array type as the
hierarchy.
Property Get IndexForMenuHierarchy(ByVal lHierarchy() As Long) As Long
Returns the index for the menu item which appears at the given hierarchy.
Sub GetHierarchyForIndexPosition(ByVal vKey As Variant, ByVal lHierarchy() As Long)
Returns a hierarchy for a given menu index. The hierarchy is an array indicating the position of the menu
at each level.
Property Get HierarchyPath(ByVal vKey As Variant, ByVal lStartLevel As Long, ByVal sSeparator
As String) As String
Returns a string containing a path equivalent of a given menu item. For example, this might be
FavouritesSites.
Function ClearSubMenusOfItem(ByVal vKey As Variant) As Long
Removes all sub menus of a particular menu item.
Sub RemoveItem(ByVal vKey As Variant)
Removes a given menu item.
Property Get IDForIndex(ByVal vKey As Variant) As Long
Returns the Win32 Menu Identifier for a given menu item.
Function AddItem(ByVal sCaption As String, Optional ByVal sKey As String=, Optional ByVal
sHelptext As String=, Optional ByVal lItemData As Long=0, Optional ByVal lParentIndex As
Long=0, Optional ByVal lIconIndex As Long=-1, Optional ByVal bChecked As Boolean=False,
Optional ByVal bEnabled As Boolean=True) As Long
Adds a new menu item and optionally sets extended properties.
Function ReplaceItem(ByVal vKey As Variant, Optional ByVal sCaption As Variant, Optional ByVal
sHelptext As Variant, Optional ByVal lItemData As Variant, Optional ByVal lIconIndex As Variant,
Optional ByVal bChecked As Variant, Optional ByVal bEnabled As Variant) As Long
Replaces a menu item with the specified properties.
Function InsertItem(ByVal sCaption As String, ByVal vKeyBefore As Variant, Optional ByVal sKey
As String=, Optional ByVal sHelptext As String=, Optional ByVal lItemData As Long=0, Optional
ByVal lIconIndex As Long=-1, Optional ByVal bChecked As Boolean=False, Optional ByVal
bEnabled As Boolean=True) As Long
Same as the AddItem method, except the menu item is inserted before the specified menu item.
Sub EnsureMenuSeparators(ByVal hMenu As Long)
Under development.
Sub Clear
Removes all menus.
Property Get Count() As Integer
Gets the total number of menu items.
Sub SubClassMenu(Optional ByVal oForm As Object=Nothing, Optional ByVal
bLeaveTopLevelMenus As Boolean=False)
Initialises the icon menu against a form's menu. Call this method before using any other methods except
ImageList.
Sub CheckForNewItems
Interogates the menu and checks for any new items or removed items (i.e. ones which have been
Loaded, Unloaded or had their Visible property changed). For each new item found, the
RequestNewMenuDetails event is raised.
Property Get MenuItemsPerScreen() As Long
Returns the number of menu items which can be fitted vertically on the screen.
Sub UnsubclassMenu
Under development.
Events
Enumerations
This section lists enumerations exposed by vbAcceleratorGrid.
Interfaces
This section lists the Classes exposed by vbAcceleratorGrid. For each class, the methods and events are
listed.
cGridCell {C47CB531-DA3E-11D2-8E21-44C10AC10000}
Methods
Property Get ItemData() As Long
Sub DefaultBackColor
Sub DefaultForeColor
Events
None
cShellSortTGridCells {C47CB525-DA3E-11D2-8E21-44C10AC10000}
Methods
Sub Clear
Clears all sort settings.
Property Get LastSortIndex() As Integer
vbalGrid {C47CB52A-DA3E-11D2-8E21-44C10AC10000}
Methods
Property Get HighlightSelectedIcons() As Boolean
Gets/sets whether icons in selected cells will be highlighted using the selection colour.
Property Let HighlightSelectedIcons(RHS As Boolean)
Gets/sets whether icons in selected cells will be highlighted using the selection colour.
Property Get DrawFocusRectangle() As Boolean
Gets/sets whether a focus rectangle (dotted line around the selection) will be shown.
Property Let DrawFocusRectangle(RHS As Boolean)
Gets/sets whether a focus rectangle (dotted line around the selection) will be shown.
Property Get Enabled() As Boolean
Gets/sets whether the grid is enabled or not. Note the grid can still be read when it is disabled, but
cannot be selected or edited.
Property Let Enabled(RHS As Boolean)
Gets/sets whether the grid is enabled or not. Note the grid can still be read when it is disabled, but
cannot be selected or edited.
Property Get DisableIcons() As Boolean
Gets/sets whether icons are drawn disabled when the control is disabled.
Property Let DisableIcons(RHS As Boolean)
Gets/sets whether icons are drawn disabled when the control is disabled.
Property Get Editable() As Boolean
Gets/sets whether the grid will be editable (i.e. raise RequestEdit events).
Property Let Editable(RHS As Boolean)
Gets/sets whether the grid will be editable (i.e. raise RequestEdit events).
Property Get SortObject() As cShellSortTGridCells
Returns a reference to the sort object where grid sorting options can be specified.
Sub Sort
Sorts the grid data according to the options set up in the SortObject.
Property Get EvaluateTextHeight(ByVal lRow As Long, ByVal lCol As Long) As Long
Determines the ideal height required to display all the cell's text in a cell. This property is only of any use
if the Cell's CellTextAlign property allows multiple lines.
Property Get EvaluateTextWidth(ByVal lRow As Long, ByVal lCol As Long, Optional ByVal
bForceNoModify As Boolean=True) As Long
Determines the ideal width required to fully display text in a cell.
Property Let DefaultRowHeight(RHS As Long)
Gets/sets the height which will be used as a default for rows in the grid.
Property Get DefaultRowHeight() As Long
Gets/sets the height which will be used as a default for rows in the grid.
Property Get Redraw() As Boolean
Gets/sets whether the grid is redrawn in response to changes. Set to False whilst setting many properties
to increase speed. Setting to True after it has been False forces a re-draw of the control.
Property Let Redraw(RHS As Boolean)
Gets/sets whether the grid is redrawn in response to changes. Set to False whilst setting many properties
to increase speed. Setting to True after it has been False forces a re-draw of the control.
Property Let ScrollBarStyle(RHS As ECGScrollBarStyles)
Gets/sets the style in which scroll bars are drawn. Flat or Encarta style scroll bars are only supported in
systems with COMCTL32.DLL version 4.72 or higher.
Property Get ScrollBarStyle() As ECGScrollBarStyles
Gets/sets the style in which scroll bars are drawn. Flat or Encarta style scroll bars are only supported in
systems with COMCTL32.DLL version 4.72 or higher.
Property Get CellFormattedText(ByVal lRow As Long, ByVal lCol As Long) As String
Gets the text of a cell with any formatting string applicable to the cell's column applied.
Property Get CellText(ByVal lRow As Long, ByVal lCol As Long) As Variant
Gets/sets the text associated with a cell. This property is a variant allowing you to store Numbers and
Dates as well. In columns which are not visible, it could also be used to store objects.
Property Let CellText(ByVal lRow As Long, ByVal lCol As Long, RHS As Variant)
Gets/sets the text associated with a cell. This property is a variant allowing you to store Numbers and
Dates as well. In columns which are not visible, it could also be used to store objects.
Property Get CellTextAlign(ByVal lRow As Long, ByVal lCol As Long) As ECGTextAlignFlags
Gets/sets the alignment and formatting properties used to draw cell text.
Property Let CellTextAlign(ByVal lRow As Long, ByVal lCol As Long, RHS As ECGTextAlignFlags)
Gets/sets the alignment and formatting properties used to draw cell text.
Property Get CellIndent(ByVal lRow As Long, ByVal lCol As Long) As Long
Gets/sets the horizontal indentation of a cell from the cell's border.
Property Let CellIndent(ByVal lRow As Long, ByVal lCol As Long, RHS As Long)
Gets/sets the horizontal indentation of a cell from the cell's border.
Property Get CellExtraIcon(ByVal lRow As Long, ByVal lCol As Long) As Long
Gets/sets the extra icon for a cell. This icon will always appear in the leftmost position for the cell. Set
CellExtraIcon to -1 to remove an icon. CellExtraIcons represent ImageList icon indexes and run from 0 to
Count-1.
Property Let CellExtraIcon(ByVal lRow As Long, ByVal lCol As Long, RHS As Long)
Gets/sets the extra icon for a cell. This icon will always appear in the leftmost position for the cell. Set
CellExtraIcon to -1 to remove an icon. CellExtraIcons represent ImageList icon indexes and run from 0 to
Count-1.
Property Get CellItemData(ByVal lRow As Long, ByVal lCol As Long) As Long
Gets/sets a long value associated with the cell.
Property Let CellItemData(ByVal lRow As Long, ByVal lCol As Long, RHS As Long)
Gets/sets a long value associated with the cell.
Property Get CellSelected(ByVal lRow As Long, ByVal lCol As Long) As Boolean
Gets/sets whether a cell is selected or not.
Property Let CellSelected(ByVal lRow As Long, ByVal lCol As Long, RHS As Boolean)
Gets/sets whether a cell is selected or not.
Property Get CellIcon(ByVal lRow As Long, ByVal lCol As Long) As Long
Gets/sets the icon for a cell. If the cell has an icon set via the CellExtraIcon property, this icon will appear
after it. Set CellIcon to -1 to remove an icon. CellIcons represent ImageList icon indexes and run from 0
to Count-1.
Property Let CellIcon(ByVal lRow As Long, ByVal lCol As Long, RHS As Long)
Gets/sets the icon for a cell. If the cell has an icon set via the CellExtraIcon property, this icon will appear
after it. Set CellIcon to -1 to remove an icon. CellIcons represent ImageList icon indexes and run from 0
to Count-1.
Property Get CellBackColor(ByVal lRow As Long, ByVal lCol As Long) As ULong
Gets/sets the background colour for a cell. Set to -1 to make the cell transparent.
Property Let CellBackColor(ByVal lRow As Long, ByVal lCol As Long, RHS As ULong)
Gets/sets the background colour for a cell. Set to -1 to make the cell transparent.
Property Get CellForeColor(ByVal lRow As Long, ByVal lCol As Long) As ULong
Gets/sets the foreground colour to draw a cell in. Set to -1 to use the default foreground colour.
Property Let CellForeColor(ByVal lRow As Long, ByVal lCol As Long, RHS As ULong)
Gets/sets the foreground colour to draw a cell in. Set to -1 to use the default foreground colour.
Sub CellDefaultForeColor(ByVal lRow As Long, ByVal lCol As Long)
Sets a cell to use the default foreground colour (the fore colour of the control).
Sub CellDefaultBackColor(ByVal lRow As Long, ByVal lCol As Long)
Sets a cell to use the default background colour (transparent).
Property Get CellFont(ByVal lRow As Long, ByVal lCol As Long) As Font
Gets/sets the font to use to draw a cell.
Property Let CellFont(ByVal lRow As Long, ByVal lCol As Long, RHS As Font)
Gets/sets the font to use to draw a cell.
Sub CellDefaultFont(ByVal lRow As Long, ByVal lCol As Long)
Sets a cell to use the default font.
Property Get MultiSelect() As Boolean
Gets/sets whether multiple grid cells or rows can be selected or not.
Property Let MultiSelect(RHS As Boolean)
Gets/sets whether multiple grid cells or rows can be selected or not.
Property Get RowMode() As Boolean
Gets/sets whether cells can be selected in the grid (False) or rows (True).
Property Let RowMode(RHS As Boolean)
Gets/sets whether cells can be selected in the grid (False) or rows (True).
Property Get RowIsGroup(ByVal lRow As Long) As Boolean
Gets/sets whether a row should be regarded as a group row.
Property Let RowIsGroup(ByVal lRow As Long, RHS As Boolean)
Gets/sets whether a row should be regarded as a group row.
Property Get RowGroupStartColumn(ByVal lRow As Long) As Long
Property Let Cell(ByVal lRow As Long, ByVal lCol As Long, RHS As cGridCell)
Public Event KeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal bDoDefault As
Boolean)
Raised when a key is pressed in the control.
Public Event KeyPress(ByVal KeyAscii As Integer)
Raised after the KeyDown event when the key press has been converted to an ASCII code.
Public Event KeyUp(ByVal KeyCode As Integer, ByVal Shift As Integer)
Raised when a key is released on the grid.
Public Event MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single,
ByVal y As Single, ByVal bDoDefault As Boolean)
Raised when the a mouse button is pressed over the control.
Public Event MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single,
ByVal y As Single)
Raised when the mouse moves over the control, or when the mouse moves anywhere and a mouse
button has been pressed over the control.
Public Event MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y
As Single)
Raised when a mouse button is released after having been pressed over the control.
Public Event DblClick(ByVal lRow As Long, ByVal lCol As Long)
Raised when the user double clicks on the grid.
Public Event RequestRow(ByVal lRow As Long, ByVal sKey As String, ByVal bVisible As Boolean,
ByVal lHeight As Long, ByVal bGroupRow As Boolean, ByVal bNoMoreRows As Boolean)
Raised when the grid is in Virtual mode and the grid has been scrolled to expose a new row. Set
bNoMoreRows to True to indicate all rows have been added.
Public Event RequestRowData(ByVal lRow As Long)
Raised in virtual mode when a new row has been added in response to RequestRow. Respond by filling
in the cells for that row.
Public Event ColumnOrderChanged
ENCRYPTAGE/DECRYPTAGE
La méthode de cryptage est basée sur la conversion des caractères du code ASCII (8-bits) vers un
autre dictionnaire (6-bits). Si vous avez des questions sur le code, n'hésitez pas à me contacter.
Option Explicit
' ****************************************************************************
' *** Fonctions de cryptage/décryptage ***************************************
' ****************************************************************************
' * N'hésitez pas à m'envoyer un mail si: *
' * - Vous souhaitez me donnez vos impressions *
' * - Vous avez envie de me faire partager des modifications de code que vous*
' * auriez faites. *
' ****************************************************************************
' * AUTEUR: FlyKiller. *
' ****************************************************************************
Private Const CodeChars =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-/"
Public Enum CryptMethods
cmRaiseLenght
cmNumberOfTime
End Enum
Private Enum BitCoding
bc6Bits = 5
bc8Bits = 7
End Enum
Public Enum SerialTypes
stInvalid = 0
stUnlimited = 1
stTimeLimitedA = 2
stTimeLimitedB = 4
stTimeLimitedC = 8
End Enum
' ****************************************************************************
' * Function CryptMsg *
' *--------------------------------------------------------------------------*
' * PARAMETRES: *
' * - Msg: message à crypter. *
' * - CryptMethod: spécifie si il faut crypter x fois (NumberOfTime) ou *
' * jusqu'à ce que le message crypté arrive à une taille *
' * limite (RaiseLength) *
' * - CryptLimit: nombre de fois qu'il faut crypter (si NumberOfTime) ou *
' * taille maximale que le message crypté ne peut dépasser *
' * (si RaiseLength) *
' *--------------------------------------------------------------------------*
' * VALEURS RETOURNEES: *
' * - Retour de la fonction: Message crypté. *
' * - CryptLimit: Nombre de fois que le message a été réellement crypté. *
' * (Utile pour décrypter le message s'il a été encrypté *
' * plusieurs fois de suite) *
' ****************************************************************************
Public Function CryptMsg(ByVal Msg As String, _
Optional ByVal CryptMethod As CryptMethods = cmNumberOfTime, _
Optional ByRef CryptLimit As Integer = 1) As String
Dim BS As String
Dim I As Integer
' ****************************************************************************
' * Function UncryptMsg *
' *--------------------------------------------------------------------------*
' ****************************************************************************
Public Function UncryptMsg(ByVal Msg As String, _
Optional ByVal UncryptRepeat As Integer = 1) As String
Dim BS As String
BS = GetBitString(Msg, bc6Bits)
UncryptMsg = GetConvertedString(BS, bc8Bits)
End Function
' ****************************************************************************
' * [Function GetBitString] *
' *--------------------------------------------------------------------------*
' ****************************************************************************
Private Function GetBitString(ByVal Msg As String, _
ByVal BitPerChar As BitCoding) As String
Dim LetterIdx As Integer
Dim AscLetter As Integer
Dim BitIdx As Integer
' ****************************************************************************
' * [Function GetConvertedString] *
' *--------------------------------------------------------------------------*
' ****************************************************************************
Private Function GetConvertedString(ByVal BitString As String, _
ByVal BitPerChar As BitCoding) As String
Dim LetterIdx As Integer
Dim AscLetter As Integer
Dim BitIdx As Integer
Dim db As DAO.Database
End Function
Just released 11/04/99, version 1.3 fixes a number of problems. The transparancy works, the dropped
frame is fixed, the inability to display some GIF files is fixed, etc. The only remaining "problems" are that
the control always refreshes the background thus erasing some GIFs that expect each frame to remain.
Download
Using Windows NT and VB6 you receive the error message "System Error &H80004002 (-2147467262)
No such interface supported." The culprit here is a rogue version of COMCAT.DLL. The version which
comes with VB6 is 4.71 and if you somehow get version 5.0, this error will occur. Simply unregister the
version 5.0 DLL, replace it with the correct version 4.71 off the VB6 CD and re-register. Tip!
You install VB6, and then compile a VB5 install on your machine... Then you install the VB5 application
on another PC. You may get the error "The Jet VBA file (VBAJET.DLL for 16-bit versions, or
VBAJET32.DLL for 32-bit versions) failed to initialize when called. Try reinstalling the application(s) that
returned the error." You need to add the EXPSRV.DLL to your VB5 install since VB6 updated DAO. Tip!
http://www.asmincorp.com/sourceandtips/50003.zip