Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    4

    [VBA/ACCESS] Uso degli interruttori nelle maschere

    Salve a tutti!
    Premetto dicendo che non sono riuscito a trovare nulla di utile né sul forum né su internet...
    Sono alle prese con il mio primo database di Access. Sto provando a creare un interruttore che mi consenta di sbloccare la maschera per consentire le modifiche ma sto incontrando alcune difficoltà con il codice di VB.

    Ho provato come segue, per fare in modo che al primo click sia sbloccata la maschera e al secondo torni bloccata (aggiungendo inoltre una riga per cambiare l'etichetta visualizzata) ma non funziona nulla..

    codice:
    Private Sub Interruttore71_Click()
    
        If Interruttore71.Value = True Then
            Interruttore71.Caption = "Fine Modifica"
            Me.AllowAdditions = True
            Me.AllowEdits = True
        Else
            Interruttore71.Caption = "Modifica Dati"
            Me.AllowAdditions = False
            Me.AllowEdits = False
        End If
            
    End Sub
    Qualcuno mi sa aiutare a capire il perché? Mi viene un po' difficile riuscire a comprendere il funzionamento degli interruttori sebbene ad intuito mi sembrano semplici. Vi ringrazio in anticipo!


    EDIT:
    In realtà ho provato anche con un pulsante con il seguente codice:

    codice:
    Private Sub Comando58_Click()
        
        Me.AllowAdditions = True
        Me.AllowEdits = True
            
    End Sub
    Questo funziona ma non saprei come ribloccare la maschera: ho provato con un secondo pulsante, uguale ma con false, però non ha effetto...

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    4
    Mmh... Qualcosa non va. Ho provato con un foglio excel con un interuttore e un codice simile, che funziona. E l'interruttore ha un aspetto diverso, mentre in access (v. 2007) appare come un pulsante (mi sono accertato comunque di non aver sbagliato).

    Non ci capisco più nulla!

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    4

    Quasi risolto

    Mi sono accorto di un errore!

    In realtà partivo con i permessi di modifica e aggiunta della maschera intera bloccati (da proprietà). Quindi il codice che avevo scritto prima non funzionava perché non potevano essere apportate modifiche (quindi l'interruttore non poteva agire).
    Per ora ho tolto i permessi e ho commentato le righe con "Me.AllowsXXXXX" in modo da controllare se almeno funziona l'interruttore. ora funziona e cambia l'etichetta.

    EDIT: Risolto
    Ho risolto mettendo un tag "BLOCCA" nelle proprietà delle caselle di testo da bloccare e con il seguente codice:

    codice:
    Function SetActiveState(Value as Boolean)
    Dim ctl as Access.Control
    For each ctl in Me.Controls
       Select Case ctl.ControlType
            Case acTextBox
                 If ctl.TAG="BLOCCA" Then
                    ctl.Locked=Value
                 End If
       End Select
    Next
    End Function
    e ho poi richiamato la funzione nel codice dell'interruttore, impostando dall'inizio le caselle bloccate:

    codice:
    Private Sub Form_Current()
            Interruttore71.Caption = "Modifica Dati"
            Call SetActiveState(True)
    End Sub
    
    Private Sub Interruttore71_Click()
    
        If Interruttore71.Value = True Then
            Interruttore71.Caption = "Fine Modifica"
            Call SetActiveState(False)
        Else
            Interruttore71.Caption = "Modifica Dati"
            Call SetActiveState(True)
        End If
            
    End Sub
    Mi resta da risolvere il problema che ora misteriosamente non mi scorre più tra i record e la maschera si apre vuota...

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    4
    Sembra che ho risolto anche questo aggiungendo questa riga nel blocco di istruzioni relative allo stato corrente della maschera:

    codice:
    Private Sub Form_Current()
            Interruttore71.Caption = "Modifica Dati"
            Call SetActiveState(True)
    
            Me.FilterOn = False
    
    End Sub
    Però non ho capito il motivo ad essere sincero. Me ne sono accorto vedendo che tornando alla maschera principale e poi di nuovo a quella in questione si rivedeva tutto e c'era il filtro disattivato.

    Ora comunque carica di nuovo tutto. Per me la discussione si può chiudere qui... Scusate se sono sembrato frenetico ad aggiungere risposte e modificare i miei post, ma non mi piace lasciare un thread in sospeso (anche perché può servire ad altri). Forse sono stato precipitoso a chiedere aiuto ma ero bloccato da 2 giorni. Spero di poter essere utile a qualcun altro almeno.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.