Query in Access: selezionare dati diversi solo se presenti nella stessa data.

Anonimo
2014-07-09T12:53:44+00:00

Un saluto a tutti: vi espongo il mio problema.

In struttura Query, nel campo "Importi" ho inserito:

Criteri: [Inserisci il Primo importo]

Oppure: [Inserisci Secondo importo]

Avviata la selezione tutto bene: mi rende tutti i record contenenti i due importi inseriti nel campo "Importi".

Ho un campo data.

Quello che vorrei è che mi mostrasse solo i record dei due importi, se diversi e solo se spesi nella stessa data: esempio.

1 - mercoledì 27 agosto 2009 - ferro da stiro - 700

2 - mercoledì 27 agosto 2009 - letto singolo - 1400

perciò mai

1 - mercoledì 27 agosto 2009 - ferro da stiro - 700

2 - mercoledì 27 agosto 2009 - letto singolo - 700

Grazie in anticipo per un eventuale aiuto.

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

8 risposte

Ordina per: Più utili
  1. Anonimo
    2014-07-18T09:21:57+00:00

    Gentilissimo Mimmo,

    scusa il ritardo ma ero piuttosto preso.

    Dunque, mi sono avventurato in SQL seguendo le tue istruzioni.

    Mi sono subito bloccato alla prima, in quanto per la query seguente:

    SELECT Tb1.Imp, Tb1.Data

    FROM Tb1

    WHERE ((([Inserisci il Primo importo])<>[Inserisci Secondo importo]))

    GROUP BY Tb1.Imp, Tb1.Data

    HAVING (((Tb1.Imp)=[Inserisci il Primo importo] Or (Tb1.Imp]=[Inserisci Secondo importo]));

    Mi dice che vi è un errore causa un operatore mancante.

    Mi sono assicurato di sostituire in modo corretto "Tb1" con il nome della mia tabella contenente i dati ed il relativo nome campo corretto.

    Come ti avevo preannunciato, in VBA ne verrei a capo ma in SQL mi trovo in forti difficoltà.

    Hai per caso novità per una soluzione in ambito VBA con una query... "normale"?

    Grazie ancora.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2014-07-09T19:49:44+00:00

    Ciao,

    le due query che ti ho postato se vuoi le puoi incollare in nuove query.

    Scusami se sono prolisso non conosco il tuo livello di conoscenze Access. 

    Crea una nuova query vuota, in basso a destra seleziona l'icona Sql ed incolla la prima query salvandola con il nome Query1. A questo punto se passi in visualizzazione struttura vedrai forse quello che tu intendi.

    Crea una seconda query vuota e spostandoti nella vista Sql incolla la seconda query che ti ho postato (come vedi nella seconda query faccio riferimento alla prima con il nome Query1).

    Domani, appena trovo altro tempo, provo a sviluppare qualcosa in Vba. Fermo restando che una query è preferibile al codice visual basic perchè più compatta e veloce.

    Ciao Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2014-07-09T19:35:32+00:00

    Gentilissimo Mimmo,

    innanzi tutto grazie per il sollecito suggerimento.

    Non essendo però ancora pratico di SQL (a questo uso mi pare si riferiscano i tuoi suggerimenti), vorrei per ora trovare una soluzione tramite VBA (mi pare siano questi i comandi adottabili nei campi "Criteri:" ed "Oppure:" delle normali query, giusto?).

    Questo in modo di poter poi gestire progredendo, l'uso dei "comandi" VBA e poter apportare più facilmente modifiche ed ampliamenti alle query.

    I tuoi suggerimenti sono attuabili in VBA?

    Grazie!

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2014-07-09T15:22:46+00:00

    Ciao,

    in sostituzione della precedente guarda queste due query in cascata

    SELECT Tb1.Imp, Tb1.Data

    FROM Tb1

    WHERE ((([Inserisci il Primo importo])<>[Inserisci Secondo importo]))

    GROUP BY Tb1.Imp, Tb1.Data

    HAVING (((Tb1.Imp)=[Inserisci il Primo importo] Or (Tb1.Imp]=[Inserisci Secondo importo]));

    SELECT *

    FROM Query1

    WHERE Query1.Data In (SELECT Query1.Data

    FROM Query1

    GROUP BY Query1.Data

    HAVING (((Count(Query1.Imp))>1))); 

    Ciao Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2014-07-09T14:01:47+00:00

    Ciao,

    prova la seguente query (cambiando i nomi):

    SELECT Tb1.Imp, Tb1.Data

    FROM Tb1, Tb1 AS Tb1_1

    WHERE (((Tb1.Imp)<>[tb1_1].[Imp]) AND ((Tb1.Data)=[tb1_1].[Data]))

    Ciao Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento