Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4

    [Access] passaggio di informazioni da una maschera ai criteri di una query

    Buongiorno a tutti,
    ho un problema con il passaggio di informazioni da una maschera ai criteri di una query.

    Ho una tabella TProdotti, legata ad una TcategoriaProdotti, in cui voglio filtrare i record a seconda della loro categoria.
    Nella maschera McreaListino3 ho la casella di riepilogo “ElencoCosaOffrire” che contiene 5 valori: Riso;Salati;Dolci;Specialità;Liquidi
    Il pulsante cmdListino lancia il seguente codice con cui crea la query QcreaListino3.

    Private Sub cmdListino_Click()
    Dim strLista As String
    Dim varItem As Variant

    If Me!ElencoCosaOffrire.ItemsSelected.Count = 0 Then Exit Sub

    For Each varItem In Me!ElencoCosaOffrire.ItemsSelected
    'Cattura le opzioni selezionate
    strLista = strLista & _
    Me!ElencoCosaOffrire.Column(0, varItem) & ","
    Next varItem
    'Elimina la virgola eccedente
    strLista = Left$(strLista, Len(strLista) - 1)
    'Imposta codice SQL della query
    CurrentDb.QueryDefs("QCreaListino3").SQL = "SELECT * FROM TProdotti " _
    & "WHERE Categoria IN (" & strLista & ") " _
    & "ORDER BY [TProdotti].[Categoria], [TProdotti].[IDProdotto];"
    ' esempio funzionante: WHERE (((TCategorieProdotti.NomeCategoria) In ("Riso","Dolci")))

    DoCmd.OpenQuery "QCreaListino3"
    End Sub

    Il problema è che la variabile strLista, che legge i valori selezionati tra i 5 di ElencoCosaOffrire, trasformata in criterio della query, assume le parentesi quadre e quindi la query non mi si compila correttamente.

    Ad esempio: se sulla maschera seleziono “Riso” e “Dolci”, strLista = Riso,Dolci ma il criterio nella query si presenta in questa maniera: … IN([Riso],[Dolci]).
    Quindi mi chiede di immettere il valore dei due parametri [Riso] e [Dolci] anziché filtrare – come vorrei – i valori della tabella TProdotti la cui Categoria sia Riso o Dolci.

    E’ settimane che cerco nel forum ma non ho trovato niente che mi aiuti.
    Qualcuno può darmi una mano?

    Grazie mille a tutti!

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4
    Ragazzi, nessuno che ne ha un'idea?
    Sono incappato proprio in ciò che nessuno sa?
    Scusate l'urgenza ma sto problema mi da il tormento.. se poi penso - come magari si dimostrerà - che la soluzione sarà una vera banalità.. no, meglio che non ci pensi!

    Grazie ancora

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4
    FATTO!

    Ragazzi,
    una persona mi ha suggerito la risposta che voglio condividere con voi - per evitarvi le mie pene - e che, CVD, è una banalità.
    E' sufficiente concatenare nella stringa che preleva le opzioni selezionate le virgolette, prima e dopo ciascuna voce.
    Riporto il codice:

    strLista = strLista & """" & _
    Me!ElencoCosaOffrire.Column(0, varItem) & ""","

    NB: per inserire le virgolette come testo in una stringa vanno fatte precedere da due coppie di virgolette e chiuse da una sola
    (a dirlo è un po' un casino.. vedete il codice e provate, funziona)

    Ciao
    Makli

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315

    Moderazione

    Probabilmente avresti ottenuto maggiori informazioni se avessi postato nel forum corretto: VBA viene trattato assieme a VB.

    Sposto.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.