• User Newbie

    Access: controllo su modifica dati con pulsante

    Ciao a tutti.
    Non so nulla di programmazione, quindi chiedo a chi risponderà di tenerne conto.

    Sto cercando di costruire una maschera in access contenente un interruttore che funzioni così:

    attivo: posso modificare i dati
    disattivo: non posso modificare i dati.

    in modo da evitare modifiche accidentali.

    Ho provato a costuirne uno settandone le proprietà
    su attivato =[AllowEdits]=Vero
    su disattivato =[AllowEdits]=Falso

    Ma non funziona. Il settaggio delle proprietà della maschera (Dati/Consenti modifiche/Sì-No) non viene modificato dall'interruttore che creo.
    Ho provato un sacco di combinazioni ma non ne vengo fuori.
    Mi aiutate? Grazie Marco


  • Super User

    ciao MarcoU e benvenuto sul Forum GT!

    dunque, direi che devi creare un bottone sulla maschera, poi gestire l'evento di Click sul bottone.

    sull'evento di Click, devi abilitare/disabilitare i vari controlli della maschera (usando la proprietà Enabled dei controlli)

    es. se hai una casella di testo che si chiama txtNome fai qualcosa del tipo:

    txtNome.Enabled= Not txtNome.Enabled

    questo in pratica, imposta la proprietà Enabled (che è una Booleana, cioè, o è True o è False) al suo contrario


  • User Newbie

    Grazie per l'aiuto.
    Sono riuscito a sperimentare la proprietà enabled per alcuni campi (ma non per tutti, senza che io riesca a capirne il motivo, alcuni hanno definizioni perfettamente uguali fra loro...) con il seguente codice, applicato al campo Year

    **Private Sub Interruttore13_Click()
    Year.Enabled = Not Year.Enabled

    End Sub**

    tuttavia la funzione enabled non corrisponde a ciò che cerco. il campo interessato, quando disabilitato è meno leggibile e non permette di selezionare dati. Io voglio agire sul controllo "Consenti modifiche Sì/No" della maschera, che agisce su *tutti *i campi mantenendone inalterato l'aspetto e l'accessibilità.

    Data una maschera che si chiama Pinco Pallino (nota: due nomi separati da spazio) come posso fare?
    Forse la funzione da usare è AllowEdits e/o AllowEditing, ma non ne conosco la sintassi.
    O produco errori o non sono in grado di modificare il settaggio impostato dal menù delle proprietà.

    Grazie ancora, Marco


  • Super User

    OK,
    la proprietà Enabled disabilita il controllo, quindi non te lo lascia selezionare...
    comunque tutti i controlli dovrebbero avere la proprietà Enabled...

    la proprietà AllowEdits onestamente non la conosco (mai usata), ma credo che sia una proprietà dei Form, non dei controlli...quindi usala sull'oggetto form

    se il controllo si chiama "Pinco Pallino" credo tu debba usare le parebtesi quadre, quindi [Pinco Pallino]
    (in generale comunque sarebbe bene NON usare gli spazi nei nomi degli oggetti)


  • Super User

  • User Newbie

    Ci avviciniamo. Fino a ieri sera non sapevo neanche cosìè un form...

    Ho scritto il seguente codice

    **Private Sub Form_Current()
    AllowEdits = False [a ogni cambio di record voglio bloccare la possibilità di modifica]
    Interruttore132 = LostFocus [a ogni cambio di record l'interruttore torna "spento"]

    End Sub

    Private Sub Interruttore132_GotFocus()
    Form.AllowEdits = True

    End Sub**

    Mi restano due cose irrisolte.

    1. Non riesco a fare in modo che quando spengo l'interruttore, senza spostarmi di record, siano impedite le modifiche. In pratica il seguente codice non funziona

    **Private Sub Interruttore132_LostFocus()
    Form.AllowEdits = False

    End Sub**
    2) vorrei che l'interruttore tornasse su ogni volta che esco da un campo (accendo, entro in un campo, digito. Se mi sposto su un altro campo l'interruttore si spegne e le modifiche sono bloccate).

    Puoi aiutarmi? Grazie Mille


  • Super User

    attenzione che gli eenti GotFocus e LostFocus scattano quando il controllo prende o perde il "fuoco" (cioè, ci entri dentro con il cursore, tramite il tasto TAB o ci clicchi sopra)

    direi che devi usare l'evento di click sull'interruttore

    Private Sub Interruttore132_Click()
    Form.AllowEdits = Not **** Form.AllowEdits

    **
    End Sub

    **così, quando clicchi sull'interruttore imposto la proprietà AllowEdits al suo contrario

    per la seconda cosa che chiedi dovresti invece gestire l'evento di LostFocus, ma sui singoli controlli che hai sul form, non sull'interruttore


  • User Newbie

    Salve a Tutti oltre a non essere un programmatore sto utilizzando access da poco meno di una settimana perchè sono stato incaricato dal mio capo di creare un programmino per database clienti. Ho crerato una tabella e una maschera. Nella maschera ho bloccato tutti i dati in modo tale tale da non modificarne il contenuto accidentalmente. Ho circa 30 caselle di testo. Ora mi occorrerebbe proprio questo comando cioè un interruttore che mi abiliti la possibilità di modificare i dati di clienti già inseriti o di inserire nuovi dati nella scheda cliente nuova. Ho provato a creare quelle righe di cpmando ma sono annegato negli errori potreste per cortesia dirmi tutti i passaggi che devo fare per poter creare questo interruttore? Ringraziandovi anticipatamente porgo cordiali saluti.


  • User Newbie

    @autodafe said:

    ciao MarcoU e benvenuto sul Forum GT!

    dunque, direi che devi creare un bottone sulla maschera, poi gestire l'evento di Click sul bottone.

    sull'evento di Click, devi abilitare/disabilitare i vari controlli della maschera (usando la proprietà Enabled dei controlli)

    es. se hai una casella di testo che si chiama txtNome fai qualcosa del tipo:

    txtNome.Enabled= Not txtNome.Enabled

    questo in pratica, imposta la proprietà Enabled (che è una Booleana, cioè, o è True o è False) al suo contrario

    Scusate l'intrusione, ma volevo ringraziare autodafe .
    Dopo una settimana che non capivo e non trovavo nulla sul web, mi sono imbattuto in questo forum meraviglioso e quel piccolo codice ( permettetemi il termine ) banale, ma a me e credo a molti sconosciuto, mi ha risolto un problema che si trascinava da 7 giorni.
    Grazie grazie grazie autodafe