PDA

Visualizza versione completa : [ACCESS] Bloccare apertura con shift / Librerie


wilhelm
20-10-2006, 13.38.07
Buongiorno a tutti.

Ho sviluppato un'applicazione con Access, e vorrei distribuirla ad amici (gratuitamente); però la struttura dei miei codici, maschere e macro vorrei non fosse visibile, per esempio bloccando l'apertura con shift.


Ho provato a vedere cosa mi dice nella sicurezza del Db ma non sono riuscito a trovare nulla del genere.


Qualcuno sa aiutarmi?



Altra domanda, altrettanto importante:

per far funzionare le maschere ho aggiunto alcune librerie nei riferimenti dell'ambiente VBA. Esiste un modo per farli aggiungere in automatico, per esempio un .reg o qualche macro o qualsiasi cosa?

Grazie,
Guglielmo

wilhelm
24-10-2006, 14.12.11
Risolto così:

Aggiunto un modulo al Database, con il seguente codice:

Sub SetBypassProperty()
Const DB_Boolean As Long = 1
ChangeProperty "AllowBypassKey", DB_Boolean, False
End Sub
Function ChangeProperty(strPropName As String, varPropType As Variant, varPropValue As Variant) As Integer
Dim dbs As Object, prp As Variant
Const conPropNotFoundError = 3270

Set dbs = CurrentDb
On Error GoTo Change_Err
dbs.Properties(strPropName) = varPropValue
ChangeProperty = True
Change_Bye:
Exit Function
Change_Err:
If Err = conPropNotFoundError Then ' Property not found.
Set prp = dbs.CreateProperty(strPropName, _
varPropType, varPropValue)
dbs.Properties.Append prp
Resume Next
Else
' Unknown error.
ChangeProperty = False
Resume Change_Bye
End If
End Function


A quel punto si esegue il codice della Sub e il tasto Shift non sarà più valido per aprire il database in 'Visualizzazione Finestra Database', a cominciare dalla prima riapertura del Db.

Per aggiungere in automatico le librerie invece si crea una copia MDE del file.


Ricordarsi che se l'applicazione non prevede la visualizzazione della finestra database e non è possibile aprirla dalle barre degli strumenti (perché ridefinite) bisogna lavorare su una copiadel database, altrimenti non potete più sbloccare il tasto shift per agire sulla struttura dell'applicazione e sui sorgenti.



Io ho fatto così:
- copiato il Db;
- sulla copia:
- aggiunto il modulo;
- eseguita la routine;
- cancellato il modulo;
- creata la copia MDE;

LoryOne
25-10-2006, 11.43.50
Interessante ma:
che succede se io mi creo un DB ACCESS vuoto ed importo l'intero contenuto dal tuo ?

Ops, l'avevi già scritto, pardon.

LoryOne
25-10-2006, 12.01.45
Puoi impostare la password per l'apertura dei sorgenti direttamente da Propretà di progetto nell'ambiente VBA.
In questo modo, anche l'importazione delle maschere e dei sorgenti, sarà soggetta a restrizione.

miciomao
25-10-2006, 12.49.46
Ciao wilhelm
io ho molti mdb in rete e multiutenza
ho risolto propio con la funzione AllowBypassKey per disabilitare il tasto SHIFT.
Non ho bisogno di fare backup di database perchè posso abilitare/disabilitare la function semplicemente cambiando un valore dentro un file txt, naturalmente nascosto.
Questo file risiede nella mia macchina, ma può essere posto ovunque, e la sue path è connessa come disco di rete a tutte le macchine che usano l'applicativo.
In sostanza:

Function BloccaShift()
On Error GoTo errDisableShift
Dim PS, SS, NomeFile
NomeFile = "C:\pwd.txt"
Open NomeFile For Input As #1 ' Apre il file per l'input.
Input #1, PS, SS
Input #1, PS, SS
Close #1 ' Chiude il file.
Dim db As Database
Dim prop As Property
Const conPropNotFound = 3270
Set db = CurrentDb()
db.Properties("AllowByPassKey") = IIf(InStr(SS, 0) = 15, False, True)
Exit Function
errDisableShift:
If Err = conPropNotFound Then
Set prop = db.CreateProperty("AllowByPassKey", dbBoolean, False)
db.Properties.Append prop
Resume Next
Else
Beep
MsgBox "La funzione 'DisableShift' non è stata eseguita correttamente." & vbNewLine & _
"Esco dall'applicativo", vbInformation
Close #1
DoCmd.Quit
Exit Function
End If
End Function

Il file txt è curioso e simpatico ed è scritto così:

150280365240593726139514
560597137212196876077426
980289667092781916711318
050474404245780817098276
470480328195257531193994

in realtà è un mucchio di parolacce :D perchè la funzione legge il carattere 15 della riga 4 e assegna True o False ad AllowByPassKey in base al val che andiamo ad assegnare noi.
Quindi
se trova 0 = True
se trova qualsiasi altra cosa = False
Se non trova il file txt o cmq và in errore la funzione un messaggio avverte che l'applicativo si chiuderà forzatamente.

axoo
14-09-2008, 18.35.38
Interessante questo,
infatti ho provato a inserirlo nel mio data base, ma non riesco a farlo funzionare.
Come si collega in access un vba???
Potresti postarmi un esempio di questo per bloccare lo shift.
Grazie
Axoo

:wall: :wall:

Franzo
29-09-2008, 08.45.06
Interessante questo,
infatti ho provato a inserirlo nel mio data base, ma non riesco a farlo funzionare.
Come si collega in access un vba???
Potresti postarmi un esempio di questo per bloccare lo shift.
Grazie
Axoo

:wall: :wall:

ALT+F11

sdn26
18-08-2009, 21.40.12
ho provato a d usare il codoce di miciomao è funziona....l'unica cosa è che non mi parte all'avvio del db.... mi spiego meglio :
1 fatto copia del db
2 creato un modulo con la funzione di miciomao
3 eseguo il modulo ed in effetti se trova il file giusto non succede niete se non lo trova chiude tutto
4 quando faccio ripartire il dp se il file era giusto il db non è bloccato- se non era giusto non mio fa più entrare ...anche se aggiusto il file.

dove sbaglio? :mm: come faccio ad eseguire la funzione ogni volta che si lancia il db?
grazie in anticipo per l'aiuto