Newsgroup: it.comp.appl.access
Titolo: macro per aprire un record specifico di una maschera

banale finche volete:
ho una sottomaschera in cui è presente un pulsante.
vorrei con una macro aprire una maschera in modo che non sia modificabile.
se uso "apri maschera" la maschera mi si apre sempre al record 1
invece io vorrei che si aprisse al record corrispondente nella
sottomaschera.
ho provato a mettere su where [nome_campo]=Form![maschera]![nome_campo] ma
mi apre la maschera completamente vuota...
provo a scrivere qualche riga di esempio:
sottomaschera:
IDsm  campo1 campo2 campo3  
01      Torino  bla   blabla  >pulsante> vai a record torino maschera
02      Milano  bsdsd  sdsds  >pulsante> vai a record milano maschera
03      Torino  sdsds   as a  >pulsante> vai a record torino maschera
ora non ricordo bene i campi della maschera e sottomaschera ma spero di
aver reso l'idea
(ovviamente potrei usare un pulsante normale creato in autocomposizione...
ma poi la maschera mi viene aperta in modo modificabile)
grazie ciao
robbi
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ho una sottomaschera in cui presente un pulsante.

devi cercare di essere piu' chiaro,fai una domanda e poi fai un
esempio che non centra nulla.
Da quanto ho capito se vuoi aprire una form o un sottoform (mschera o
sotto maschera) in modalita' solo lettura basta inserire nell'evento
click del tuo pulsante di comando il seguente codice:
Docmd.OpenForm "Nometuamaschera"
Me.nomemaschera.Form.AllowEdits = False
Ovviamente nella maschera dovrai creare un pulsante che riporti tutto
in modalita' "modifica" cioe' me.AllowEdits = True.
Fai attenzione se apri la maschera con una macro devi mettere in
modalita' "immissione dati " MODIFICA per evitare che nel form e nel
subform di non poter aggiungere record nuovi.
Se usi una macro il codice sopra riportato diventa
Docmd.Runmacro "Tuamacro"
Me.nomemaschera.Form.AllowEdits = False
Mentre per il secondo quesito,maschera e sottomaschera devono avere
come origine dati delle tabelle relazionate tra loro (Uno a
molti).Facendo così quando nella maschera si apre il "record1" nella
sottomaschera avrai i record CORRELATI al record 1 della maschera e
così via.
Verifica le relazioni
Dino

 Dino
Se mi dici che si può fare con un pulsante senza usare macro ben volentieri
 ho provato ad inserire quanto mi hai indicato ma forse sbaglio qualcosa
perchè mi dice che ci sono errori di sintassi.
il codice originale è questo:
Private Sub Comando19_Click()
On Error GoTo Err_Comando19_Click
    Dim stDocName As String
    Dim stLinkCriteria As String
    stDocName = "MASCHERA"
 
    stLinkCriteria = "[ID_1]=" & Me![ID_1]
    DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Comando19_Click:
    Exit Sub
Err_Comando19_Click:
    MsgBox Err.Description
    Resume Exit_Comando19_Click
 
End Sub
dove Maschera è il nome della maschera che voglio aprire con il pulsante
e ID_1 sono due ID che compaiono sia nella maschera (che poi è una
sottomaschera) in cui è presente il pulsante sia nella maschera che voglio
aprire con il pulsante che mi deve però visualizzare uno specifico ID.
spero di essermi spiegato un po meglio
grazie ciao
-- 
questo articolo e` stato inviato via web dal servizio gratuito 


 - Mostra testo citato -
sE non ho capito male la tua esigenza una volta aperta la maschera e'
di cercare un record specifico nel form o nel sotto form???Se e' nel
form basta creare un combo di ricerca.Se e' nel sottoform basta creare
una casella di tesot di ricerca.
Mentre per bloccare o sbloccare la maschera devi usare Allowedits
=True (sblocca) = false (blocca)
Dino

 End Sub
-- 
Ciao
Geppo 

 - Mostra testo citato -
No Geppo,se non ho capito male l'errore di sintassi non e' nel codice
"postato" ma  quando inserisce il codice che le ho suggerito io per
rendere il form di sola lettura.
Saluti
Dino

 Dino
Esatto... il "mio codice funziona" ma non so dove aggiungere questa riga.
Me.nomemaschera.Form.AllowEdits = False
(ammesso che sia quella giusta)
provo a semplificare:
ho una maschera A di tipo giustificato
In un'altra maschera ho una sottomaschera(A1) di A che è in pratica un
elenco dei record di A.
la sottomaschera A1 ha un pulsante.
il codice che ti ho scritto fa si che premendolo mi si apra il record
corrispondente della maschera A
ovvero: se ho 10 record per A, in A1 avrò 10 righe. ogni riga ha il
pulsante. Se clicco sul pulsante nella riga 5 di A1, mi verrà aperta la
maschera A sul record 5.
Ho bisogno che quel pulsante però me la apra in modo che non sia
modificabile (aggiunte e modifiche le farò da un'altra parte)
Io non voglio "cercare" con una casella combinata ed eventualmente aprire
da li la maschera.
quindi suppongo che quello che hai scritto all'inizio sia giusto... solo
non so bene come integrarlo con il codice che ti ho indicato io:
Private Sub Comando19_Click()
On Error GoTo Err_Comando19_Click
    Dim stDocName As String
    Dim stLinkCriteria As String
    stDocName = "MASCHERA"
 
 
    stLinkCriteria = "[ID1]=" & Me![ID1]
    DoCmd.OpenForm stDocName, , , stLinkCriteria
    Me.MASCHERA.Form.AllowEdits = False
Exit_Comando19_Click:
    Exit Sub
Err_Comando19_Click:
    MsgBox Err.Description
    Resume Exit_Comando19_Click
 
End Sub
grazie per la pazienza...


 - Mostra testo citato -
Inserisci proprio dove l'hai messo :
Me.AllowEdits = False
In quanto  sei gia nel form che vuoi bloccare
Dino

 Dino
Mi apre la maschera posizionata sul record giusto ma resta tranquillamente
mofodificabile:
Private Sub Comando19_Click()
On Error GoTo Err_Comando19_Click
    Dim stDocName As String
    Dim stLinkCriteria As String
    stDocName = "003 M dett corsi inser"
 
 
    stLinkCriteria = "[IDDettagli_corso]=" & Me![IDDettagli_corso]
    DoCmd.OpenForm stDocName, , , stLinkCriteria
    AllowEdits = False
Exit_Comando19_Click:
    Exit Sub
Err_Comando19_Click:
    MsgBox Err.Description
    Resume Exit_Comando19_Click
 
End Sub
sento che siamo vicini...
Robby
-- 
questo articolo e` stato inviato via web dal servizio gratuito 


 questo articolo e` stato inviato via web dal servizio gratuitohttp://
www.newsland.it/newssegnala
 gli abusi ad 
ab...@newsland.it
Hia dimenticato il Me.
Me.AllowEdits = False
Dino

 Dino
volevo vedere se eri preparato ;-)
ti ringrazio... dopo pranzo provo!
buona giornata
-- 
questo articolo e` stato inviato via web dal servizio gratuito 


 Dino
volevo vedere se eri preparato ;-)
ti ringrazio... dopo pranzo provo!
buona giornata
-- 
questo articolo e` stato inviato via web dal servizio gratuito 


 - Mostra testo citato -
Se non dovesse andare metti nell'evento CURRENT e AFTERUPDATE del tuo
form  Me.AllowEdits = False e così funziona sicuramente.
Dino

 > Dino

ho provato... non è cambiato nulla... mi apre la maschera correttamente,
sul record giusto ma è ancora editabile.
e si vede che questa è una maschera hippy...
ciao!!


 ciao!!
-- 
Ciao
Geppo 

 Geppo
Prova il consiglio di Geppo.Ma!!!! Prima hai provato a mettere
AllowEdits=false negli eventi che ti ho detto???
Dino

 Dino
non ho capito se devo mettere quegli eventi nella maschera o sul
pulsante... soprattutto non li ho trovati (ho access in italiano)
(mi ero vergognato troppo per chiedere)
ho provato... 
la stringa di geppo funziona... parzialmente nel senso che i campi della
maschera non sono editabili mentre quelli della sottomaschera che c'è
nella maschera si.
Inoltre è possibile creare un nuovo record per la sottomaschera (cosa che
preferirei venisse evitata. Ci sarà una sezione apposita per la creazione
e modifica dei record della maschera hippy)
grazie Dino, grazie Geppo


 grazie Dino, grazie Geppo
se vuoi bloccare anche la subform allora aggiungi anche questa riga di 
codice:
forms(stDocName)!NOME DELLA SOTTOMASCHERA.form.allowedits= false
-- 
Ciao
Geppo 

 Geppo
Per bloccare la sottoform devi inserire  l'ultimo codice che ti ha
postato Geppo.
Riguardo agli "Eventi"non ti devi assolutamente "vergognare" ci
mancherebbe siamo tutti qui per imparare.....Parlando in Italiano gli
Eventi sono "Corrente" e "dopo aggiornamento".Praticamente tu apri la
maschera e ha ii record bloccati .Con un pulsante modifica poi
effettui il tuo inserimento e dopo aver aggiornato la maschera si
riblocca.
Quindi  Me.AllowEdits=false va messo in corrente e in dopo
aggiornamento.
Se pero' hai optato per il consiglio di Geppo( che va bene) allora
devi solo aggiungere solo l'ultimo post.
Per l'altra domanda se vuoi evitare che nel sottoform vengano aggiunti
dei record puoi bloccarla dalla finestra delle sue proprieta'.Apri la
sottomaschera in struttura vai poi nella scheda dati e sulla voce
"consenti modifiche" metti No.
Fammi sapere
Dino

 Dino
ciao Dino ciao Geppo...
vi ringrazio entrambi...
provo domani..
non mi è chiaro se gli eventi che dici tu li devo modificare nel pulsante
o nella maschera.
non posso bloccare la subform "per davvero" nel senso... nella sua
struttura..
pensavo che sia per la maschera sia per la subform si pootesse aggiungere
una riga nel codice del pulsante che blocca l'inserimento di nuovi record
ma solo quando la maschera e la sottomaschera vengono aperte dal pulsante
(perchè quando le aprirò a partire da un'altra maschera ancora voglio che
siano totalmente editabili (e con la possibilità di aggiungere record)
notte


 > Dino
ciao Geppo, Ciao Dino...
ho provato ad inserire la riga indicata da Geppo.
Dim stDocName As String
    Dim stLinkCriteria As String
    stDocName = "003 M dett corsi inser"
    stLinkCriteria = "[IDDettagli_corso]=" & Me![IDDettagli_corso]
    DoCmd.OpenForm stDocName, , , stLinkCriteria
    Forms(stDocName).AllowEdits = False
    Forms(stDocName)!Sottomaschera 000 blabla bla.Form.AllowEdits = False
per� il VBA sembra non gradire la presenza degli spazzi nel nome maschera
infatti la riga mi diventa rossa... se tolgo gli spazi ritorna nera e il
false ridiventa blu... (per� poi non mi funziona)
ho provato a mettere il nome tra apici singoli e tra doppi apici ma niente
da fare...
si vede che la sottomaschera � ancora pi� hippy della maschera!
PS:
per continut� rispondo sempre sull'ultimo messaggio se no diventa un
casino che non riesco pi� a seguire... sono limitato!
circa gli eventi da aggiungere non ho ancora provato. ora sono di corsa...
forse luned�
intanto buon we e ancora grazie!


 > Dino
ciao Geppo, Ciao Dino...
ho provato ad inserire la riga indicata da Geppo.
Dim stDocName As String
    Dim stLinkCriteria As String
    stDocName = "003 M dett corsi inser"
    stLinkCriteria = "[IDDettagli_corso]=" & Me![IDDettagli_corso]
    DoCmd.OpenForm stDocName, , , stLinkCriteria
    Forms(stDocName).AllowEdits = False
    Forms(stDocName)!Sottomaschera 000 blabla bla.Form.AllowEdits = False
però il VBA sembra non gradire la presenza degli spazzi nel nome maschera
infatti la riga mi diventa rossa... se tolgo gli spazi ritorna nera e il
false ridiventa blu... (però poi non mi funziona)
ho provato a mettere il nome tra apici singoli e tra doppi apici ma niente
da fare...
si vede che la sottomaschera è ancora più hippy della maschera!
PS:
per continutà rispondo sempre sull'ultimo messaggio se no diventa un
casino che non riesco più a seguire... sono limitato!
circa gli eventi da aggiungere non ho ancora provato. ora sono di corsa...
forse lunedì
intanto buon we e ancora grazie!
-- 


 intanto buon we e ancora grazie!
-- 
Ciao
Geppo 

 Forms(stDocName)![Sottomaschera 000 blabla bla].Form.AllowEdits = False
Diciamolo... sono un pirla... il bello č che ho anche provato con le
parentesi tonde ma al fatto che i nomi si racchiudono nelle quadre dovevo
arrivarci... Diamo la colpa al venerdě?
Comunque funziona... ora per completare l'opera (o almeno questa parte)
dovrei riuscire ad impedirli l'inserimento di nuovi record (se e solo se
la maschera viene aperta da quel pulsante)
grazie grazie grazie e buon we


 grazie grazie grazie e buon we
aggiungi:
Forms(stDocName).Allowadditions =False
Forms(stDocName)![Sottomaschera 000 blabla bla].Form.Allowadditions =False
-- 
Ciao
Geppo 

 aggiungi:

grandioso!!!
grazie!!!!
conosci anche il codice per sapere i numeri del superenalotto?
esiste un qualche sito che spiega tutte queste possibili funzioni?
(avevo supposto l'esistenza di qualcosa di simile ad allowadditions ma non
l'ho scovato)
ancora una volta buon we!!!!!!!!!!!!!!!!!!!!!
