Combo Box parametrizzata tramite query

di il
4 risposte

Combo Box parametrizzata tramite query

Buongiorno,

non riesco a scrivere la sintassi corretta nella cella criterio di una query di selezione dedicata a una combo box.

Cosa sto facendo:

Sto costruendo una maschera di nome OSD_ITEM_LIST che è legata alla tabella OSD_ITEM_LIST.

Nella maschera OSD_ITEM_LIST ho inserito una casella di testo come sotto al punto 1 ed una combo box come sotto al punto 2:

1) una casella di testo legata al primo campo della tabella OSD_ITEM_LIST. Tale campo ha come nome di sorgente [OSD NO] e nome elemento nella maschera OSD_NO. Campo di tipo testo breve.

2) una Combo Box a cui ho dato il nome elemento nella maschera OSD_LineItem_sub_CMB.
Questa Combo Box è legata ad una seconda tabella di nome OSD_TMMR che ha come chiave primaria un campo di tipo testo breve di nome sorgente [OSDLineItem_sub]. 

Quello che vorrei fare è:

Durante la compilazione della maschera, una volta inserito il dato nella casella di testo OSD_NO vorrei che la Combo Box mi offrisse valori filtrati con la funzione Like.

Ovvero mi proponesse solo valori che contengano nel campo OSDLineItem_sub il valore OSD_NO.

Per fare questo ho pensato di editare la query di selezione legata alla Combo Box (Proprieta -> Row Source-> ... Edito la query in visualizzazione Struttura) ed inserisco il seguente codice in corrispondenza della riga Criterio:

Like "* & [Forms]![OSD_ITEM_LIST]![OSD NO] &*"

Ma non funziona.

Ho riprovato cambiando la sintassi in qualche modo ma senza risultato. Inoltre non so se devo richiamare il nome dell'elemento in maschera o il nome della sorgente..

Ringrazio in anticipo per qualche suggerimento

francesco

4 Risposte

  • Re: Combo Box parametrizzata tramite query

    Occhio alle virgolette

    "*" & .... & "*"

  • Re: Combo Box parametrizzata tramite query

    21/04/2025 - oregon ha scritto:

    Occhio alle virgolette

    "*" & .... & "*"

    Probabilmente anche gli apici all'esterno 

    "'*" & .... & "*'"

    se il campo è testo, come mi pare di aver capito, ma forse ho frainteso il giro relazioni...

  • Re: Combo Box parametrizzata tramite query

    Se avessi provato avresti visto che degli apici, in questo caso, non c'è necessità.

    È corretto il suggerimento di Oregon, ovvero

    Like "*" & [Forms]![OSD_ITEM_LIST]![OSD NO] & "*"
  • Re: Combo Box parametrizzata tramite query

    21/04/2025 - Stifone ha scritto:

    Se avessi provato avresti visto che degli apici, in questo caso, non c'è necessità.

    È corretto il suggerimento di Oregon, ovvero

    Like "*" & [Forms]![OSD_ITEM_LIST]![OSD NO] & "*"

    Premesso che non ho capito a chi ti riferivi... e magari alcune volte il "quote" serve..!

    Io farei un distinguo in realtà, in quanto si tratta proprio di campo Testo da come riporto sotto...

    Normalmente i criteri di tipo Testo richiedono gli Apicetti in una normale sintassi SQL, a meno di usare i Parameter per passare il criterio o, per quanto mi pare tu abbia ipotizzato, quando si lascia a JET la completa risoluzione implicita del criterio.

    Se componi il predicato SQL così:

    Dim sCriterio As String
    sCriterio="SELECT * FROM T1 WHERE TuoCampo Like *" & [Forms]![OSD_ITEM_LIST]![OSD NO] & "*"
    Me!NomeList.RowSource=sCriterio

    Ovviamente non funziona perchè il campo Testo richiede l'apicetto.... mentre dovrebbe essere come sotto:

    Dim sCriterio As String
    sCriterio="SELECT * FROM T1 WHERE TuoCampo Like '*" & [Forms]![OSD_ITEM_LIST]![OSD NO] & "*'"
    Me!NomeList.RowSource=sCriterio

    Se il predicato lo metti in QBE da quanto dici tu non si mette, ma non sono così certo non avendolo provato, ma non perchè non serve ma solo perchè JET lo mette al tuo posto quando risolve il predicato, e solo perchè quel predicato deve essere risolto in quel modo... cosa peraltro da non incentivare... per una serie di ragioni che sappiamo.

    21/04/2025 - fcaliandro ha scritto:

    .....

    1) una casella di testo legata al primo campo della tabella OSD_ITEM_LIST. Tale campo ha come nome di sorgente [OSD NO] e nome elemento nella maschera OSD_NO. Campo di tipo testo breve.

    Saluti.

Devi accedere o registrarti per scrivere nel forum
4 risposte