Newsgroup: it.comp.appl.access
Titolo: Sicurezza Access - Protezione con serial hd

Salve, ho scaricato il demo di Salvino Crucitti (SV) - Sicurezza in
Access e devo dire che funziona bene... difatti una volta scaricatp
compare la scritta "Primo utilizzo. OK per continuare " e quindi
successivamente questa scritta non copare più e se si tenta di
copiarlo su un altro pc si chiude!
Il mio problema. Dopo alcune modifiche al database principale
ovviamente con questo codice inserito, come posso azzerare le
variabili iniziali in modo che poi mi compaia la scritta prevista dal
MsgBox "Primo utilizzo. OK per continuare "? Mi piacerebbe avere una
specie di "reset" nascosto da qualche parte per poter poi creare la
copia da rilasciare che a sua volta si inizializza. Grazie


Scusate... ho dimenticato di precisare il sito da cui ho scaricato il
materiale: 
www.accessgroup.it

 ha scritto nel messaggio 
news:85ffd50f-38e8-494b...@q39g2000hsf.googlegroups.com...
Scusate... ho dimenticato di precisare il sito da cui ho scaricato il
materiale: 
www.accessgroup.it
[risposta]
Da quanto leggo, dovresti eliminare la proprietą creata nel file mdb tramite 
la sub procSetCreatePrp.
L'help del Metodo CreateProperty, utilizzato dalla sub, dice (fra le altre 
cose):
...
Per rimuovere dall'insieme un oggetto Property definito dall'utente, 
utilizzare il metodo Delete sull'insieme Properties. Non č possibile 
eliminare proprietą interne al sistema.
...
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Grazie Sergio, veramente per me è difficile implementare il metodo
Delete che mi hai suggerito... in quanto non sono molto
capace in linguaggio Vb puro!!! spero possa esistere qualche sistema
per quanto desidero. Ho provato diverse soluzioni del tipo: mettendo
l'apice all'inizio delle varie Funciotn o Sub per vedere la reazione
ad ogni apertura del Db, ma niente da fare... una volta aperto sembra
che la variabile si permanentemente fissata all'interno del Mdb.
Grazie a quanti si prodigheranno in questo.

 ha scritto nel messaggio 
news:2751bc85-bc97-408e...@q77g2000hsh.googlegroups.com...
Grazie Sergio, veramente per me è difficile implementare il metodo
Delete che mi hai suggerito... in quanto non sono molto
capace in linguaggio Vb puro!!! spero possa esistere qualche sistema
per quanto desidero. Ho provato diverse soluzioni del tipo: mettendo
l'apice all'inizio delle varie Funciotn o Sub per vedere la reazione
ad ogni apertura del Db, ma niente da fare... una volta aperto sembra
che la variabile si permanentemente fissata all'interno del Mdb.
Grazie a quanti si prodigheranno in questo.
[risposta]
Prova così:
'---
Sub procDeletePrp(strObjType As String, strObjName As String, strPrpName As 
String)
On Error GoTo ErrPrp
Dim db As DAO.Database
Dim doc As DAO.Document
Set db = CurrentDb
Set doc = db.Containers(strObjType).Documents(strObjName)
doc.Properties.Delete strPrpName
ExitPrp:
Exit Sub
ErrPrp:
Select Case Err.Number
    Case 3270 ' Property non è ancora presente
        MsgBox "Eccezione divertente " & Err.Number & " vuol dire: " & 
Err.Description
    Case Else
        MsgBox Err.Number & Err.Description
End Select
Resume ExitPrp
End Sub
'---
Ciao.
-- 
Sergio MAZZA 

[Risposta]
Grazie Sergio del tuo prezioso consiglio...
ho provato ad inserire quanto mi hai suggerito
Ho creato un pulsante nel form "Avvio":
Private Sub Comando30_Click()
---qui ho inserito il tuo codice  ---
end sub
se faccio click sul pulsante mi risponde:
Errore di compilazione:
Prevista End Sub
Ho provato a cercare qualche altra strada ma non sono
capace di venirne a capo!
Mi sembrava così semplice a prima vista, ma ammetto
che devo studiare di più questi processi...
Mi sarebbe utile qualche dritta su come usare Sub, Function e su come
richiamarle usandi pulsanti ecc.
Ho già dato un'occhiata all'help e provando ad usare gli esempi
mi risponde sempre con quell'errore!!!
Posto tutto il codice del form "Avvio"
Option Compare Database
Option Explicit
Dim intMsg As Integer
Private Sub CHIUDI_Click()
On Error GoTo Err_CHIUDI_Click
Err = apisndPlaySound("C:\WINDOWS\MEDIA\logon.WAV", 1)
    DoCmd.Close
    DoCmd.OpenForm "Switchboard"
Exit_CHIUDI_Click:
    Exit Sub
Err_CHIUDI_Click:
    MsgBox Err.Description
    Resume Exit_CHIUDI_Click
End Sub
Private Sub Comando30_Click()
Sub ProcDeletePrp(strObjType As String, strObjName As String,
strPrpName As String)
On Error GoTo ErrPrp
Dim db As DAO.Database
Dim doc As DAO.Document
Set db = CurrentDb
Set doc = db.Containers(strObjType).Documents(strObjName)
doc.Properties.Delete strPrpName
MsgBox "rrr"
ExitPrp:
ErrPrp:
Select Case Err.Number
    Case 3270 ' Property non è ancora presente
        MsgBox "Eccezione divertente " & Err.Number & " vuol dire: " &
Err.Description
    Case Else
        MsgBox Err.Number & Err.Description
End Select
'Resume ExitPrp
End Sub
Private Sub Form_Close()
procSetCreatePrp "Forms", Me.Name, Me!SerialeHD.Name, Me!SerialeHD
procSetCreatePrp "Forms", Me.Name, Me!UsName.Name, Me!UsName
End Sub
Private Sub Form_Open(Cancel As Integer)
Me!SerialeHD = fctGetPrp("Forms", Me.Name, Me!SerialeHD.Name)
Me!UsName = fctGetPrp("Forms", Me.Name, Me!UsName.Name)
Dim MostraNome As String
MostraNome = Environ("UserName")
With Me
If .SerialeHD = "ZZZZZZ" And .UsName = "ZZZZZZ" Then
    .UsName = MostraNome
    .SerialeHD = GetSerialNumber
End If
If .SerialeHD <> "ZZZZZZ" And .UsName <> "ZZZZZZ" Then
    If .UsName <> MostraNome Or .SerialeHD <> GetSerialNumber Then
        MsgBox "Hai tentato di copiare l'applicazione" _
                    & vbCrLf & "L'applicazione verrà chiusa",
vbCritical
                        Cancel = True
                    DoCmd.Quit
                Exit Sub
            End If
        End If
    End With
End Sub
Sub procSetCreatePrp(strObjType As String, strObjName As String, _
strPrpName As String, strValue As String) '
On Error GoTo ErrPrp
Dim db As DAO.Database
Dim doc As DAO.Document
Set db = CurrentDb
Set doc = db.Containers(strObjType).Documents(strObjName)
doc.Properties(strPrpName) = strValue
ExitPrp:
Exit Sub
'
ErrPrp:
Select Case Err.Number
Case 3270 ' Property non è ancora presente
MsgBox "fase1"
doc.Properties.Append doc.CreateProperty(strPrpName, dbText, strValue)
Case Else
MsgBox "Eccezione divertente " & Err.Number & _
" vuol dire: " & Err.Description
End Select
Resume ExitPrp
End Sub
Function fctGetPrp(strObjType As String, strObjName As String, _
strPrpName As String)
On Error GoTo ErrPrp
fctGetPrp = _
CurrentDb.Containers(strObjType).Documents(strObjName).Properties(strPrpName)
ExitPrp:
Exit Function
ErrPrp:
If intMsg = 1 Then
Else
        MsgBox "Primo utilizzo. OK per continuare "
    End If
intMsg = 1
End Function

 ha scritto nel messaggio 
news:2be42e02-57b7-4c9d...@i7g2000prf.googlegroups.com...
[Risposta]
Grazie Sergio del tuo prezioso consiglio...
ho provato ad inserire quanto mi hai suggerito
Ho creato un pulsante nel form "Avvio":
Private Sub Comando30_Click()
---qui ho inserito il tuo codice  ---
end sub
se faccio click sul pulsante mi risponde:
Errore di compilazione:
Prevista End Sub
Ho provato a cercare qualche altra strada ma non sono
capace di venirne a capo!
Mi sembrava così semplice a prima vista, ma ammetto
che devo studiare di più questi processi...
Mi sarebbe utile qualche dritta su come usare Sub, Function e su come
richiamarle usandi pulsanti ecc.
Ho già dato un'occhiata all'help e provando ad usare gli esempi
mi risponde sempre con quell'errore!!!
Posto tutto il codice del form "Avvio"
---omissis---
[risposta]
Non puoi inserire una Sub (o Fuction) in un'altra Sub/Function.
(a grandi linee)Esistono Sub con visibilità ristretta(Private Sub) e 
globale(Sub/Public Sub).
Le prime sono parte di oggetti Form/Report/Controlli/etc., e possono essere 
utilizzate solo fino a quando l'oggetto che le contiene è in esecuzione (es. 
una Form); le seconde vengono inserite in Moduli e possono essere richiamate 
da tutta la tua applicazione e in qualsiasi momento.
Ogni Sub/Fuction è una "entità" e "vive" quando viene chiamata(eseguita).
Quindi nella Sub creata per gestire l'evento Click del bottone (Private Sub 
Comando30_Click()) devi richiamare la Sub che elimina le proprietà; la Sub 
ProcDeletePrp, visto che dovrebbe essere di utilizzo globale, deve stare in 
un modulo insieme a tutte le altre Sub/Function dell'esempio.
Ricapitolando, nel modulo devono esserci:
- Function fctGetPrp
- Sub procSetCreatePrp
- Sub ProcDeletePrp
Le altre Sub essendo Private sono inserite/create nel modulo della Form.
Quindi dalla Sub del bottone che gestisce l'evento Click, richiami la Sub 
(nel modulo) che elimina le proprietà:
es.
Private Sub Comando30_Click()
ProcDeletePrp "Forms","nomeFormApertaConLeProprietàCreate", 
"nomeProprietàDaEliminare"
...
End Sub
Ovviamente devi riadattare il codice sopra con le tue impostazioni...
Ciao.
-- 
Sergio MAZZA 

globale(Sub/Public Sub).
-[omissis]-------------------------
Ciao, ho fatto quanto detto: ho creato un modulo nuovo e ci ho
incollato
- la Function fctGetPrp
- la Sub procSetCreatePrp
- e la tua Sub ProcDeletePrp
Poi nell'evento click ho inserito:
Private Sub Comando30_Click()
procDeletePrp "forms", "procDeletePrp", "procSetCreatePrp"
End Sub
ma mi ritorna sempre il messaggio:
errore 3265 elemento non trovato in questo insieme
Sicuramente sbaglio qualcosa ma non riesco a comprendere dove!!!
Grazie

 ha scritto nel messaggio 
news:fb56f287-8e7b-49ad...@i12g2000prf.googlegroups.com...
Ciao, ho fatto quanto detto: ho creato un modulo nuovo e ci ho
incollato
- la Function fctGetPrp
- la Sub procSetCreatePrp
- e la tua Sub ProcDeletePrp
Poi nell'evento click ho inserito:
Private Sub Comando30_Click()
procDeletePrp "forms", "procDeletePrp", "procSetCreatePrp"
[risposta]
Leggi bene quello che ti ho scritto.
Non ti ho indicato di inserirci il nome delle Sub ma il nome della Form che 
contiene le proprietą create e il nome della proprietą da cancellare...
End Sub
ma mi ritorna sempre il messaggio:
errore 3265 elemento non trovato in questo insieme
Sicuramente sbaglio qualcosa ma non riesco a comprendere dove!!!
Grazie
[risposta]
Ciao.
-- 
Sergio MAZZA 

Grazie Sergio, finalmente dopo svariati tentativi ho compreso la
sintassi...
adesso funziona veramente come volevo...
Sei stato veramente utile... Dio ti benedica!
Ciao

 Ciao
Ciao.
-- 
Sergio MAZZA