Newsgroup: it.comp.appl.access
Titolo: problema con form: non ho capito nulla di VBA

questo è il codice che ovviamente non funziona
    If Me![pass] = 0 Then DoCmd.OpenForm (pss)
        ElseIf Me![invio] = Me![pass] * 527 Then DoCmd.OpenForm (Maschera1)
    End If
la mia idea era questa:
ho una tbl che contiene un campo calcolato=now()+525448 chiamato "pass"
e un campo da inserire dopo avermi chiamato che è "invio"
quindi se il campo pass è vuoto apre una maschera per inserire il "codice di
sblocco" ricavato stupidamente dal campo calcolato pass * 527 (così ottengo
il risultato di evitare che ad una futura installazione possa riutilizzare
il codice di sblocco) altrimenti mi apre la maschera che permette di usare
il db.
mi rendo conto che sono ignorante perchè non riesco a fare quello che
voglio.
grazie mille a chi mi vorrà aiutare (come al solito)
by
stwe
PS vi sembra un'idea idota questa che ho escogitato per proteggere il db da
copie? sono comunque molto ben accette altre idee e/o suggerimenti.

 il db.
non ho capito quasi niente di come funge la protezione... puoi spiegare
meglio?
Ciao, Max

 ha scritto nel messaggio
news:1Cc37.55087$q77.4...@news2.tin.it...

ci pensavo anche io...
allora, ho una tbl "pass" che contiene due campi, "pass" e "invio", "pass"
ha come valore predefinito now()+525448, mentre "invio" 0. la mia idea č
questa, creo una maschera di avvio vuota, con l'evento Private Sub
Form_Load(), che se non dico una cavolata, dovrebbe essere mentre carichi
verifica questa cosa e questa cosa č:
se invio č =0 allora apri la maschera "pss" che contiene i due campi della
tbl "pass", il tizio mi chiama e mi comunica il valore che io moltiplico per
527 e glielo comunico, lui lo inserisce nel campo "invio". riavvia
l'applicazione e cosě sempre la maschera "avvio", sempre con l'evento
Private Sub Form_Load() verifica nuovamente "invio" che questa volta č
diverso da 0 e quindi verifica che "invio"="pass"*527, in questo caso apre
la "maschera1" che č quella che permette di usare il db.
spero di essere stato chiaro, anche se pensandoci mi vengono dei dubbi:
sbaglio ad usare l'evento Form Load? in secondo luogo sicuramente sbaglio il
codice, in quanto non funziona.
ciao
by
stwe


Ed il giorno dopo, quando nel campo invio avrà un numero >0 ma sarà diverso
dal tuo (now()+525448)*527 ?
Deve richiamarti ogni giorno?
ciao Riccardo

 ha scritto nel messaggio
news:9ijs59$eg$1...@news.panservice.it...

 hai ragione bel problema, ci devo pensare...
caspita

 ha scritto nel messaggio
news:ASe37.5275$kf3.1...@news.infostrada.it...

soluzione, che però mi complica ulteriormente la vita... (con sto cavolo di
codice che non funziona)
"pass" ha come valore predefinito 0
all'apertura della maschera di avvio verifico se il campo "pass" è =0, se
vero allora gli scrivo =now()+525448 se falso allora passo avanti: verifico
che "invio"="pass"*527, se vero apro "maschera1" se falso apro "pss" che mi
permette di inserire il valore corretto per "invio".
ora provo a riportare di seguito il codice:
Private Sub Form_Load()
Dim pass As Long
    pass = "pass"
Dim invio As Long
    invio = "invio"
If pass = 0 Then
    pass = Now() + 784359
        ElseIf pass = invio * 527 Then
            DoCmd.OpenForm (Maschera1)
        ElseIf pass = invio Then
            DoCmd.OpenForm (pss)
End If
End Sub
però mi da errore di run-time "13"
tipo non corrispondente
sono incasinato
i due campi "pass" e "invio" hanno entrambe dimensione campo numerico intero
lungo
sono in profonda crisi

 wrote in message
eQf37.5560$kf3.1...@news.infostrada.it...

#########
Non ho seguito bene quello che vuoi fare, ma ad occhio, quando scrivi:
 Dim pass As Long
     pass = "pass"
 Dim invio As Long
     invio = "invio"
ad entrambi provi a passargli una stringa (sono racchiusi tra virgolette)
invece di numeri.
per questo da errore
ciao Riccardo

#ripulito#

si, sto facendo un casino me ne sto rendendo conto...
non sono ancora ben abituato alla sintassi di VBA, provengo da linguaggi
diversi, con caratteristiche diverse (perl, lingo tra tutti)
sto provando e riprovando e qualcosina sto riuscendo a fare, per esempio ora
ho ricominciato e vorrei verificare il valore pass, che se è =0 allora mi
dovrebbe aprire la maschera pss, ma me la apre sempre, il codice è questo:
Private Sub Form_Load()
Dim pas As Long
    pass = pas
Dim mas As String
    mas = "pss"
If pas = 0 Then
    DoCmd.OpenForm mas
End If
End Sub

 ha scritto nel messaggio
news:Tmh37.6176$kf3.1...@news.infostrada.it...

però finalmente sono riuscito a fargli fare una cosa:
Private Sub Form_Load()
Dim mas As String
    mas = "pss"
If pass = 0 Then
    DoCmd.OpenForm mas
End If
End Sub
in questo modo verifica il contenuto di pass che se è =0 apre la maschera
pss, altrimenti no...
ora devo proseguire
grazie per l'attenzione rivoltami riccardo
by
stwe

 ha scritto nel messaggio
news:ssh37.6208$kf3.1...@news.infostrada.it...

allora sono quasi riuscito con questo codice a risolvere i miei problemi:
Private Sub Form_Load()
Dim mas As String
    mas = "pss"
Dim mas1 As String
    mas1 = "Maschera1"
If pass = 0 Then
    pass = Now() + 232125
ElseIf invio = 0 Then
    DoCmd.OpenForm mas
Else: DoCmd.OpenForm (mas1)
End If
End Sub
l'unico problema che ho ancora è che praticamente qualsiasi valore io
immetta in "invio" si apre sempre...
anzi ne ho pure un'altro:
devo far chiudere l'applicazione perchè all'inizio il campo "pass" è vuoto,
e per riempirlo uso la funzione now()+ 232125, ho fatto in modo che la
maschera avvio la prima volta dia un messaggio di questo tipo: "E' stato
creato un codice univo per l'applicazione, al riavvio del programma sarà
possibile inserire il codice di sblocco. (premere sul pulsante "Chiudi" per
terminare l'applicazione)"
secondo voi è serio o fa ridere?
grazie ancora
by
stwe

 secondo voi è serio o fa ridere?
Scusa se ti rispondo solo ora, ma al rientro mi sono trovato oltre 1500 mex
da leggere, e ci vuole tempo...
Nella tua routine, la variabile pass è sicuramente =0 quando arrivi al "If
...".
Forse dovresti dirle prima di assumere il valore di un controllo in cui sia
presente il valore del campo [pass].
Ad esempio:
Private Sub Form_Load()
Dim mas As String
    mas = "pss"
Dim mas1 As String
    mas1 = "Maschera1"
Dim pass as Long
pass = Me.pass
If pass = 0 Then
    pass = Now() + 232125
ElseIf invio = 0 Then
    DoCmd.OpenForm mas
Else
    DoCmd.OpenForm (mas1)
End If
End Sub
--
Silvio
il sito comune di it.comp.appl.access:
http://www.sitocomune.com