Newsgroup: it.comp.appl.access
Titolo: Applicazione com menu per avviarne altre.

Nel corso del tempo, ho preparato diverse applicazioni, richiestemi
per l'esecuzione di compiti specifici. Ognuna apre all'avvio una
richiesta di password, che serve anche a determinate il comportamento
del programma a seconda del livello dell'utente. Ora, diverse colleghe
usano varie applicazioni, e volevo preparare un menu, aperto mediante
la solita pass, con pulsanti per scegliere l'applicazione da usare di
volta in volta. Utenti diversi possono avere accesso ad appl. diverse,
a seconda della pass inserita. Ognuno così deve scrivere la parolina
una sola volta.
Fin qui tutto bene. Volevo però che il menu fosse iconizzato e si
ripristinasse una volta chiusa l'applicazione chiamata.
Ho scritto queste istruzioni:
Function fApriProg(prog)
    Dim diro As String
    diro = "D:\sw\" & prog & "\" & prog & ".mdb"
    DoCmd.Minimize
    DoCmd.RunCommand acCmdAppMinimize
    Dim oWshShell As Object
    Set oWshShell = CreateObject("WScript.Shell")
    DoEvents
    oWshShell.Run Chr$(34) & diro
    DoEvents
    Set oWshShell = Nothing
    DoEvents
    DoCmd.RunCommand acCmdAppMaximize
    DoCmd.Maximize
End Function
Però il codice viene eseguito tutto d'un fiato e la maschera di
quest'applicazione è reingrandita subito dopo avere avviato l'altra.
Pensavo che potrei chiudere l'applicazione Menu e riaprirla con la
chiusura dell'applicazione chiamata, ma ciò comporta che mi richieda
la parola d'ingresso, proprio ciò che volevo evitare.
Grazie a tutti.
Riccardo Baldinotti

 ha scritto nel messaggio 
news:ae4ab0d2-df8d-497a...@f19g2000yqo.googlegroups.com...
Nel corso del tempo, ho preparato diverse applicazioni, richiestemi
per l'esecuzione di compiti specifici. Ognuna apre all'avvio una
richiesta di password, che serve anche a determinate il comportamento
del programma a seconda del livello dell'utente. Ora, diverse colleghe
usano varie applicazioni, e volevo preparare un menu, aperto mediante
la solita pass, con pulsanti per scegliere l'applicazione da usare di
volta in volta. Utenti diversi possono avere accesso ad appl. diverse,
a seconda della pass inserita. Ognuno cos� deve scrivere la parolina
una sola volta.
Fin qui tutto bene. Volevo per� che il menu fosse iconizzato e si
ripristinasse una volta chiusa l'applicazione chiamata.
Ho scritto queste istruzioni:
Function fApriProg(prog)
    Dim diro As String
    diro = "D:\sw\" & prog & "\" & prog & ".mdb"
    DoCmd.Minimize
    DoCmd.RunCommand acCmdAppMinimize
    Dim oWshShell As Object
    Set oWshShell = CreateObject("WScript.Shell")
    DoEvents
    oWshShell.Run Chr$(34) & diro
    DoEvents
    Set oWshShell = Nothing
    DoEvents
    DoCmd.RunCommand acCmdAppMaximize
    DoCmd.Maximize
End Function
Per� il codice viene eseguito tutto d'un fiato e la maschera di
quest'applicazione � reingrandita subito dopo avere avviato l'altra.
Pensavo che potrei chiudere l'applicazione Menu e riaprirla con la
chiusura dell'applicazione chiamata, ma ci� comporta che mi richieda
la parola d'ingresso, proprio ci� che volevo evitare.
Grazie a tutti.
Riccardo Baldinotti
[risposta]
Sul sito comune (
www.sitocomune.com
) trovi due esempi:
Sezione Modules: 5.37 Avviare un file eseguibile ed attenderne la fine (2)
Sezione General: 6.23 Avviare un file eseguibile ed attenderne la fine.
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Tempo ne passa, prima che concluda qualcosa...
Ho scopiazzato brutalmente il codice dagli esempi suggeriti, e nella
mia applicazione ho:
        DoCmd.Minimize
        DoCmd.RunCommand acCmdAppMinimize
        RunAppAndWait diro, vbNormalFocus
dove diro è qualcosa tipo "msaccess " & d:\sw\" & nomeprog & ".mdb",
e tutto il codice di riferimento preso dall'esempio è in un modulo
apposito
        Forms!menu.SetFocus
        DoCmd.RunCommand acCmdAppRestore
        DoCmd.Restore
L'idea è che il menu generale si iconizzi, lanci l'applicazione
richiesta e, dopo che l'utente esce da questa, il menu si riapra come
se nulla fosse successo.
Invece l'applicazione è avviata e il menu è riaperto subito. Siccome
uso il metodo descritto nella FAQ "1.11 Nascondere la finestra
principale di Access" del sito di DonKarl, succede che sotto al menu
principale dell'applicazione chiamata compare il menu generale, che
può essere usata per chiamare un'altra applicazione, per non parlare
dei baluginii di maschere che si aprono e si chiudono.
Dopo quel RunAppAndWait bisognerebbe che tutto si congelasse
(nonostante luglio) per ripartire dopo la pressione del tasto "Uscita"
dell'applicazione chiamata.
Che dire: grazzzzzzzie.
Riccardo Baldinotti

 ha scritto nel messaggio 
news:965ff14f-0567-4159...@b15g2000yqd.googlegroups.com...
Tempo ne passa, prima che concluda qualcosa...
Ho scopiazzato brutalmente il codice dagli esempi suggeriti, e nella
mia applicazione ho:
        DoCmd.Minimize
        DoCmd.RunCommand acCmdAppMinimize
        RunAppAndWait diro, vbNormalFocus
dove diro � qualcosa tipo "msaccess " & d:\sw\" & nomeprog & ".mdb",
e tutto il codice di riferimento preso dall'esempio � in un modulo
apposito
        Forms!menu.SetFocus
        DoCmd.RunCommand acCmdAppRestore
        DoCmd.Restore
L'idea � che il menu generale si iconizzi, lanci l'applicazione
richiesta e, dopo che l'utente esce da questa, il menu si riapra come
se nulla fosse successo.
Invece l'applicazione � avviata e il menu � riaperto subito. Siccome
uso il metodo descritto nella FAQ "1.11 Nascondere la finestra
principale di Access" del sito di DonKarl, succede che sotto al menu
principale dell'applicazione chiamata compare il menu generale, che
pu� essere usata per chiamare un'altra applicazione, per non parlare
dei baluginii di maschere che si aprono e si chiudono.
Dopo quel RunAppAndWait bisognerebbe che tutto si congelasse
(nonostante luglio) per ripartire dopo la pressione del tasto "Uscita"
dell'applicazione chiamata.
Che dire: grazzzzzzzie.
Riccardo Baldinotti
[risposta]
Per� rileggendo bene...
Secondo me non ti conviene fare un men� in access che richiama un altro mdb; 
access (l'applicazione), per ora, non esegue un solo task ma uno per ogni 
mdb che apri. Quindi terrebbe imegnata parecchia Ram e cicli macchina solo 
per una form con bottoni.
Hai altre soluzioni, dalle pi� semplici a quelle pi� complicate.
Mi viene in mente una pagina web HTML con i stessi bottoni che eseguono lo 
script che avevi indicato tu, ma completando, il metodo Run, con 
l'indicazione di due altri parametri:
es.
...
Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("d:\sw\" & nomeprog & ".mdb", 1, true)
...
Oppure, e io lo preferisco, la creazione di una nuova barra applicazioni in 
windows; magari con delle belle icone...
Ciao.
-- 
Sergio MAZZA 

 windows; magari con delle belle icone...
Ganza. Però non so come evitare che ogni appl avviata mi richieda la
solita pass. L'avvio di un menu generale aveva questo come scopo
principale, oltre a togliere un po' di icone dallo schermo.
Ancora grazie.
Riccardo Baldinotti

 ha scritto nel messaggio 
news:e4959c4a-8c13-4560...@18g2000yqa.googlegroups.com...
Sono vergognosamente ignaro di quali siano...
[risposta]
Vedrai che a poco a poco verranno svelate...
Questa la voglio proprio provare. Ma nella pagina html, dove metto il
codice? Comunque ora sono lontano da ogni codice e se ne riparla
Luned�.
[risposta]
Mhmm.... Non hai mai scritto una pagina web? Ahi! Ahi!
Nulla di grave; lo scrivi, in VBScript o Javascript/JScript (non JAVA), 
associandolo al bottone:
es.
JavaScript Examples
http://www.w3schools.com/js/js_examples.asp
Prova la: JavaScript Functions "Call a function"
Ganza. Per� non so come evitare che ogni appl avviata mi richieda la
solita pass. L'avvio di un menu generale aveva questo come scopo
principale, oltre a togliere un po' di icone dallo schermo.
[risposta]
Qui diventa un problema; ma solo se la stessa barra di applicazioni viene 
eseguita da diversi utenti.
Per� se un pc viene utilizzato unicamente dallo stesso utente che ha fatto 
login, la password gliela puoi accodare nella stringa di apertura dell'mdb:
es. Command Function
http://msdn.microsoft.com/en-us/library/aa211469(office.11).aspx
vOppure impostare, in windows, una variabile ambiente leggibile dalla tua 
applicazione tramite la funzione Environ.
es.
...
    Me!utente = Environ("USERNAME")
...
Ancora grazie.
Riccardo Baldinotti
[risposta]
Ciao.
-- 
Sergio MAZZA