I documenti MS Word hanno un componente Visual Basic che consente l'esecuzione dei processi quando si verificano eventi specifici.
Uno di questi eventi è Document_New()
, che può essere utilizzato in questo modo per far apparire un "Form utente" che fa anche parte del documento Word:
Private Sub Document_New()
Dim myForm As UserForm1
Set myForm = New UserForm1
myForm.Show
End Sub
Il Form utente sembra proprio un modulo VB6 o MS Access e vari controlli possono essere aggiunti per raccogliere input dall'utente. In questo caso, verrà inserito un pulsante "Invia" con un evento OnClick()
che accede al database e restituisce un recordset utilizzato nel documento / modello.
Il codice sottostante può eseguire query SQL su un server SQL utilizzando un modello di oggetto DAO o ADODB.
L'obiettivo è eseguire alcune query SQL o stored procedure che restituiscano i dati necessari per il documento di Word. Tutto questo può essere fatto con il codice e ci sono un milione di esempi e modi per farlo.
Tuttavia ... La stringa di connessione per il driver ODBC o la connessione ADODB lascia il nomeserver / nome utente / password visibili a chiunque abbia accesso al documento o modello Word (es. l'utente apre documento / modello in Word e guarda il VB codice e ora può connettersi e fare qualsiasi cosa alle tabelle del database).
Come posso creare questa funzionalità ma non permettere che le proprietà della stringa di connessione siano visibili a qualcuno che utilizza il documento / modello?
Se si trattava di un'applicazione VB6, potrebbe essere compilata. Ma questo è solo un documento Word o un modello e non è compilabile.
Non credo che la funzionalità "Encrypted" si applichi qui. Questo semplicemente crittografa i dati attraverso la rete. Le proprietà della stringa di connessione sono ancora visibili all'occhio del tifoso.