Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    42

    [ACCESS] Query e checkbox

    ciao Ragazzi,

    In una maschera ho una chekbox che, se messa su "checked", mi deve far visualizzare un campo di una query di selezione quando viene lanciata.

    Ho visto nella guida ed anche alcuni esempi che ho trovato ma non riesco a venirne a capo.

    Come dovrei programmare la checkbox e la query?

    grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Ci sono diversi modi per arrivare al risultato,
    il piu classico è quello di fare una maschera che prenda i dati dalla query
    e poi in funzione dello stato della tua casella di controllo
    imposti la proprieta "Visibile" del campo interessato a si oppure no


    Me.Nomecampo.Visible = True ( oppure false )

    __________________________________________________ ____________________

    ma tu hai fatto riferimento specifico a quando viene lanciata la query
    pertanto seguiamo la strada di modificare la query stessa

    ( facci sapere se habbiamo sbagliato strada )
    __________________________________________________ __________________

    cominciamo a
    __ creare la tabella
    __ Inserire dati
    __ Creare una query semplice da modificare dopo

    Consiglio di aprire un nuovo file di access
    e in un nuovo modulo ci metti questo codice che ti
    imposta le basi

    ( quando sei nella finestra di VBA per lanciare la funzione
    trovi un pulsante a forma di Triangolo o freccia verde)

    codice:
    Public Function ImpostaBase()
    Dim ssq As String
    
    ' _______ Cominciamo a creare una semplicissima tabella _________________________
    ssq = ""
    ssq = ssq & "CREATE TABLE T04 "
    ssq = ssq & "("
    ssq = ssq & "Id int identity(1,1) CONSTRAINT [PrimaryKey] Primary Key, "
    ssq = ssq & "Ca1 nvarchar, "
    ssq = ssq & "Ca2 nvarchar, "
    ssq = ssq & "Ca3 nvarchar"
    ssq = ssq & ")"
    
    CurrentProject.Connection.Execute ssq
    ssq = ""
    
    '__________ Inseriamo un po di dati _______________________________________________
    CurrentProject.Connection.Execute "INSERT INTO T04 ( Id, Ca1, Ca2, Ca3 ) VALUES ( 10, 'k', 'kkk', 'u' );"
    CurrentProject.Connection.Execute "INSERT INTO T04 ( Id, Ca1, Ca2, Ca3 ) VALUES ( 2, 'ggg', 'lll', 'u' );"
    CurrentProject.Connection.Execute "INSERT INTO T04 ( Id, Ca1, Ca2, Ca3 ) VALUES ( 12, 'rr', 'aaa', 'u' );"
    CurrentProject.Connection.Execute "INSERT INTO T04 ( Id, Ca1, Ca2, Ca3 ) VALUES ( 17, 'yy', 'ttt', 'u' );"
    CurrentProject.Connection.Execute "INSERT INTO T04 ( Id, Ca1, Ca2, Ca3 ) VALUES ( 3, 'sss', 'yyy', 'u' );"
    CurrentProject.Connection.Execute "INSERT INTO T04 ( Id, Ca1, Ca2, Ca3 ) VALUES ( 1, 'hhh', 'kkk', 'u' );"
    CurrentProject.Connection.Execute "INSERT INTO T04 ( Id, Ca1, Ca2, Ca3 ) VALUES ( 19, 'uuu', '222', 'u' );"
    
    '________ Creo una vista ______________________________________
    ssq = "CREATE VIEW Q04 AS SELECT T04.Id, T04.Ca1, T04.Ca2, T04.Ca3 FROM T04;"
    CurrentProject.Connection.Execute ssq
    
    '  diamo un messaggio di conferma
    MsgBox ("Creato tabella __ Inserito dati ___ Creato vista")
    
    '  NB   Manca la gestione degli errori
    
    End Function
    ora clicca con il mouse nella finestra del DB ( non VBA )
    e premi il tasto F5 per aggiornare lo schermo
    ( oppure chiudi e riapri il DB )
    __________________________________________________ ____________________________


    Adesso puoi creare una Nuova maschera con solamente 1 casella di controllo
    ( Chiamiamola "CaCon" )

    e sull'evento "dopo aggiornamento" di CaCon lanciamo questa routine

    ( adesso il modulo non è piu quello di prima ma bensi
    si tratta del modulo interno della maschera )

    codice:
    Private Sub CaCon_AfterUpdate()
    ' dopo aggiornamento della casella di controllo  di nome " CaCon"
    ' ti modifica la stringa della query
    
    Dim stq As String
    stq = ""
    
    
    If Me.CaCon Then
    ' se la casella di controllo è "spulciata "   prende i campi  1 e 3
        stq = "SELECT T04.Id, T04.Ca1, T04.Ca3 FROM T04;"
        CurrentDb.QueryDefs("Q04").SQL = stq
        stq = ""
    Else
    ' se invece non è "spulciata"                  prende solo il campo  2
        stq = "SELECT T04.Id, T04.Ca2 FROM T04;"
        CurrentDb.QueryDefs("Q04").SQL = stq
        stq = ""
    End If
    
    
    ' adesso per conferma mettiamo nel messaggio la stringa della query cosi come modificata,
    '   osserva che la stringa non arriva  da quanto scritto sopra,
    '   ma VBA  legge direttamente la stringa all'interno della query e la mette nel messaggio
    
    Dim StringaQuery As String
    StringaQuery = CurrentDb.QueryDefs("Q04").SQL
    MsgBox StringaQuery
    
    
    End Sub



    Facci sapere


    .

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    42
    Ciao nman, grazie mille!!! è proprio quello che cercavo!!

    Ho creato un nuovo database e inserito i tuoi codici. Ora li studio e provo ad applicarli nel database che sto realizzando

    Ti faccio sapere....

    grazie ancora!

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.