Problemi su query e casella di riepilogo

di il
10 risposte

Problemi su query e casella di riepilogo

Buongiorno,

ho un problem che mi fa ammattire e spero di riuscire a spiegarmi.

Ho una tabella con anagrafiche contatti importata da excel. questi dati li visualizzo in una casella di riepilogo tramite una query.

Ho creato una seconda query per filtrare i risultati in base a più caselle di testo quindi diversi criteri (Like [forms]![elencoclienti]![filtro_codice] & "*")
su diversi campi

Non capisco perché questa seconda query funziona benissimo con i dati che ho importato da excel ma non mi fa vedere i dati di record che inserisco nuovi, a meno che tutti i campi del record non siano inseriti.

La cosa strana è che i record importati non sono tutti completi ma hanno diversi campi vuoti.

Spero di essermi spiegato bene e che qualcuno sappia aiutarmi!

Grazie

10 Risposte

  • Re: Problemi su query e casella di riepilogo

    Potresti fornire tutti i dettagli?
    - nomi propri di tutte le tabelle Access
    - nomi propri di tutti i campi
  • Re: Problemi su query e casella di riepilogo

    Si scusate!

    la casella di riepilogo mostra dalla tabella clienti (tb_clienti) una query con i seguenti parametri: Contatore, CodiceCliente, RegioneSociale, RagioneSociale2,Citta, Provincia, Telefono, Mail.

    Per ogni campo ho inserito nella maschera una casella di testo per effettuare ricerca dei contatti: filtro_codice, filtro_rag1,....ecc

    La query di filtrazione risultante che mi da i problemi è questa:

    SELECT tb_clienti.Contatore, tb_clienti.CodiceCliente, tb_clienti.RagioneSociale, tb_clienti.RagioneSociale2, tb_clienti.Città, tb_clienti.Provincia, tb_clienti.Telefono, tb_clienti.email
    FROM tb_clienti
    WHERE (((tb_clienti.CodiceCliente) Like [forms]![elencoclienti]![filtro_codice] & "*") AND ((tb_clienti.RagioneSociale) Like "*" & [forms]![elencoclienti]![filtro_rag1] & "*") AND ((tb_clienti.RagioneSociale2) Like "*" & [forms]![elencoclienti]![filtro_rag2] & "*") AND ((tb_clienti.Città) Like "*" & [forms]![elencoclienti]![filtro_rag2] & "*") AND ((tb_clienti.Provincia) Like [forms]![elencoclienti]![filtro_prov] & "*") AND ((tb_clienti.Telefono) Like "*" & [forms]![elencoclienti]![filtro_tel] & "*") AND ((tb_clienti.email) Like "*" & [forms]![elencoclienti]![filtro_mail] & "*"))
    ORDER BY tb_clienti.CodiceCliente;


    Grazie
  • Re: Problemi su query e casella di riepilogo

    padretursiu ha scritto:


    query con i seguenti parametri: Contatore, CodiceCliente, RegioneSociale, RagioneSociale2,Citta, Provincia, Telefono, Mail.
    Possiamo usare i termini tecnici corretti? Penso che volevi dire "query con i seguenti campi" oppure "query con le seguenti colonne"...parametri vuol dire altro.

    padretursiu ha scritto:


    La query di filtrazione risultante che mi da i problemi è questa:
    SELECT tb_clienti.Contatore, tb_clienti.CodiceCliente, tb_clienti.RagioneSociale, tb_clienti.RagioneSociale2, tb_clienti.Città, tb_clienti.Provincia, tb_clienti.Telefono, tb_clienti.email
    FROM tb_clienti
    WHERE (((tb_clienti.CodiceCliente) Like [forms]![elencoclienti]![filtro_codice] & "*") AND ((tb_clienti.RagioneSociale) Like "*" & [forms]![elencoclienti]![filtro_rag1] & "*") AND ((tb_clienti.RagioneSociale2) Like "*" & [forms]![elencoclienti]![filtro_rag2] & "*") AND ((tb_clienti.Città) Like "*" & [forms]![elencoclienti]![filtro_rag2] & "*") AND ((tb_clienti.Provincia) Like [forms]![elencoclienti]![filtro_prov] & "*") AND ((tb_clienti.Telefono) Like "*" & [forms]![elencoclienti]![filtro_tel] & "*") AND ((tb_clienti.email) Like "*" & [forms]![elencoclienti]![filtro_mail] & "*"))
    ORDER BY tb_clienti.CodiceCliente;
    
    Intanto ti consiglio di racchiudere tra i tags [Code] i codici VBA e gli SQL delle query. Considera che non sono tanto bravo a leggere SQL, ma credo che sia sufficente solo un parametro (il primo). Like non serve, così come non servono tutti gli [b]& "*" [/b]oppure[b] "*" &[/b]. Però non ho capito cosa vuoi fare.
  • Re: Problemi su query e casella di riepilogo

    Chiedo scusa per i miei termini che non sono molto tecnici ma sono assolutamente un principiante di Access e VBA.

    Provo a spiegarmi meglio:

    Ho una maschera [elencoclienti] con un casella di riepilogo che al caricamento mi vede la [QueryClienti]. Questa query contiene i campi: Contatore, CodiceCliente, RegioneSociale, RagioneSociale2,Citta, Provincia, Telefono, Mail della Tabella [tb_clienti].

    Poi nella stessa maschera ho delle caselle di testo che mi servono per effettuare filtrazione dei risultati. filtro_codice,filtro_rag, filtro_città, ecc...

    Quello che voglio è fare una query [QueryClientiFiltrata] che venga caricata nella casella di riepilogo dopo l'immissione del/dei valore/i in una delle caselle di testo. la query [QueryClientiFiltrata] è quella di cui ho postato il codice SQL sopra.
  • Re: Problemi su query e casella di riepilogo

    Continuo a non capire lo scopo della query...tuttavia, per filtrare i tuoi dati Clienti, ti consiglio il "filtro in base a maschera": leggi la guida in linea per capire di cosa si tratta.
  • Re: Problemi su query e casella di riepilogo

    Lo scopo della query è che cosi facendo posso andare a inserire i dati ottenuti all'interno della casella di riepilogo. con il filtro in base a maschera non lo posso fare ma dovrei crearmi sottomaschere e cambiare completamente la struttura della maschera.

    Ma a prescindere da quale sia il mio scopo tecnicamente sai aiutarmi sulla creazione giusta della query?
  • Re: Problemi su query e casella di riepilogo

    padretursiu ha scritto:


    Ma a prescindere da quale sia il mio scopo tecnicamente sai aiutarmi sulla creazione giusta della query?
    La query che hai esposto presenta tutti quegli AND. Come pretendi di ottenere "molti" record? Tra l'altro il primo criterio punta proprio sul campo ID (chiave primaria). Potrai ottenere sempre e soltanto un solo record da quel solo unico criterio.

    Devo essere sincero? Non ho capito affatto cosa vuoi "filtrare" o ottenere da quella query. Potresti fare un esempio concreto?
  • Re: Problemi su query e casella di riepilogo

    Esempio Tabella Clienti (semplifico per numero di campi e dati sensibili)

    1 ANDREA MANFREDi Fossano CN
    2 MANGIMI 4 TORRI s.r.l. PROVA FOSSANO CN
    2 MANGIMI 4 TORRI s.r.l. FOSSANO CN
    3 AZ.AGRIC. F.LLI MARTINELLI MASATE MI
    4 A.A.PET S.R.L. ROMA RM
    5 AMBULATORIO DR.E.CRESCI SASSARI SS
    6 *AMBUL. ASSOC. VETERINARIO CONEGLIANO TV
    7 *ABBA` GIACOMO & C. CARAGLIO CN
    8 * ABBA CRISTINA PIOSSASCO TO
    9 *ABBA DR.SSA CRISTINA PIOSSASCO FI
    10 ABBA` FRANCESCO CARAGLIO CN

    Quello che voglio è che:

    1- se nel campo di testo [filtro_rag1] della maschera inserisco il valore "ABBA" lui mi restituisca i record 7, 8, 9 e 10
    2- se inserisco in [filtro_rag1] il valore "ABBA" e nel campo [filtro_citta] il valore "PIOSSASCO" lui mi restituisca i record 8 e 9
    3- se inserisco in [filtro_rag1] il valore "ABBA", nel campo [filtro_citta] il valore "PIOSSASCO" e in [filtro_provincia] il valore "FI" lui restituisca il record 9


    Posterei anche delle immagini delle maschere e delle query ma non so come si fa!
  • Re: Problemi su query e casella di riepilogo

    La logica-filtro che hai esposto "Quello che voglio è", rispecchia fedelmente la logica del "filtro in base a maschera". Attento, non vorrei che tu ti facessi ingannare dal nome di questo strumento che non c'entra nulla con la costruzione delle maschere apposta apposta. Ti consiglio di leggere la guida in linea in proposito per capire come funziona questo utilissimo e semplice strumento già fornito da Access. Ridescrivo io per sommi capi:
    1) Tu sei con la tua maschera Clienti aperta.
    2) Clicca in alto sul tasto "filtro in base a maschera"
    3) Vedrai una maschera analoga alla tua, ma dentro le caselle ci scrivi i valori filtro che desideri. Più ce ne metti e più AND entra in azione. Se vuoi filtrare con OR (ad esempio ABBA or MANGIMI), devi cliccare sulla paletta in basso Oppure
    4) Finito di dare i valori da filtrare, clicca in alto sull'icona Applica filtro.

    Tutto qui. Trovi analoga e più dettagliata descrizione sulla guida in linea.

    P.S.: per completezza, il "filtro in base a maschera" è uno strumento che trovi sia quando lavori con la maschera Clienti, sia quando lavori con la tabella Clienti.
  • Re: Problemi su query e casella di riepilogo

    Ciao

    Ti volevo ringraziare per l'aiuto ma con un po di prove e di testardaggine sono riuscito ad implementare la query di ricerca che mi serviva!

    Se a qualcuno dovesse servire posto il codice SQL:
    SELECT tb_clienti.Contatore, tb_clienti.CodiceCliente, tb_clienti.RagioneSociale, tb_clienti.RagioneSociale2, tb_clienti.Città, tb_clienti.Provincia, tb_clienti.Telefono, tb_clienti.email
    FROM tb_clienti
    WHERE (((tb_clienti.CodiceCliente) Like [forms]![elencoclienti]![filtro_codice] & "*" Or (tb_clienti.CodiceCliente) Is Null) AND ((tb_clienti.RagioneSociale) Like "*" & [forms]![elencoclienti]![filtro_rag1] & "*" Or (tb_clienti.RagioneSociale) Is Null) AND ((tb_clienti.RagioneSociale2) Like "*" & [forms]![elencoclienti]![filtro_rag2] & "*" Or (tb_clienti.RagioneSociale2) Is Null) AND ((tb_clienti.Città) Like "*" & [forms]![elencoclienti]![filtro_rag2] & "*" Or (tb_clienti.Città) Is Null) AND ((tb_clienti.Provincia) Like [forms]![elencoclienti]![filtro_prov] & "*" Or (tb_clienti.Provincia) Is Null) AND ((tb_clienti.Telefono) Like "*" & [forms]![elencoclienti]![filtro_tel] & "*" Or (tb_clienti.Telefono) Is Null) AND ((tb_clienti.email) Like "*" & [forms]![elencoclienti]![filtro_mail] & "*" Or (tb_clienti.email) Is Null))
    ORDER BY tb_clienti.CodiceCliente;
    Grazie ancora alla prossima!
Devi accedere o registrarti per scrivere nel forum
10 risposte