Scenario: Il tuo file di aiuto compilato ti mostra correttamente gli argomenti e il sommario, ma le pagine dell'indice e della ricerca si sono ingarbugliate con il sistema di aiuto di MS Access.
Le seguenti informazioni sono tratte dalla Microsoft Knowledge Base Q271390
Sintomi
In un foglio di Microsoft Access che è associato con un file di aiuto HTML personalizzato e compresso (.chm), potrai notare che anche se il file di aiuto può visualizzare l'argomento appropriato, esso viene visualizzato in una finestra di aiuto di Access con l'indice Access predefinito, con l'Assistente risposte di Access, e il titolo di Access. Noterai che questo comportamento si verifica anche se hai specificato un titolo e un indice personalizzato nel file .hhp del file di aiuto personalizzato. Tuttavia, se fai un doppio click sul file di aiuto HTML compresso (.chm) da Windows Explorer, il file di aiuto personalizzato appare nella sua finestra, come previsto.
NOTA: Questo comportamento non si verifica con file di aiuto non HTML (*.hlp).
Risoluzione
Puoi scrivere del codice Visual Basic per Applicazioni per eseguire il file di aiuto HTML compresso nella sua finestra, come illustrato nei passi seguenti.
NOTA: Questo esempio visualizza il file di aiuto nella sua finestra solo quando premi F1. Vedi il seguente articolo nella Microsoft Knowledge Base Q242433 MOD2000: Come creare file di aiuto HTML sensibili al contesto e quindi segui le istruzioni nell'articolo per creare il file di aiuto e il database di esempio. Nel medesimo database in cui hai creato la form, fai click su Moduli nella finestra del Database, e quindi fai click su Nuovo. Digita o incolla il seguente codice nel nuovo modulo:
Option Compare Database
Option Explicit
Declare Function HtmlHelp Lib "hhctrl.ocx" Alias "HtmlHelpA" _
(ByVal hwndCaller As Long, ByVal pszFile As String, _
ByVal uCommand As Long, ByVal dwData As Long) As Long
Const HH_DISPLAY_TOPIC = &H0
Const HH_SET_WIN_TYPE = &H4
Const HH_GET_WIN_TYPE = &H5
Const HH_GET_WIN_HANDLE = &H6
Const HH_DISPLAY_TEXT_POPUP = &HE
Const HH_HELP_CONTEXT = &HF
Const HH_TP_HELP_CONTEXTMENU = &H10
Const HH_TP_HELP_WM_HELP = &H11
Public Sub Show_Help(HelpFileName As String, MycontextID As Long)
'Viene avviato un argomento specifico identificato dalla variabile context-ID in
'risposta al click su questo pulsante.
Dim hwndHelp As Long
'Il valore di ritorno è l'handle della finestra di aiuto creata.
Select Case MycontextID
Case Is = 0
hwndHelp = HtmlHelp(Application.hWndAccessApp,
HelpFileName, _HH_DISPLAY_TOPIC, MycontextID)
Case Else
hwndHelp = HtmlHelp(Application.hWndAccessApp,
HelpFileName, _HH_HELP_CONTEXT, MycontextID)
End Select
End Sub
Public Function HelpEntry()
'Identifica il nome del file di aiuto e un possibile context-id.
Dim FormHelpId As Long
Dim FormHelpFile As String
Dim curForm As Form
'Imposta la variabile curForm alla form attualmente attiva.
Set curForm = Screen.ActiveForm
'Come predefinito, specifica un file di aiuto e un context-id generico. Nota che
'la posizione del tuo file potrebbe essere diversa.
FormHelpFile = "C:\MyProject.chm"
FormHelpId = 1001
'Controlla la proprietà Help file della form. Se un file di aiuto esiste,
'assegna il nome e il context-id alle rispettive variabili.
If curForm.HelpFile <> "" Then
FormHelpFile = curForm.HelpFile
End If
'Se il context-id di aiuto del controllo non è nullo e maggiore di
'zero, assegna il valore alla variabile.
If Not IsNull(curForm.ActiveControl.Properties("HelpcontextId")) Then
If curForm.ActiveControl.Properties("HelpcontextId") > 0 Then
FormHelpId = curForm.ActiveControl.Properties("HelpcontextId")
End If
End If
'Chiama la funzione per avviare il file di aiuto, passandole il nome del
'file di aiuto e il context-id.
Show_Help FormHelpFile, FormHelpId
End Function
Salva il modulo, e quindi chiudi l'editor di Visual Basic. Nella finestra del database, fai click su Macro, e quindi click su Nuovo. Salva la nuova macro con nome AutoKeys. Nel menù Visualizza, fai click su Nomi macro. Digita il seguente testo nella prima riga sotto Nome macro: {F1}.
Imposta l'azione per {F1} a RunCode. Per l'argomento Function Name, digita il seguente testo:
=HelpEntry()
Salva e quindi chiudi la macro.
Apri la form Form1 in Visualizzazione Form.
Fai click nel secondo campo, e quindi premi F1.
Nota che il file di aiuto viene visualizzato nella sua finestra.
Stato
Microsoft ha confermato che questo è un problema nei prodotti Microsoft che sono elencati all'inizio di questo articolo.