Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 6 su 6

Creare query via VBA valutando le opzioni

  1. #1
    Jocman non è in linea Scolaretto
    Post
    384
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao a tutti.
    Sto giocherellando per vedere se riesco a creare una maschera di ricerca un pò complessa (a seconda di quello che imposterò vorrei poter limitare la ricerca alla sola tabella padre o nel caso servisse a una o più tabelle figlie).

    Sto impostando i criteri di ricerca utilizzando dei toggleButton abbinati a delle combobox: selezionando il toggle genererei il campo della tabella in cui è contenuto il dato da ricercare (questo selezionato dalla relativa combobox).

    una volta fatte le scelte, premendo il pulsante CERCA mi costruisce la query risultante e da gli esiti.

    O almeno questo è quello che spero ottenere; qualcosa di simile lo avevo già fatto in passato, ma non così articolato, per cui sto procedendo per gradi, costruendo la maschera con i vari elementi e scrivendo mano mano il codice.

    Nella mia idea, tra le opzioni (i toggleButton) che sto creando ce ne è una (diciamo PIPPO, che però è abbinato ad una textbox) che per forza di cose sarà...singola, cioè deve generare una sql del tipo:

    SELECT * FROM tabella WHERE [Valore]='" & testo selezionato in maschera
    
    La ratio è che io già so che selezionando PIPPO otterrò un solo record (o nessuno qualora non esista il valore immesso), quindi non avrei alcuna necessità di aggiungere criteri di selezione.

    Poichè ci sono diversi toggle e relative combo di scelta, vorrei fare in modo che premendo CERCA, qualora PIPPO fosse selezionato con altri toggle, mi avvisasse dicendomi "guarda che PIPPO non è selezionabile insieme ad altre opzioni"

    Solo che non idea di come farglielo fare.....

    Andrea

  2. #2
    L'avatar di muttley005
    muttley005 non è in linea Topo di biblioteca
    Post
    2,044
    Like Inviati  
    0
    Like Ricevuti  
    0
    non capisco il problema, all'inizio della funzione generata dal CERCA metti qualcosa del tipo
    if not ControlloOK then exit sub
    
    dove controlloOK è
    private function ControlloOK as boolean
    ...
    end functione
    
    e all'interno scrivi che se PIPPO è valorizzato nessuno degli altri controlli lo deve essere
    ad esempio facendo un ciclo cui controls (io preferisco utilizzare per comodità anche la proprietà TAG)
    quindi
    private function ControlloOK as boolean
    ... eventuale codice prima
    
    'controllo per PIPPO
       if trim$(nz(me.pippo,vbnullstring))<>vbnullstring then
          for each C in me.controls
             if C.TAG="xxx" and not isnull(C.value) then exit function
          next
       end if
       
    ... eventuale codice dopo
       ControlloOk=True
    end function
    
    ovviamente devi mettere "XXX" nella TAG dei controlli che vuoi appunto controllare

  3. #3
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Post
    16,803
    Like Inviati  
    0
    Like Ricevuti  
    23
    Non ho capito molto... ma ti espongo un esempio di come gestisco una sorta di MultiFiltro:
    Dim strWH as String
    If Len(Me.cmbAnagrafica & "")>0 Then strWh="IdAnagrafica=" & Me.cmbAnagrafica & " AND "
    If Len(Me.cmbOggetto & "")>0 Then strWH=strWH & "Oggetto='" & Me.cmbOggetto & "' AND "
    If Len(Me.cmbDocumento & "")>0 Then  strWH=strWH & "IdDocumento=" & Me.cmbDocumento & " AND "
    ' quì metti tutti gli altri [n] controlli di criterio...
    If Len(strWH)>0 Then 
        strWH=Mid$(StrWH,1,Len(strWH)-5) 
        Me.Filter=strWh
        Me.FilterOn=True
    Else
        Me.FilterOn=False
        Me.Filter=vbNullstring
    End If
    
    ℹ️ Leggi di più su @Alex ...

  4. #4
    Jocman non è in linea Scolaretto
    Post
    384
    Like Inviati  
    0
    Like Ricevuti  
    0
    L'interruttore "PIPPO" mi serve come unico criterio di selezione perchè, in pratica, è il numero di protocollo di un documento (ecco perchè associato ad una textbox) e che quindi come tale è unico, ecco perchè dicevo che la risposta della query potebbe essere solo SI o NO. Aggiungere a PIPPO altri criteri di ricerca sarebbe inutile in quanto se non esiste quel protocollo non ha senso cercare altri valori (ed ecco perchè se PIPPO fosse attivo insieme ad altri interruttore vorrei mi avvisasse, altrimenti riceverei orisposta negativa (non c'è il protocollo immesso) o comunque una sola risultanza, quando magari avevo altre esigenze di ricerca.

    Grazie ad entrambe per gli ottimi consigli.

    Andrea

  5. #5
    L'avatar di muttley005
    muttley005 non è in linea Topo di biblioteca
    Post
    2,044
    Like Inviati  
    0
    Like Ricevuti  
    0
    se è così potresti gestire il tutto anticipando il CERCA ... almeno io lo troverei anche + chiaro per l'utente.
    quindi alla compilazione del PIPPO annulli (e disabiliti?) il resto

  6. #6
    Jocman non è in linea Scolaretto
    Post
    384
    Like Inviati  
    0
    Like Ricevuti  
    0
    Si, potrebbe essere una soluzione, ma mi immagino già già la scena.....
    Tizio che imposta 3 o 4 criteri di scelta (mi limito nel numero...), poi la genialata: aspetta mi pare che la 23/4 fosse una di quelle che cerco, ci metto pure quella. Preme il relativo interruttore e puff! magicamente gli resetta tutti gli altri controlli
    Ricomincia daccapo (dopo aver consultato il calendario di frate indovino per il mese di gennaio), rifà la stessa cosa e così via fino a fine calendario. E poi forse (forse) mi verrebbe a chiedere il perchè.

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Filtrare query per report con valori di gruppo di opzioni
    Da AmnesiaVivace nel forum Microsoft Access
    Risposte: 20
    Ultimo Post: 30-08-2016, 08:57
  2. Filtrare query per report con valori di gruppo di opzioni
    Da AmnesiaVivace nel forum Microsoft Word
    Risposte: 1
    Ultimo Post: 26-08-2016, 16:43
  3. Creare un condizionale in un menù di opzioni (Access)
    Da francesco-95 nel forum Microsoft Access
    Risposte: 4
    Ultimo Post: 29-06-2016, 10:54
  4. Gruppo opzioni nei parametri query
    Da matatools nel forum Microsoft Access
    Risposte: 9
    Ultimo Post: 30-08-2013, 21:51
  5. query di record con più opzioni
    Da kassandra nel forum Microsoft Access
    Risposte: 3
    Ultimo Post: 08-04-2011, 02:13