Condividi tramite

Query access con criteri da Public Fuction

Anonimo
2015-06-25T13:08:34+00:00

Buona sera a tutti.

In un database ho implementato una query che, come criterio variabile di campo, prende i dati da una Funzione Pubblica.

Tutto bene finchè il risultato del campo (numerico) è singolo... ma ciò che mi fa dannare da alcuni giorni e il cercare di passare come criterio una serie di valori (calcolati ovviamente dalla funzione)

Esempio:

Se nel criterio query scrivo: 81 or 82 (due valori a caso) Tutto OK

Se nel criterio query scrivo: In (81, 82)  Tutto OK

Ma se devo passare tali valori da Funzione Pubblica tipo: Like(miafunzione()) oppure IN(miafunzione() , avendo ovviamente più valori da valutare, non funziona.

Qualcuno può aiutarmi ?

Grazie infinite in anticipo.

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

9 risposte

Ordina per: Più utili
  1. Anonimo
    2015-06-25T17:31:29+00:00

    ciao GiPec,

    ho provato a stenderti un esempietto al volo....

    la Dlookup come ci mostri non rende un set di possibili criteri ma solo il primo all'interno del dominio in cui effettui la ricerca.

    per eseguire la ricerca con un criterio più complesso ho pensato a questo.

    listbox in una maschera che visualizza i clienti.

    un command button nella stessa che apre la maschera degli ordini cliente in base a quanto hai selezionato nella list box.

    con un ciclo for each concateni in una tua "clausula" where che filtrerà la form in ordini  apertura.

    cosi :

    Dim varItem    As Variant

    Dim strMyWhere As String

    For Each varItem In Me.lstCustomer.ItemsSelected

        strMyWhere = strMyWhere & ",'" & Me.lstCustomer.Column(0, varItem) & "'"

    Next

    strMyWhere = "idcliente in (" & Mid(strMyWhere, 2) & ")"

    MsgBox strMyWhere

    DoCmd.OpenForm "query75", acNormal, , strMyWhere

    per capire meglio la strMywhere la visualizzo in un msgbox.

    questo l'esempio :http://1drv.ms/1LGsncG   giPec.accdb.

    apri la maschera23 e prova a selezionare un cliente o più clienti e poi a cliccare sul command button apriOrdini. vedrai che indipendentemente dal numero di clienti che scegli, il ciclo concatenerà la clausula where in modo tale da visualizzare solo gli ordini del/dei  cliente/clienti selezionati nella listbox.

    HTH

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-06-25T16:30:21+00:00

    OK, la funzione è questa:

    Public Function CIDOFF() As String

    UTL = CurrentUser()

    CIDOFF = DLookup("[CIDOFF]", "Agenti", "[COGNOME] = '" & UTL & "'")

    Select Case CIDOFF

    Case 0, 8, 10, 60, 62

     CIDOFF = "*"

    Case Else

     CIDOFF = DLookup("[CIDOFF]", "Agenti", "[COGNOME] = '" & UTL & "'")

    End Select

    End Function

    attualmente restituisce un numero singolo e la query ha come criterio Like (CIDOFF())

    ma avrò la necessità che la query accetti più numeri come criterio

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-06-25T16:18:26+00:00

    ok puoi postare la funzione?

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-06-25T16:07:26+00:00

    Si, hai capito bene... Ho provato inserendo Like(miafunzione()) nei criteri, ho provato anche con in(miafunzione()), ma il tutto funziona se viene restituito un solo dato.

    La mia necessità è automatizzare il fatto di avere più dati di filtro per quel campo restituiti dalla funzione.

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2015-06-25T15:38:31+00:00

    ciao GiPec,

    non so se ho capito bene, hai provato con =miaFunzione() nei criteri?

    altrimenti posta la funziona e la query.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento