| Modules |
| 5.1 Cancellare un altro modulo e rigenerarlo opportunamente modificato. |
| AntoGal |
|
(D) E' possibile da un modulo cancellare un altro modulo e rigenerarlo opportunamente modificato? (R) La funzione che segue, esegue una ricerca con sostituzione nel modulo indicato.
Function TrovaESostituisci(mdl As Module, strTestoRicerca As String, strNuovoTesto As String) As Boolean
Dim lngSRiga As Long, lngSCol As Long
Dim lngERiga As Long, lngECol As Long
Dim strRiga As String, strNuovaRiga As String
Dim intCar As Integer, intPrima As Integer, intDopo As Integer
Dim strSinistra As String, strDestra As String
'ricerca la stringa.
If mdl.Find(strTestoRicerca, lngSRiga, lngSCol, lngERiga, lngECol) Then
'memorizza il testo della linea contenente la stringa.
strRiga = mdl.Lines(lngSRiga, Abs(lngERiga - lngSRiga) + 1)
'determina la lunghezza della riga.
intCar = Len(strRiga)
'determina il numero di caratteri che precedono il testo di ricerca.
intPrima = lngSCol - 1
'determina il numero di caratteri che seguono il testo di ricerca.
intDopo = intCar - CInt(lngECol - 1)
'memorizza i caratteri a sinistra del testo di ricerca.
strSinistra = Left$(strRiga, intPrima)
'memorizza i caratteri a destra del testo di ricerca.
strDestra = Right$(strRiga, intDopo)
'costruisce la stringa con testo di sostituzione.
strNuovaRiga = strSinistra & strNuovoTesto & strDestra
'sostituisce la riga originale.
mdl.ReplaceLine lngSRiga, strNuovaRiga
TrovaESostituisci = True
Else
TrovaESostituisci = False
End If
Exit_TrovaESostituisci:
Exit Function
Error_TrovaESostituisci:
MsgBox Err & ": " & Err.Description
TrovaESostituisci = False
Resume Exit_TrovaESostituisci
End Function
Nel seguente esempio viene modificato un modulo appartenente ad un altro DB.
Private Sub AggiornaDB()
Dim appAccess As Access.Application, mdl As Module
'restituisce riferimento all'oggetto Application di Microsoft Access
Set appAccess = CreateObject("Access.Application.8")
'apre database in Microsoft Access
appAccess.OpenCurrentDatabase "C:\tuodb.mdb"
appAccess.DoCmd.OpenModule "NomeTuoModulo"
Set mdl = appAccess.Modules!NomeTuoModulo
TrovaESostituisci mdl, "Public Const VersioneDemo As Boolean = False", "Public Const VersioneDemo As Boolean = True"
appAccess.DoCmd.Save 'salva
appAccess.CloseCurrentDatabase
Set appAccess = Nothing
MsgBox "Modifiche eseguite!", vbInformation
End Sub
|