Newsgroup: it.comp.appl.access
Titolo: Abilitazione pulsante

Ciao a tutti.
Sto compilando un database Access e sebbene ci sappia ragionevolmente 
smanettare sopra di contro non so una cippa di VB.
Il problema è questo:
Da una maschera devo poter scegliere l'apertura di una di ulteriori 16 
maschere.
Potrei aprire queste maschere:
1) con un pulsante unico presente sulla prima maschera che mi attiva 
una macro specifica scelta fra 16 sulla base di un valore associato ad 
un campo in una tabella;
2) con 16 pulsanti diversi presenti sulla prima maschera, ma mi serve 
che solo uno di questi sia abilitato, scelto sempre sulla base di un 
valore associato ad un campo in una tabella.
Non so se sono stato sufficientemente comprensibile.
In pratica la procedura sarebbe:
- scelta, in una combobox (o in un gruppo di opzioni o in una casella 
di riepilogo), di uno fra 16 tipi di documento da compilare;
- apertura di una maschera, da maschera diversa da quella ove è 
presente la combobox, della maschera corrispondente al tipo di 
documento selezionato, mediante di cui vi ho descritto sopra.
Grazie.
Nicola
-- 
__________________________________
Domande su eMule? Clicca qui:
http://emulefaq.altervista.org/

 Grazie.
Non puoi usare direttamente la combobox per aprire la relativa form?
-- 
Ciao
Geppo 

 Non puoi usare direttamente la combobox per aprire la relativa form?
Il problema è che io devo predisporre a priori il tipo di 
documentazione da compilare (indicandola scegliendola da una combobox) 
ma solo successivamente, e persone diverse accedendo ad altra maschera, 
dovranno poter aprire la maschera corretta fra le 16 sulla base di ciò 
che ho predisposto io. Mettere 16 pulsanti diversi tutti attivi mi fa 
presagire una marea di errori nell'apertura della form corretta... 
oltretutto conoscendo i miei polli... ;-)
Al limite posso riportare il valore impostato nella combobox nella form 
utenti, ma come associare una macro al valore contenuto nella combobox?


 utenti, ma come associare una macro al valore contenuto nella combobox?
Comunque se riesci a riportare il valore della combo nella form utenti, su 
evento "load" puoi:
select case NomeControlloCheRiportaIlValoreDellaCombo
         case ValoreCombo1
         blablabla
         case valoreCombo2
         blablabla
         ....................
         ...............
         .........................
         case ValoreCombo16
         blablalbla
end select
Mah, avro' capito.
-- 
Ciao
Geppo 

 Mah, avro' capito.
Copio-incollo e domani vedo di sistemare questo codice... ma, al posto 
del blablabla cosa ci devo scrivere?
Cerco cmq di spiegarmi meglio ancora
1^ possibilità:
FORM 1: inserimento tipo del documento da compilare (tramite combobox)
FORM 2: 1 pulsante che apre una form scelta tra 16 form diverse sulla 
base del valore selezionato nella combobox
2^ possibilità:
FORM 1: inserimento tipo del documento da compilare (tramite combobox)
FORM 2: 16 pulsanti che aprono ognuno una form specifica, ma deve 
essere attivo solo il pulsante relativo al valore selezionato nella 
combobox.
La soluzione che sinora ho trovato è:
FORM 1: inserimento tipo del documento da compilare (tramite combobox)
FORM 2:
- valore della combobox scritto a caratteri cubitali
- 16 pulsanti tutti attivi che aprono ognuno la relativa form;
- scritta che recita "Compilazione modello: Click sul pulsante a destra 
corrispondente al numero a sinistra".
Una soluzione un po' bovina, per questo cercavo un qualcosa di più 
professionale... ;-)
Ciao e grazie per l'interesse...


 del blablabla cosa ci devo scrivere?
al posto di ogni blablabla ci metti il nome della procedura da eseguire 
o la serie delle operazioni da eseguire (!!)
IvanDaBologna

Ciao "Nicola" <no-...@no-spam.no.spam> ha scritto nel messaggio 
news:LkHol.184006$Ca.3...@twister2.libero.it...

Come già riferito da Ivan, inserisci il codice che ti fa le operazioni che 
desideri.
Nel tuo caso, disabilita tutti i 16 tasti e per ogni "case" abiliti il 
relativo pulsante;
insomma quando apri la form leggerai il tipo di documento:
Select case NomeControlloCheRiportaIlValoreDellaCombo
'poi dopo ogni case inserisci il codice relativo all'attivazione del 
pulsante:
case Valore1
NomePulsanteFormValore1.enabled = true
.....e cosi via per gli altri pulsanti.
in questo modo ti verrà abilitato solo il pulsante relativo alla form che 
desideri.
-- 
Ciao
Geppo 

 desideri.
Intanto vi ringrazio a tutti quanti.
Oggi ho finalmente risolto il problema grazie alle vostre indicazioni, 
usando il codice che riporto sotto che comprende l'utilizzo di un solo 
pulsante che apre una fra l1 16 maschere presenti in base al valore 
riportato nella combobox.
Per capire cosa scrivere nella riga di comando ho creato un semplice 
pulsante che apre una maschera copiandone poi il codice.
Ciao e grazie di nuovo.
Nicola
Private Sub compila_le_note_Click()
Select Case Tipo_del_documento
    Dim stDocName As String
    Dim stLinkCriteria As String
          Case 1
          stDocName = "m1A"
          DoCmd.OpenForm stDocName, , , stLinkCriteria
          Case 2
          stDocName = "m2A"
          DoCmd.OpenForm stDocName, , , stLinkCriteria
          Case 3
          stDocName = "m3A"
          DoCmd.OpenForm stDocName, , , stLinkCriteria
          Case 4
          stDocName = "m4A"
          DoCmd.OpenForm stDocName, , , stLinkCriteria
          Case 5
          stDocName = "m5A"
          DoCmd.OpenForm stDocName, , , stLinkCriteria
          Case 6
          stDocName = "m6A"
          DoCmd.OpenForm stDocName, , , stLinkCriteria
          Case 7
          stDocName = "m7A"
          DoCmd.OpenForm stDocName, , , stLinkCriteria
          Case 8
          stDocName = "m8A"
          DoCmd.OpenForm stDocName, , , stLinkCriteria
          Case 9
          stDocName = "m9A"
          DoCmd.OpenForm stDocName, , , stLinkCriteria
          Case 10
          stDocName = "m10A"
          DoCmd.OpenForm stDocName, , , stLinkCriteria
          Case 11
          stDocName = "m11A"
          DoCmd.OpenForm stDocName, , , stLinkCriteria
          Case 12
          stDocName = "m12A"
          DoCmd.OpenForm stDocName, , , stLinkCriteria
          Case 13
          stDocName = "m13A"
          DoCmd.OpenForm stDocName, , , stLinkCriteria
          Case 14
          stDocName = "m14A"
          DoCmd.OpenForm stDocName, , , stLinkCriteria
          Case 15
          stDocName = "m15A"
          DoCmd.OpenForm stDocName, , , stLinkCriteria
          Case 16
          stDocName = "m16A"
          DoCmd.OpenForm stDocName, , , stLinkCriteria
 End Select
End Sub


 Nicola
Ehm... scusate ma risolto un problema mi se ne è presentato uno nuovo.
Il codice che ho postato funziona e mi si apre la maschera desiderata.
Adesso però la nuova maschera mi deve visualizzare solo i dati presenti 
nella maschera precedente, filtrandoli.
Il codice l'ho scritto in un modulo di access e lo richiamo con una 
routine evento applicata ad un pulsante.
Ma una volta aperta la maschera desiderata mi visualizza tutti i record 
e non solo quello che visualizzavo nella maschera precedente.
Ho provato a creare una macro che prima mi esegue il codice 
(eseguicodice) e poi mi applica il filtro (richiamato con una query), 
ma mi dà errore dicendomi "L'oggetto non contiene l'oggetto di 
automazione "routine"".
Qual'è la sintassi VB da scrivere in un modulo per filtrare i dati 
nella maschera appena aperta?


 maschera appena aperta?
La maschera la apri con il metodo OpenForm che espone l'argomento 
CondizioneWHERE.
Ad esempio:
docmd.openform NomeTuaForm,,,"id="& 
me.id
in questo modo apri la form filtrandola per il campo ID del record Corrente.
P.S.: nell'Editor VBA se ti posizioni su "OpenForm" con il cursore e premi 
F1 si apre l'Help.
-- 
Ciao
Geppo 

 si apre l'Help.
Grazie Geppo. Gentilissimo.
Poi io avevo risolto a questa cosa bovinamente, ma funzionante: 
apertura maschera nelle cui proprietà "Evento>su corrente" mi avvia una 
macro che richiama una query che filtra i dati richiesti, ma come hai 
detto tu è senza dubbio più professionale e anche più veloce 
nell'esecuzione... userò lo script in VB quindi.. ;-)
Dato che i campi da filtrare sono due la seguente riga è corretta?
docmd.openform NomeTuaForm,,,"id="& 
me.id
 AND "n° pratica="& 
me.n°_pratica
mo' vado a smucinarci sopra... :')
Una nuova questione, d'altro tenore, che mi si è presentata oggi:
Volendo inserire una foto per ogni record ho creato nella tabella un 
campo OLE.
Quando lo vado ad inserire nella maschera (tasto dx, inserisci oggetto, 
crea da file, selezione file bmp) mi accadono 2 cose diverse su due PC 
diversi:
- in casa mi si visualizza l'immagine piccolissima con sotto scritto il 
nome del file (le proprietà sono impostate in "zoom" e l'immagine è 
sufficientemente grande. Non ho selezionato la casella "Visualizza come 
icona";
- in ufficio mi dà errore nel server OLE (Server OLE non registrato) e 
mi chiede di reinstallarlo.
Su internet non ho trovato soluzioni idonee: una parlava di 
disabilitare gli script del norton AV ma su un altro PC con lo stesso 
identico norton (l'AV è su rete e non possiamo manometterlo) funge 
bene.
Ho provato anche a ripristinare l'installazione di Office invano.
Ho provato anche ad assegnare all'apertura delle immagini un programma 
specifico Microsoft (paint e MS Office Picture manager), invano anche 
questo.
Infine ho dato anche la seguente riga di comando:
Regsvr32.exe "C:\Program Files\Common Files\Microsoft 
Shared\Triedit\Triedit.dll"
ma nulla di nulla nonostante mi dia come risposta che la libreria è 
stata registrata.
Che altro potri provare?
PS: ho installato WinXP tutto aggiornato (SP3 e successivi 
aggiornamenti) e Office 2003, anche questo aggiornatissimo.


 OLE.
per quanto riguarda le immagini, leggi qua:
http://tinyurl.com/dz9jyw
in caso apri un'altro thread
ciao Nicola
Daniele 

 Dato che i campi da filtrare sono due la seguente riga è corretta?
Se sia "ID" che "n° pratica" sono di tipo numerico allora va scritta cosi:
 docmd.openform NomeTuaForm,,,"[id]="& 
me.id
 &" AND [n° pratica]="& 
me.n°_pratica


Per quanto riguarda le immagini sarebbe opportuno aprire un nuovo thread, 
cosi come indicato anche da Daniele.
-- 
Ciao
Geppo 

 cosi come indicato anche da Daniele.
OK, grazie a tutti per i consigli.
Se avrò qualche altro problema, come sicuramente mi capiterà, tornerò a 
farmi vivo.
Ciao.
