Pulsante per parametri query

di il
23 risposte

Pulsante per parametri query

Premetto che conosco pochissimo codice, vorrei creare un pulsante in una maschera che vada ad inserire in un campo come parametro più valori tipo:

19 Or 22 Or 45

per l'inserimento manuale nella query è semplice, se però inserisco il parametro di riferimento alla maschera tipo:

[Maschere]![MyMask]![Codice]

Affinché il pulsante lo inserisca automaticamente mi viene difficile.

23 Risposte

  • Re: Pulsante per parametri query

    Rivenmyst ha scritto:


    Premetto che conosco pochissimo codice, vorrei creare un pulsante in una maschera che vada ad inserire in un campo come parametro più valori tipo:

    19 Or 22 Or 45
    Intanto un criterio scritto così non esiste in nessuna query... è sintatticamente errato... questo ci lascia qualche dubbio su come rapportarci.

    Rivenmyst ha scritto:


    per l'inserimento manuale nella query è semplice
    Sarebbe bello capire cosa significa per te è semplice... perchè temo tu lo associ in realtà ad una cosa non gestibile... quindi sbagliata, pur funzionante ma si usa principalmente per esempi o manuytenzione non per un'interfaccia...!

    Rivenmyst ha scritto:


    , se però inserisco il parametro di riferimento alla maschera tipo:

    [Maschere]![MyMask]![Codice]

    Affinché il pulsante lo inserisca automaticamente mi viene difficile.
    Credo manchi non solo la conoscenza del codice ma anche quella di come si gestiscono le interfacce...
    Per poter inserire dei criteri e passarli ad una Query serve una Maschera in cui hai un controllo di interfaccia, che può essere una TEXTBOX(ma serve in questo caso VALIDARE i parametri prima di farli leggere alla Query), oppure si gestiscono opzioni guidate sempre nella maschera, e si fa rieseguire la query che deve essere scritta in modo che legga eventualmente il criterio se esistente o mostri tutto se non esistente.

    Suggerisco tuttavia di riflettere sul motivo per cui NON hai pensato di usare la proprietà NATIVA della Maschera [FILTER e FILTERON] che mostra i dati della tua QUERY, perchè non si aprono le QUERY direttamente ma si passa SEMPRE per una maschera, salvo in manutenzione come dicevo... ed i motivi sono proprio di CONTROLLO OPERATIVO di ci smanetta nei dati.
  • Re: Pulsante per parametri query

    Non volevo confondere con ulteriori elementi, cercherò di spiegare meglio.

    @Alex ha scritto:


    Rivenmyst ha scritto:


    19 Or 22 Or 45
    Intanto un criterio scritto così non esiste in nessuna query... è sintatticamente errato... questo ci lascia qualche dubbio su come rapportarci.
    Ti assicuro che funziona in una query, forse non ho spiegato l'intento. In un campo ci sono dei valori per esempio dall'1 al 99 e questo criterio seleziona solo i record dove questi valori sono 19, 22 e 45.

    @Alex ha scritto:


    Sarebbe bello capire cosa significa per te è semplice... perchè temo tu lo associ in realtà ad una cosa non gestibile... quindi sbagliata, pur funzionante ma si usa principalmente per esempi o manuytenzione non per un'interfaccia...!
    Ho una maschera con dei dati da inserire, per poi ottenere una lista di persone che corrispondono a quei dati, con più pulsanti. Ogni pulsante poi oltre quei dati inseriti, vanno ad inserire dei criteri fissi (tipo quello di cui ti parlavo: 19 Or 22 Or 45) e aprono la query o anche un report associato ad una query.

    @Alex ha scritto:


    Rivenmyst ha scritto:


    , se però inserisco il parametro di riferimento alla maschera tipo:

    [Maschere]![MyMask]![Codice]

    Affinché il pulsante lo inserisca automaticamente mi viene difficile.
    Credo manchi non solo la conoscenza del codice ma anche quella di come si gestiscono le interfacce...
    Per poter inserire dei criteri e passarli ad una Query serve una Maschera in cui hai un controllo di interfaccia, che può essere una TEXTBOX(ma serve in questo caso VALIDARE i parametri prima di farli leggere alla Query), oppure si gestiscono opzioni guidate sempre nella maschera, e si fa rieseguire la query che deve essere scritta in modo che legga eventualmente il criterio se esistente o mostri tutto se non esistente.
    Volevo creare una sistema simile a questo video:

    https://www.youtube.com/watch?v=hjNWJlWR4H4&list=PLCD2Z9PQ51yoYaNqhvAlb_cTZQ75rxqow&index=100
  • Re: Pulsante per parametri query

    Nel video si parla di [DataInizio] And [DataFine], che ha una sua logica limitata a 2 textbox.
    Tu proponi 3 valori in Or. E se l'utente vuole filtrare 4, 5, 6 valori in Or?

    Rivenmyst ha scritto:


    Ho una maschera con dei dati da inserire,
    Sarebbe la MyMask?

    Rivenmyst ha scritto:


    per poi ottenere una lista di persone che corrispondono a quei dati
    Cioè 19 Or 22 Or 45? Lo vuoi scrivere tutto in una sola textbox?

    Rivenmyst ha scritto:


    con più pulsanti.
    Nomi propri dei pulsanti? Cosa deve fare ogni pulsante?

    Rivenmyst ha scritto:


    Ogni pulsante poi oltre quei dati inseriti, vanno ad inserire dei criteri fissi (tipo quello di cui ti parlavo: 19 Or 22 Or 45) e aprono la query o anche un report associato ad una query.
    Qua non ti seguo più.

    Ti consiglio di abbondare con i nomi propri (maschere, campi, pulsanti, query, report...).
  • Re: Pulsante per parametri query

    Allora faccio un esempio, in una tabella ho dei nominativi:

    NOMINATIVO | CITTA | UFFICIO
    Mario Rossi | Milano | 3
    Giuseppe Verdi | Napoli | 1
    Gigi Proietti | Roma | 2
    Tina Pica | Milano | 3
    Maria Russo | Napoli | 2
    Gino Bartali | Roma | 3
    Gigi Buffon | Milano | 1
    Carol Alt | Milano | 2

    Nella maschera "MyMask" vado ad inserire solo il nome della città nel campo "Nome citta"
    e nella query "NomiQ" in corrispondenza del campo "CITTA" inserisco come criterio:

    [Maschere]![MyMask]![Nome citta]

    Creo un pulsante nella maschera "MyButt" che apre la query con il codice:
    Private Sub MyButt_Click()
    DoCmd.OpenQuery ("NomiQ"), acViewNormal
    End Sub
    Se inserisco in maschera al campo [Nome citta] la parola "Milano" mi trova tutti i record in cui in [CITTA] ci sia scritto Milano:

    NOMINATIVO | CITTA | UFFICIO
    Mario Rossi | Milano | 3
    Tina Pica | Milano | 3
    Gigi Buffon | Milano | 1
    Carol Alt | Milano | 2

    Se invece oltre a conoscere quali nominativi hanno come [CITTA] Milano, volessi sapere solo quelli che fanno parte degli uffici "3" e "2", ovvero:

    NOMINATIVO | CITTA | UFFICIO
    Mario Rossi | Milano | 3
    Tina Pica | Milano | 3
    Carol Alt | Milano | 2

    che cosa devo scrivere nel codice del pulsante "MyButt"?
  • Re: Pulsante per parametri query

    Innanzitutto, quando scrivi codice VBA o SQL, clicca sul tasto in basso "Editor completo & Anteprima", seleziona la porzione di codice, poi clicca in alto sul tasto </> per farlo apparire poi con i tipici caratteri monotype più familiari ai programmatori (è una richiesta del regolamento del forum, leggila).

    Rivenmyst ha scritto:


    Se invece oltre a conoscere quali nominativi hanno come [CITTA] Milano, volessi sapere solo quelli che fanno parte degli uffici "3" e "2", ovvero:

    NOMINATIVO | CITTA | UFFICIO
    Mario Rossi | Milano | 3
    Tina Pica | Milano | 3
    Carol Alt | Milano | 2

    che cosa devo scrivere nel codice del pulsante "MyButt"?
    Non mi sembra corretto/ortodosso/comodo impostare quest'ultimo filtro solo dal VBA.
    Non so come tu voglia pilotare al meglio "il tuo groviglio filtri". Da parte mia ti consiglio anche di non sottovalutare il "filtro in base a maschera", comando nativo di Access che contempla molto bene la scelta Or (Oppure).
  • Re: Pulsante per parametri query

    Il "filtro in base a maschera" mi filtra i record e li visualizza nella maschera (che deve essere associata ad una tabella, la mia maschera non è associata), inoltre in base al pulsante che si preme si avranno scelte di dati diverse, pensavo di risolvere col codice, ma forse la strada più semplice è associare ad ogni pulsante una query diversa con i propri parametri preimpstati
  • Re: Pulsante per parametri query

    Io lavorerei con una maschera associata alla tabella. Su di essa mi gioco il filtro in base a maschera, con tutti i casi possibili.
  • Re: Pulsante per parametri query

    Rivenmyst ha scritto:


    19 Or 22 Or 45.....

    Ti assicuro che funziona in una query, forse non ho spiegato l'intento. In un campo ci sono dei valori per esempio dall'1 al 99 e questo criterio seleziona solo i record dove questi valori sono 19, 22 e 45.
    Siccome SCRITTO così NON può funzionare, è evidente che qualche cosa non quadra.

    Ti faccio un esempio logico.
    Se abbiamo un campo chiamato NumeroPezzi, e vogliamo tutti i records che soddisfano il tuo criteiro 19 Or 22 Or 45, la sintassi non è:
    
    NumeroPezzi = 19 Or 22 Or 45
    La sintassi giusta si può scrivere in 2 modi:
    
    NumeroPezzi = 19 Or NumeroPezzi =22 Or NumeroPezzi =45
    oppure:
    NumeroPezzi  IN(19,22,45)
    
    Da quì se impariamo ad usare la stessa lingua, forse ci capiamo...
  • Re: Pulsante per parametri query

    @Alex ha scritto:


    ...Siccome SCRITTO così NON può funzionare, è evidente che qualche cosa non quadra...
    La butto li: magari lui vede che funziona perché ritorna qualcosa (tutti i record della tabella)? Credo che ci sia qualche cast automatico perché la query: [Code]SELECT * FROM Tabella WHERE 10 viene eseguita senza errori, restituendo tutti i record. Anche con [WHERE 0] viene eseguita, ovviamente senza record risultanti. (Invece SSMS borbotta che vuole un'espressione booleana...)
    Quindi la OR scritta come l'ha riportata Rivenmyst, pur non avendo alcun senso pratico, è corretta sintatticamente. Ho testato proprio ora su A365.

    Sarebbe curioso vedere la query che gli funziona come è scritta realmente...

    EDIT: "è corretta sintatticamente" se scritta come l'ho scritta io. Se come da esempio di @Alex, ovviamente no... Le uniche vie corrette sono quelle da lui riportate come correzioni.
  • Re: Pulsante per parametri query

    @Alex ha scritto:


    
    NumeroPezzi = 19 Or NumeroPezzi =22 Or NumeroPezzi =45
    Così mi tiene conto solo del valore 19

    @Alex ha scritto:


    oppure:
    NumeroPezzi  IN(19,22,45)
    
    Così invece mi dà errore di sintassi
  • Re: Pulsante per parametri query

    Non è possibile... Puoi pubblicare l'intera query? Il campo [NumeroPezzi] di che tipo è?
  • Re: Pulsante per parametri query

    Rivenmyst ha scritto:


    @Alex ha scritto:


    
    NumeroPezzi = 19 Or NumeroPezzi =22 Or NumeroPezzi =45
    Così mi tiene conto solo del valore 19
    Impossibile..!

    Rivenmyst ha scritto:


    @Alex ha scritto:


    oppure:
    NumeroPezzi  IN(19,22,45)
    
    Così invece mi dà errore di sintassi
    Impossibile...!
  • Re: Pulsante per parametri query

    Sgrubak ha scritto:


    ....
    Quindi la OR scritta come l'ha riportata Rivenmyst, pur non avendo alcun senso pratico, è corretta sintatticamente. Ho testato proprio ora su A365.

    Sarebbe curioso vedere la query che gli funziona come è scritta realmente...

    EDIT: "è corretta sintatticamente" se scritta come l'ho scritta io. Se come da esempio di @Alex, ovviamente no... Le uniche vie corrette sono quelle da lui riportate come correzioni.
    Non è corretta in nessun caso... , corretta è quando rispecchia i canoni di Sintassi adeguati, e questo non è il caso, ma contemporaneamente esegue quanto richiesto, tutte le altre considerazioni sono ininfluineti.

    P.S. non l'ho scritta io... l'ha screitta LUI, io ho scritto 2 opzioni di sintassi corrette.
  • Re: Pulsante per parametri query

    @Alex ha scritto:


    ....Non è corretta in nessun caso...
    Non sono d'accordo. Una query può essere corretta a livello sintattico nel momento in cui viene correttamente interpretata ed eseguita. Ovviamente il risultato può essere coerente con quanto atteso, ma è una pura casualità. Fintanto che la sintassi della query è accettata e restituisce dati (benché a caso, come in quella che ho riportato io), perché non ritenerla "corretta sintatticamente ma non semanticamente"?

    @Alex ha scritto:


    ...corretta è quando rispecchia i canoni di Sintassi adeguati, e questo non è il caso, ma contemporaneamente esegue quanto richiesto, tutte le altre considerazioni sono ininfluineti...
    E la query che ho riportato viene eseguita e restituisce dati... Mi sfugge cosa intendi con "ma contemporaneamente esegue quanto richiesto". Se restituisse quanto richiesto sarebbe corretta sintatticamente (dato che restituisce qualcosa) e anche semanticamente (restituisce quello che volevo correttamente). Può essere migliorabile, ma se funziona, è corretta sotto entrambi i punti di vista.
    Va da se che se non è corretta sintatticamente, non lo può essere anche a livello semantico visto che non è proprio interpretabile e quindi non se ne può valutare il risultato atteso.

    @Alex ha scritto:


    ...P.S. non l'ho scritta io... l'ha screitta LUI, io ho scritto 2 opzioni di sintassi corrette.
    Nel post di apertura Rivenmist ha riportato un generico:

    Rivenmyst ha scritto:


    Premetto che conosco pochissimo codice, vorrei creare un pulsante in una maschera che vada ad inserire in un campo come parametro più valori tipo:

    19 Or 22 Or 45
    mentre tu hai esplicitato il nome del campo

    @Alex ha scritto:


    Se abbiamo un campo chiamato NumeroPezzi, e vogliamo tutti i records che soddisfano il tuo criteiro 19 Or 22 Or 45, la sintassi non è:
    NumeroPezzi = 19 Or 22 Or 45
    Quanto da te riportato dopo, sono le due maniere corrette per scrivere la condizione di WHERE, lo so. Era per quello che sono incuriosito da come ha scritto lui la query. Probabilmente non sta sfruttando la visualizzazione SQL, e ha provato ad inserire quanto da te suggerito direttamente nei "Criteri" della visualizzazione Struttura? Li anche a me da errore di sintassi...
Devi accedere o registrarti per scrivere nel forum
23 risposte