Newsgroup: it.comp.appl.access
Titolo: modifica

Sarebbe possibile far si che al click di un pulsante in una maschera che non 
consente la modifica del record fare in modo che questa venga invece 
consentita?
grazie 


Al click metti nell'evento Click il codice
me.AllowEdits = true
Per favore quando inserisci nel NG dei quesiti nell'oggetto metti
qualcosa di più esplicativo, serve agli altri quando fanno ricerche.
Con un oggetto che spiega bene il contenuto del quesito è più facile
individuare il thread che può darti la risposta che cerchi.
Ciao
AleC

 grazie
Al click metti nell'evento Click il codice
me.AllowEdits = true
Per favore quando inserisci nel NG dei quesiti nell'oggetto metti
qualcosa di pi� esplicativo, serve agli altri quando fanno ricerche.
Con un oggetto che spiega bene il contenuto del quesito � pi� facile
individuare il thread che pu� darti la risposta che cerchi.
Ciao
AleC
ok, scusami e mille grazie 


per esempio
Oggetto: attivare modifiche in maschera in sola lettura
riciao
AleC

AleC
Oggi sembra che insegua tutti i thread di AleC.....ma non � vero!!!!
Volevo permettermi un consiglio a lori22.....secondo me non � sempre bene attivarte le modifiche su una form associata xch� se lasci a met� l'inserimento o devi controllare qcosa metti in lock la tabella e agisci direttamente sulla base dati (cosa x me da evitare....). Io propendo + per una maschera non associata che prenda i valori dalla maschera corrente, tu fai tutte le modifiche che vuoi e quando hai finito update del record. Se ti rendi conto che non dovevi modificare nulla, chiudi e non � successo nulla (neanche il record bloccato..). Cos� hai + controllo sugli inserimenti.......
-- 
Questo articolo e` stato inviato dal sito web 
http://www.nonsolonews.it

 
Le cose non sono in genere totalmente buone o totalmente cattive.
La associazione alla origine dati nella stragrande maggioranza dei casi 
puo' essere oltre che utile anche meno laboriosa.
Il problema dell'inserimento e/o modifica lasciato a meta' non esiste. 
Dalla versione a2k e' stato aggiunta la proprieta' Dirty e l'Undo esiste 
dalla notte dei tempi. L'utilizzo appropriato di questi due termini 
consente un completo controllo anche verso le modifiche accidentali.
Il tutto ovviamente scrivendo pochissime righe di codice.
--
ac

 ha scritto nel messaggio 
news:qN0Fk.16392$Uo5....@tornado.fastwebnet.it...

Non sono in grado di inserirmi nei vostri discorsi, ne aprofitto per 
chiedervi se sia possibile, nel momento in cui si clicca sul pulsante, avere 
anche un qualcosa che visivamente testimoni la nuova situazione, che so la 
modifica del colore di sfondo dei campi, ma se per fare questo devo 
nominarli uno per uno ci rinuncio, sono troppi!
ciao 

ac
Tutto vero Alessandro, e in effetti se ho maschere con troppi campi, utilizzo anche io la form associata, utilizzando Dirty e un loop sui vari campi con oldvalue. Penso solo che se la form non � troppo elaborata, come per gli inserimenti, sia + 'comodo', ma come dici tu, non - laborioso, avere form dedicate, magari anche tbl temporanee in modo da controllare sempre tutto prima di agire sui dati originali. Ho un po' la fobia che gli utenti possano rovinare il BE attraverso qualche azione....'disdicevole'...ma pu� essere, appunto, una mia fissazione......
Cmq sposo in pieno la tua affermazione che "Le cose non sono in genere totalmente buone o totalmente cattive." :-)
Un saluto 
Roberto



Se per nuova situazione intendi se la maschera permette o no inserimenti, puoi utilizzare un loop su tutti i controlli e x ognuno imposti un colore di sfondo diverso (x es..)
Una cosa del tipo
Dim C as control
for each c in me.form
if c.controltype =106 or c.controltype =109 then
c.backcolor = xxx
end if
loop
106 e 109 � per cercare colo i textbox o le combo. Se vuoi aggiungere altri controlli basta che aggiungi i numerini giusti.....Io metterei la form con allowedits=true e poi il ciclo per cambiare colore. Ci sar� anche qcos'altro da implementare (magari le caption di alcuni tasti, abilitare/disabilitare alcune funzioni) ma � tutto qua


 ha scritto nel messaggio 
news:gc2btr$dkr$1...@news.nonsolonews.it...

ho inserito il tuo codice all'evento click del pulsante modifica... ma non 
succede niente... il colore deve essere espresso in esadecimali o basta per 
esempio red.... al posto di form devo mettere il nome della maschera... 
avrai capito che sono una novellina... 

 ac
Nessun problema Fair.
:-)
AleC

 - Mostra testo citato -
Io di solito uso due colori di sfondo diversi per indicare campi
editabili da quelli solo leggibili però ti consiglierei, per
semplicità, visto che per ora non hai tanta pratica di Access e di
VBA, di mettere una etichetta nella maschera da qualche parte dove
come testo pre-impostato c'è scritto per esempio "Sola lettura" poi
nello stesso evento click del pulsante che rende la maschera editabile
metti:
Me.MiaLabel.Caption = "Record in modifica"
(la proprietà caption è il testo che è contenuto nelle etichette,
funziona anche per esempio con i pulsanti; ma non con le textbox dove
il testo che ci vedi dentro è il contenuto del controllo)
o il testo che più ti piace, magari puoi anche cambiare colore
all'etichetta con
me.mialabel.backcolor = vbred
me.mialabel.forecolor = vbwhite
per rendere più evidente il fatto che in quel momento il record è
modificabile
AleC

 - Mostra testo citato -
Io di solito uso due colori di sfondo diversi per indicare campi
editabili da quelli solo leggibili per� ti consiglierei, per
semplicit�, visto che per ora non hai tanta pratica di Access e di
VBA, di mettere una etichetta nella maschera da qualche parte dove
come testo pre-impostato c'� scritto per esempio "Sola lettura" poi
nello stesso evento click del pulsante che rende la maschera editabile
metti:
Me.MiaLabel.Caption = "Record in modifica"
(la propriet� caption � il testo che � contenuto nelle etichette,
funziona anche per esempio con i pulsanti; ma non con le textbox dove
il testo che ci vedi dentro � il contenuto del controllo)
o il testo che pi� ti piace, magari puoi anche cambiare colore
all'etichetta con
me.mialabel.backcolor = vbred
me.mialabel.forecolor = vbwhite
per rendere pi� evidente il fatto che in quel momento il record �
modificabile
AleC
tutto ok, ma se inserisco un pulsante che mi riporti alle condizioni 
iniziali con Me.AllowEdits = False non mi funziona

 - Mostra testo citato -
Non so se hai fatto copia e incolla o meno ma la proprietà l'hai qui
scritta sbagliata:
Me.AllowsEdit = False
AleC

 - Mostra testo citato -
è molto elegante usare lo stesso pulsante per scambiare la modifica e
il blocco dei dati con questo codice:
sub pulsante_click()
if me.allowsedit = true then
  me.allowsedit = false
  me.label.caption "Sola lettura"
  me.label.backcolor = quello che vuoi
  me.label.forecolor = quello che vuoi
  me.pulsante.caption = "Modifica record"  'se imposto a sola lettura
il pulsante mi indicherà la possibilità di metterlo inmodifica
  docmd.runcommand accmdsaverecord  ' salva le modifiche
else
  me.allowsedit = true
  me.label.caption "Record in modifica"
  me.label.backcolor = quello che vuoi
  me.label.forecolor = quello che vuoi
  me.pulsante.caption = "Salva record"  'quando sono in modifica il
pulsante mi consente di tornare alla sola lettura salvando le
modifiche eventuali
end if
end sub
la eventuale modifica dei colori di sfondo dei controlli lo inserisci
nelle due parti della if
AleC

 - Mostra testo citato -
� molto elegante usare lo stesso pulsante per scambiare la modifica e
il blocco dei dati con questo codice:
sub pulsante_click()
if me.allowsedit = true then
  me.allowsedit = false
  me.label.caption "Sola lettura"
  me.label.backcolor = quello che vuoi
  me.label.forecolor = quello che vuoi
  me.pulsante.caption = "Modifica record"  'se imposto a sola lettura
il pulsante mi indicher� la possibilit� di metterlo inmodifica
  docmd.runcommand accmdsaverecord  ' salva le modifiche
else
  me.allowsedit = true
  me.label.caption "Record in modifica"
  me.label.backcolor = quello che vuoi
  me.label.forecolor = quello che vuoi
  me.pulsante.caption = "Salva record"  'quando sono in modifica il
pulsante mi consente di tornare alla sola lettura salvando le
modifiche eventuali
end if
end sub
la eventuale modifica dei colori di sfondo dei controlli lo inserisci
nelle due parti della if
AleC
ho inserito il codice ma la maschera non risponde, deve essere impostata 
all'origine qualcosa nelle propriet� della form? 

 - Mostra testo citato -
Ho scritto male la proprietà AllowEdits ( e ti avevo pure corretta in
un altro messaggio ).
Sarà quello.
Ovviamente i nomi dei controlli devi mettere quelli che hai impostato
tu nella tua maschera.
Ma ti dà qualche errore o semplicemente non fa niente ?
AleC

 - Mostra testo citato -
Ho scritto male la propriet� AllowEdits ( e ti avevo pure corretta in
un altro messaggio ).
Sar� quello.
Ovviamente i nomi dei controlli devi mettere quelli che hai impostato
tu nella tua maschera.
Ma ti d� qualche errore o semplicemente non fa niente ?
AleC
Non fa nulla...ma mi chiedo se all'apertura della maschera devo impostare 
gia qualcosa di non modificabile, aggiungere perci� la propriet� AllowEdits 
su false nell'evento load... 

 - Mostra testo citato -
No, nelle proprietà della maschera metti quello che deve essere quando
apri la maschera
Se vuoi che la maschera si apra in modalità sola lettura metti a false
Allowedits  e il nome del pulsante "Modifica" l'etichetta "Sola
lettura" poi queste informazioni cambieranno quando premi il pulsante.
AleC

 - Mostra testo citato -
No, nelle propriet� della maschera metti quello che deve essere quando
apri la maschera
Se vuoi che la maschera si apra in modalit� sola lettura metti a false
Allowedits  e il nome del pulsante "Modifica" l'etichetta "Sola
lettura" poi queste informazioni cambieranno quando premi il pulsante.
AleC
questo il codice che ho inserito nell'evento click del pulsante:
Private Sub pulsmodifica_Click()
If Me.AllowEdits = True Then
  Me.AllowEdits = False
  Me.modifica.Caption "Sola lettura"
  Me.modifica.BackColor = vbRed
  Me.modifica.ForeColor = vbBlack
  Me.pulsmodifica.Caption = "Modifica record"
  DoCmd.RunCommand acCmdSaveRecord
Else
  Me.AllowEdits = True
  Me.modifica.Caption "Record in modifica"
  Me.modifica.BackColor = vbBlack
  Me.modifica.ForeColor = vbRed
  Me.pulsmodifica.Caption = "Salva record"
End If
End Sub
all'apertura la maschera ha impostato nelle propriet� nella finestra dati 
modifica = no
ma NON FUNZIONA... il pulsante non fa nulla ...sniff 

 ha scritto nel messaggio 
news:48e4f68a$0$14501$5fc...@news.tiscali.it...

l'errore era in queste righe Me.modifica.Caption "Record in modifica"
giusto = Me.modifica.Caption = "Record in modifica"
ma continua a non riportarmi la maschera in false... mah, forse rinuncio
grazie della pazienza 

 rinuncio grazie della pazienza
Ma sei sicura che l'evento � associato al click del pulsante?
entra nell'editor VBA posizionati con il cursore su:
Private Sub pulsmodifica_Click()
e premi F9 la riga si colora, poi clicca sul pulsante.
Se non succede nulla allora l'evento non � associato al pulsante.
-- 
Ciao
Geppo 

 - Mostra testo citato -
In effetti è strano che non succeda niente. Prova a fare il testo che
dice Geppo, prova anche ad aprire la finestra delle proprietà del
pulsante e vedere nel tag degli eventi se a quello Click è impostato
[Routine evento], perché anche se nel modulo della form c'è la sub
relativa ad un evento (in questo caso pulsmodifica_Click) ma nella
proprietà non è impostato [Routine evento] l'evento non si scatena.
AleC

 - Mostra testo citato -
In effetti � strano che non succeda niente. Prova a fare il testo che
dice Geppo, prova anche ad aprire la finestra delle propriet� del
pulsante e vedere nel tag degli eventi se a quello Click � impostato
[Routine evento], perch� anche se nel modulo della form c'� la sub
relativa ad un evento (in questo caso pulsmodifica_Click) ma nella
propriet� non � impostato [Routine evento] l'evento non si scatena.
AleC
Allora, vediamo se riesco a spiegare quello che mi sembra di aver capito sia 
successo:
una volta corretto il codice come gia postato in precedenza, effettivamente 
poi il pulsante (a cui era assolutamente collegato l'evento click) ha 
funzionato, ma non si riportava all'evento iniziale, cio� non modificabile. 
Dopo vari tentativi mi � sembrato che salvando il record invece tutto 
andasse poi a posto, a questo punto mi � stato sufficiente spostare la riga 
del codice di AleC che salvava l'evento e posizionarla come prima riga :
If Me.AllowEdits = True Then
DoCmd.RunCommand acCmdSaveRecord
Me.AllowEdits = False
Me.modifica.Caption "Sola lettura"
Me.modifica.BackColor = vbRed
Me.modifica.ForeColor = vbBlack
Me.pulsmodifica.Caption = "Modifica record"
Else.......
e tutto � ok. Vi ringrazio tantissimo della pazienza che avete avuto, mi 
avete aiutato veramente tanto
ciao Lory

 - Mostra testo citato -
Sì in effetti era una bella castronata mettere prima l'impostazione
della modifica AllowEdits a false e dopo pretendere l'azione
runcommand salvasse il record.