Newsgroup: it.comp.appl.access
Titolo: Una scelta (doppia) da gruppo di opzioni.

buongiorno, anzi buonasera a tutti.
Espongo il mio problemino....
Ho un gruppo di opzioni su una maschera che, in base alla scelta del pulsante selezionato, valorizza una casella nascosta "SceltaENERGIVORITE"
 
If Me.SceltaClasseEnergia = 1 Then
    Me.SceltaENERGIVORITE = "PG1"
ElseIf Me.SceltaClasseEnergia = 2 Then
    Me.SceltaENERGIVORITE = "PG2"
ElseIf Me.SceltaClasseEnergia = 3 Then
    Me.SceltaENERGIVORITE = "PG1" or "PG2"
ElseIf Me.SceltaClasseEnergia = 4 Then
    Me.SceltaENERGIVORITE = "PG3"
ElseIf Me.SceltaClasseEnergia = 5 Then
    Me.SceltaENERGIVORITE = "PG4"
End If
 
questa casella "SceltaENERGIVORITE" fa parte (come criterio) di una query che, in base al pulsante selezionato filtra i record voluti :
 
Like "*" & [forms]![maschera_frm]![SceltaENERGIVORITE] 
 
Quello che non riesco a far funzionare è la necessità di dover visionare insieme i record "PG1" o "PG2" riferiti al valore 3 della scelta.
 
In altre parole non riesco a valorizzare il criterio del codice di cui sopra in modo tale che mi restituisca entrambi i valori.
Mi scuso se ho utilizzato un italiano pessimo, spero di essere riuscito a spiegare il mio problema e ringrazio chiunque vorrà/potrà aiutarmi.

Mi pare evidente...
 
La Sintassi è:
NomeCampo LIKE *... OR NomeCampo LIKE *...
 
Perchè non fai in modo che quel controllo condizionato serva a qualche cosa..?
 
Io lo scriverei così:
 
Dim strCRIT  As String
 
SELECT CASE Me.SceltaClasseEnergia 
   Case 1,2,4,5
        strCRIT="NomeCampo LIKE '*PG" & Me.SceltaClasseEnergia
   Case 3
        strCRIT="NomeCampo LIKE PG1 OR NomeCampo LIKE PG2"
   Case Else
        Exit Sub/Function
End Select
 
' Ora in  [strCRIT] hai il Criterio... ma non dici come lo applichi...
' Quindi se fosse un FILTRO
 
Me.Filter=strCRIT
Me.FilterOn=True
 
Vedi tu come scrivere il tutto...
 
@Alex

Alex,
grazie mille per il tempestivo e "importante" aiuto.
 
Come avrai capito non sono un granchè come informatico e mi sono "autocostruito" da me, con paurose lacune.
Cerco di spiegarmi meglio perchè capisco il criterio che mi suggerisci ma non come utilizzare il filtro.
 
La mia maschera tramite alcune combo nell'intestazione modifica la sua origine dati.
In questo caso la formula che io utilizzo come criterio della query mi fa da filtro dati. Se non scelgo nulla la query rimane inattiva (altrimenti filtra)
 
Like "*" & [forms]![maschera_frm]![SceltaENERGIVORITE] 
 
quindi, magari dico una corbelleria, ma quando scelgo dalla combo il pulsante con valore 3 dovrei riuscire a far valorizzare il criterio della query con una stringa che venga intesa come "PG1" OR "PG2".
 
grazie per il preziosissimo aiuto. Un caro saluto.
 

Salve,
 
Ignazio Pilone ha scritto:

 > "PG1" or "PG2"
 
2 errori: Fuori della stringa si tratta del operatore "or" di VBA che 
inoltre non funziona con stringhe.
 
Anche come parte della stringa (come lo intesi secondo la descrizione) 
non si funzionasse. Non si puo mandare un operatore come parametro 
perchè il tutto viene interpretato come 1 sola stringa.
 
La soluzione standard è di comporre tutta la stringa SQL con VBA. Un 
alternativa allegra con Eval() ho descritto p.e. nella seconda risposta 
in questa discussione:
 
https://groups.google.com/forum/#!msg/it.comp.appl.access/_f-9pEJBAg8/nQBLVDKzmqUJ
 
 
Se non riesci, descrivi cosa hai provato e incolla tutta la stringa SQL 
della query.
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
 


Intanto fossi in te(se non collide con la realtà) lo metterei come OPZIONE 5 e non 3... altrimenti si sfasano i valori di PG(n) che sono lineari da 1÷4
 
Poi puoi scegliere di gestire la parte VISIVA in modo parallelo dalla parte strutturale del Criterio...
Quindi puoi creare 2 Variabili una la costruisci per il criterio e l'altra per la Visualizzazione... è banale...
 
@Alex

 
Chiarissimo il concetto di Alex di rispettare i valori e quindi ho cosi modificato il codice inserendo il valore 6 che consente la visualizzazione completa.
Per quanto concerne come "passare" il codice, scusatemi ma non ci capisco proprio nulla. Ho anche consultato l'esempio citato da Karl e, in base a quello che ho trovato googlando a compilare, molto pedestremente e senza alcuna cognizione, ma per me è buio pesto.
 
Il codice del gruppo di opzioni è questo :
 
Private Sub SceltaClasseEnergia_AfterUpdate()
 
If Me.SceltaClasseEnergia = 1 Then
    Me.SceltaENERGIVORITE = "PG1"
ElseIf Me.SceltaClasseEnergia = 2 Then
    Me.SceltaENERGIVORITE = "PG2"
ElseIf Me.SceltaClasseEnergia = 3 Then
    Me.SceltaENERGIVORITE = "PG3"
ElseIf Me.SceltaClasseEnergia = 4 Then
    Me.SceltaENERGIVORITE = "PG4"
ElseIf Me.SceltaClasseEnergia = 5 Then
    Me.SceltaENERGIVORITE = Eval("'" & PG1 & "'  In(" & "PG2" & ")")
ElseIf Me.SceltaClasseEnergia = 6 Then
    Me.SceltaENERGIVORITE = "*"
End If
Me.Requery
End Sub
 
qui sotto inserisco anche il codice SQL della query confidando in un cortese e immeritato aiuto.
grazie infinite a tutti.
 
SELECT Anagrafica.[Classi di consumo], FILEPOSTE.MeseFattura, FILEPOSTE.PDR, FILEPOSTE.[CODICE IMMOBILIARE], FILEPOSTE.[AREA IMMOBILIARE], FILEPOSTE.TOPONIMO, FILEPOSTE.VIA, FILEPOSTE.CIVICO, FILEPOSTE.CAP, FILEPOSTE.COMUNE, FILEPOSTE.PROVINCIA, FILEPOSTE.REGIONE, FILEPOSTE.CLASSE_MISURATORE, FILEPOSTE.[MATRICOLA MISURATORE], FILEPOSTE.[MATRICOLA CORRETTORE], FILEPOSTE.DTA_INIZIO_RIF_FATTURA, FILEPOSTE.[VALORE INIZIO LETTURA], FILEPOSTE.[DATA FINE LETTURA], FILEPOSTE.[VALORE FINE LETTURA], FILEPOSTE.[QUANTITA' FATTURATA (SMC)], FILEPOSTE.[CONSUMO STIMATO ANNUO], FILEPOSTE.[FATTURA IN ACCONTO O REALE], FILEPOSTE.[IMPORTO FATTURA PER SINGOLO PDR], FILEPOSTE.[NUMERO FATTURA], FILEPOSTE.[DATA EMISSIONE FATTURA], FILEPOSTE.[DATA SCADENZA FATTURA]
FROM FILEPOSTE LEFT JOIN Anagrafica ON FILEPOSTE.PDR = Anagrafica.[PDR formato testo]
WHERE (((Anagrafica.[Classi di consumo]) Like "*" & [forms]![FILEPOSTE_frm]![SceltaENERGIVORITE]) AND ((FILEPOSTE.PDR) Like "*" & [forms]![FILEPOSTE_frm]![ScePDR]));
 
 
 

 WHERE (((Anagrafica.[Classi di consumo]) Like "*" & [forms]![FILEPOSTE_frm]![SceltaENERGIVORITE]) AND ((FILEPOSTE.PDR) Like "*" & [forms]![FILEPOSTE_frm]![ScePDR]));
 
Direi che i tuoi criteri sono troppo complicati per soluzioni con 
espressioni. La soluzione più semplice sarebbe usare una stringa SQL 
invece della query salvata. Questa stringa potresti comporre con codice 
cioè un po' di concatenazione di stringhe.


Franco mi pareva di aver scritto un codice concettualmente MOLTO DIVERSO...!
Perchè non lo hai nemmeno preso in considerazione....?
 
Quello che hai scritto tu NON PUO' andare, sembra che tu nemmeno ti sia sforzato di capire quanto suggerito...
 
@Alex

ciao Alex,
mi scuso se rispondo solo ora ma ho dovuto rimanere a casa per svolgere alcuni esami medici e non ho potuto più venire in ufficio.
Volevo solo chiarire che non è che non mi sia sforzato di capire quanto suggerito ma che proprio non ho compreso, in virtu della mia scarsa conoscenza di programmazione, di quanto gentilmente mi hai suggerito.
Lo troverai banale ma è così, comunque grazie mille per l'aiuto.