Pagina 1 di 1

Macro per l'inserimento di una password all'apertura del DB

Inviato: mercoledì 6 luglio 2016, 15:57
da Kryos
Buongiorno a tutti. Spero di non aprire un topic già discusso ma navigando sul forum ho trovato qualcosa riguardo l'argomento ma non sono riuscito a risolvere il mio problema.
Ho creato finalemnte il mio DB. NOn sono molto ferrato sulle Macro, ma navigando sul forum mi sono imbattuto su questa macro:

Codice: Seleziona tutto

Global co1 As Integer

Sub Password ()
Dim oDlg As Object
Dim Res As Integer
	oDlg = CargarDialogo( "Standard", "Dialog1" )
	Do
		Res = oDlg.execute()
		If Res = 1 Then
			If Not (oDlg.getControl("txtContra").Text = "rmg")  Then 'AQUI SE CAMBIA LA CONTRASEÑA
				Res = 0
				co1 = co1 + 1
				oDlg.getControl("txtContra").Text = ""
			End If
			If co1 > 3 Then
				Res = 1
			End If
		End If
	Loop While Res = 0		
	oDlg.dispose()
	Dim Control as Object
	Control = ThisDatabaseDocument.CurrentController
	If Not Control.IsConnected Then	Control.Connect
	ThisDatabaseDocument.FormDocuments.GetByName("forPrestamos").Open
End Sub

Sub ActivarDocumento()
	If co1 > 3 Then
		ThisDatabaseDocument.close( True )
	Else
		co1 = 0
	End If	
End Sub

'Funcion para cargar un cuadro de dialogo en memoria
'y regresa el cuadro de dialogo
Function CargarDialogo(Libreria As String, Nombre As String)
	Dim oLibreria as Object
	DialogLibraries.LoadLibrary( Libreria )
	oLibreria = DialogLibraries.GetByName( Libreria )
	CargarDialogo = CreateUnoDialog( oLibreria.getByName( Nombre ) )
End Function
Come specificato, è da qualche giorno che ho iniziato lo studio delle macro, ma non avendo una base sto avendo non poche difficoltà, quindi sono qui a chiedere il vostro aiuto.
La macro non funziona, ho cercato di modificarla inserendo le mie tabelle, ma la mia conoscenza si ferma qui. Qualcuno potrebbe guidarmi nel completamento di tale macro, togliendo ciò che è superfluo e inserendo quello che manca?
Grazie mille :D

Re: Macro per l'inserimento di una password all'apertura del

Inviato: mercoledì 6 luglio 2016, 19:28
da bydindi
Premessa:

Le password in base sono "aggirabili" in modo molto semplice, quando apri un database puoi andare a sbirciare tutte le macro presenti, quindi risalendo alla macro che genera la richiesta di password si vede subito qual'è la password stessa (nel tuo caso la password è: rmg)

se la tua intenzione è quella di proteggere il database da occhi indiscreti ma allo stesso tempo inesperti allora poi farlo tranquillamente, ma se il database capita tra le mani di una persona che si intende (anche poco) di open office la
password non serve a nulla.

Detto questo dovresti inserire il tuo DB (ovviamente eliminando tutti i dati sensibili) per poter verificare dove sbagli...

Ciao
Paolo

Re: Macro per l'inserimento di una password all'apertura del

Inviato: mercoledì 6 luglio 2016, 19:45
da Kryos
Grazie per la repentina risposta. Mando in allegato il db.
Lascio il link per scaricare il db

https://drive.google.com/open?id=0B0sEL ... nNseEdqZHc

Re: Macro per l'inserimento di una password all'apertura del

Inviato: giovedì 7 luglio 2016, 23:55
da bydindi
Ciao
Purtroppo aprendo il tuo DB mi dà errore e non riesco a capire da cosa è generato...
continuo a provare, intanto ho scoperto che nel tuo database manca la finestra di dialogo cui fa riferimento la macro, però ho provato a inserirla ma continua a darmi errore..

Paolo

Re: Macro per l'inserimento di una password all'apertura del

Inviato: venerdì 8 luglio 2016, 0:22
da Kryos
CIao, da errore il codice macro password che ho inserito. Nelle impostazioni ho inserito che la macro deve attivarsi all'avvio del DB.
La parte del codice che da problemi è oDlg = CargarDialogo( "Standard", "Dialog1" ). Altro non so dirti.
Spero che si riesca a trovare una soluzione

Re: Macro per l'inserimento di una password all'apertura del

Inviato: sabato 9 luglio 2016, 20:13
da bydindi
Ho provato a fare qualche modifica (non sono un esperto di macro ma sono un "copiaincollista" della domenica... anche se oggi è sabato :D :D )

nel tuo database mancava la finestra di dialogo dove "puntava" la macro, per cui dava errore, inoltre per pulizia ho inserito un nuovo modulo ( Module5 ) così vedi meglio le modifiche apportate, come vedi la prima riga riporta:
Option Explicit, se anche tu hai copiato dal database proposto dai nostri cugini spagnoli noterai che nel tuo DB
mancava proprio quella riga.
Nonostante le mie modifiche, una volta aperto in automatico il menù ( a proposito la password ora è by63 ) alcuni pulsanti continuano a darmi errore, presumo che sia dato dal fatto che hai delle macro al di fuori del database e che ovviamente non sono presenti nel mio OOo

credo di aver fatto un piccolo passo in avanti...
fammi sapere, il database con le modifiche lo trovi quì:

https://dl.dropboxusercontent.com/u/318 ... ydindi.odb

Ciao

Re: Macro per l'inserimento di una password all'apertura del

Inviato: sabato 9 luglio 2016, 20:25
da Kryos
Ciao, grazie mille per il tuo aiuto, a me non dà nessun errore all'apertura.
L'unica cosa che non va nella finestra della password è la grandezza e il bottoni "command button". Altra cosa... Provando a digitare password a caso, dovo aver tentato per 4 volte, la finestra password si chiude come se avessi inserito la password corretta, aprendo così il menù del DB.

Re: Macro per l'inserimento di una password all'apertura del

Inviato: sabato 9 luglio 2016, 21:30
da bydindi
Kryos ha scritto:a me non dà nessun errore all'apertura.
infatti ti ho scritto che probabilmente tu hai memorizzato delle macro al di fuori del DB ma che rimangono all'interno della tua suite di open office, occhio però che se tu dovessi "trasportare" il database in un altro PC probabilmente ti darebbe dei messaggi di errore ( da quel che ho capito utilizzi una macro per nascondere la barra dei comandi)
Kryos ha scritto:il bottoni "command button"
quelli li noto anche io ma non ho la più pallida idea di quale funzione abbiano, ma visto che cliccandoci non sortiscono nessun effetto... si potrebbero cancellare ?!?
Kryos ha scritto:dovo aver tentato per 4 volte, la finestra password si chiude come se avessi inserito la password corrett
qui entra in gioco un numerino (che ho evidenziato in rosso) che è presente in questa parte di macro:

Sub ActivarDocumento()
If co1 > 3 Then
ThisDatabaseDocument.close( True )
Else
co1 = 0
End If
End Sub

prova a modificarlo (ad esempio metti 10 ) e vedi quanti tentativi devi fare per accedere comunque al DB

Come ti ho già detto nel mio primo intervento la password nel database è un po' "farlocca", basta ad esempio non confermare l'utilizzo delle macro per aprire ugualmente il database, dovresti inserire il DB in una cartella e poi nelle sezione "sicurezza macro" istruire open office ad aprire il DB della cartella che hai scelto senza chiederti ogni volta di abilitare le macro... ma è comunque una procedura aggirabile

Paolo

Re: Macro per l'inserimento di una password all'apertura del

Inviato: sabato 9 luglio 2016, 21:44
da bydindi
Kryos ha scritto:...L'unica cosa che non va nella finestra della password è la grandezza.....
Questa domanda mi era sfuggita... :D

se vai nella gestione macro trovera a fianco a "Module5" la sezione "Dialog1", aprendo tale sezione puoi modificare la finestra di dialogo a tuo piacimento, prova ad esempio a modificare (oltre alle dimensioni) l'intestazione della maschera
che io sbadatamente ho lasciato in spagnolo, per modificare le dimensioni e le proprietà della finestra di dialogo devi prima cliccare con il tasto sinistro in un bordo della finestra e poi una volta apparse le maniglie se clicchi con il tasto destro all' interno della finestra puoi andare sulle proprietà...
Stesso discorso vale per i pulsanti e per gli altri elementi della finestra, cliccaci sopra una volta con il tasto sinistro e poi con il destro vai su proprietà.

Paolo

Re: Macro per l'inserimento di una password all'apertura del

Inviato: mercoledì 13 luglio 2016, 0:15
da Kryos
Grazie mille per le informazioni. La password mi serve solo per non fare accedere a tutti al mio database dato che il pc è in condivisione. Inoltre le persone che accedono al pc non hanno conoscenza a sufficienza per attivare o disattivare le macro. è solo che vorrei che una volta terminati i tentativi il DB si chiudesse in automatico e non che la macro si disattivasse.
Credo che bisogna modificare la parte
If co1 > 3 Then
ThisDatabaseDocument.close( True )
Else
co1 = 0
End If
End Sub

Bisognerebbe dirgli di chiudere tutto il database e non soltanto la macro in questione.

Angelo