Inserire valore campo query in maschera

di il
9 risposte

Inserire valore campo query in maschera

Ciao a tutti, sono novizio di Access e sto remando per tentare di fare questo.
In una maschera vorrei visualizzare in una casella di testo il risultato di una query e in una altra casella di testo il risultato di un altra query per poi eseguire delle operazioni matematiche.
Non riesco a portare nelle caselle di testo i risultati delle query.
Chi mi aiuta ? Lavoro con Access 2003
Grazie in anticipo

9 Risposte

  • Re: Inserire valore campo query in maschera

    Benvenuto nel forum.
    Potresti fornire i nomi propri di tabelle, query, maschere, controlli?
    Quali calcoli esegui nelle query?
  • Re: Inserire valore campo query in maschera

    Ciao, nella form "Statistica" nella casella di testo "stat_aperti" vorrei vedere il valore del campo "aperti" della query "Conta_aperti".
    E nella stessa form nella casella di testo "stat_totali" il valore del campo "chiusi" della query "Conta_chiusi"
    Le due query fanno una Select Count di tutti i record delle rispettive tabelle "Casi_Totali" e "Casi_aperti" e funzionano perchè il campo "aperti" della query "conta_aperti" nell'ultima prova contiene il valore di 6778, mentre il campo "chiusi" in "Conta_chiusi" contiene 69871
    Grazie
  • Re: Inserire valore campo query in maschera

    redkaa ha scritto:


    Ciao, nella form "Statistica" nella casella di testo "stat_aperti" vorrei vedere il valore del campo "aperti" della query "Conta_aperti".
    E nella stessa form nella casella di testo "stat_totali" il valore del campo "chiusi" della query "Conta_chiusi"
    ...
    Da come hai illustrato al situazione si tratta di una maschera non associata. Non puoi prendere i campi della query come si farebbe con una maschera associata. Hai alcune strade percorribili:
    1) usare DLookup come origine dati delle due caselle di testo, per prendere quei due campi dalle query;
    2) usare DCount come origine dati delle due caselle di testo, per fare le stesse operazioni che fanno le due query;
    3) usare VBA ed aprire i recordset corrispondenti alle due query (e qualche altro passaggio che è inutile indicare qui) e valorizzare le due caselle di testo.

    Probabilmente per le tua attuali conoscenze è più facile l'uso di DLooukup: DLookup Function
  • Re: Inserire valore campo query in maschera

    Ciao, come da tuo consiglio ho provato ad usare DLookup come origine dati delle due caselle di testo, per prendere quei due campi dalle query. Ora la situazione è questa:
    Nella maschera non associata "Statistica" ho le caselle di testo "data_da_statistica" e "data_a_statistica", il pulsante "Conta eventi" e le caselle di testo "stat_aperti" e "stat_chiusi"
    Imposto la data di inizio ricerca in "data_da_statistica" e la data di fine ricerca in "data_a_statistica", pigio "Conta eventi" che lancia una macro che esegue due query "Query conta chiusi" e "query conta aperti" che contano quanti sono i casi chiusi e i casi aperti e memorizzano il risultato nei rispettivi campi "chiusi" e "aperti".
    Nella maschera la casella di testo "stat_chiusi" ha come origine dati =DLookUp("chiusi";"Query conta chiusi") e "stat_aperti" ha =DLookUp("aperti";"Query conta aperti").
    Mi aspetto di vedere nelle caselle di testo lo stesso valore numerico che leggo nei campi delle query e invece leggo zero.
    Chiudo e riapro la maschera o semplicemente passo in visualizza struttura e poi ritorno in visualizza e voilà mi appaiono i dati esatti.
    Anche quando cambio le date e premo "Conta eventi", nella caselle di testo rimangono o dati precedenti e per vedere quelli aggiornati devo chiudere e riaprire o cambiare tipo do visualizzazione.
    Sembra che non senta la modifica delle date. Ho porvato anche a mettere nella macro l'azione Aggiorna Maschera ma non serve. Come faccio ad aggiornare le caselle di testo ?
    Grazie
  • Re: Inserire valore campo query in maschera

    redkaa ha scritto:


    ...
    Nella maschera la casella di testo "stat_chiusi" ha come origine dati =DLookUp("chiusi";"Query conta chiusi") e "stat_aperti" ha =DLookUp("aperti";"Query conta aperti").
    ...
    Pubblica la SQL delle due query.
    Sai usare VBA?
  • Re: Inserire valore campo query in maschera

    Ciao, le query funzionano che vedo il risultato giusto nei rispettivi campi, quello che non capisco è che non si aggiornano immediatamente i campi nella maschera

    Query:
    SELECT Count([casi aperti all].CODICE_FISCALE) AS aperti
    FROM [casi aperti all]
    WHERE ((([casi aperti all].DATA_PRESA_IN_CARICO)>Forms![Menù statistica ]!data_da_statistica And ([casi aperti all].DATA_PRESA_IN_CARICO)<Forms![Menù statistica ]!data_a_statistica));


    SELECT Count([All Query].CODICE_FISCALE) AS chiusi
    FROM [All Query]
    WHERE ((([All Query].DATA_PRESA_IN_CARICO)>Forms![Menù statistica ]!data_da_statistica And ([All Query].DATA_PRESA_IN_CARICO)<Forms![Menù statistica ]!data_a_statistica));

    il mio VBA è a livello basso
  • Re: Inserire valore campo query in maschera

    Io non riesco a seguire il discorso. Prima volevo ignorare il problema, poi ci ripenso...boh...mah!!!
    Io ho la sensazione che ci sia qualcosa di errato a livello di GESTIONE di tutta la "mappazza". Il titolo del thread ha (per me) qualcosa di contraddittorio o assurdo riguardo la logica generale dell'uso dei database. Un "valore di query" è lì. Tu lo vedi e basta. Una maschera potrebbe anche visualizzarlo...ma non vedo perchè quel valore deve essere poi "inserito".
    Fai molta attenzione all'uso sfrenato di calcoli e ricalcoli da prendere/memorizzare e "reinseire"...
    Chiedo scusa se sono andato fuori tema.
  • Re: Inserire valore campo query in maschera

    Ho risolto trovando un caso simile su Internet.
    Ho usato il Do.Cmd.Requery così

    Private Sub data_a_statistica_Enter()
    DoCmd.Requery "Stat_totali"
    DoCmd.Requery "Stat_aperti"
    End Sub

    Private Sub data_a_statistica_Exit(Cancel As Integer)
    DoCmd.Requery "Stat_totali"
    DoCmd.Requery "Stat_aperti"
    End Sub

    Private Sub data_da_statistica_Enter()
    DoCmd.Requery "Stat_totali"
    DoCmd.Requery "Stat_aperti"
    End Sub

    Private Sub data_da_statistica_Exit(Cancel As Integer)
    DoCmd.Requery "Stat_totali"
    DoCmd.Requery "Stat_aperti"
    End Sub

    così elabora immediatamente al momento dell'input delle date"data_da_statistica" e "data_a_statistica" senza cliccare sul pulsante "Conta eventi"
  • Re: Inserire valore campo query in maschera

    redkaa ha scritto:


    ... quello che non capisco è che non si aggiornano immediatamente i campi nella maschera
    ...
    il mio VBA è a livello basso
    Con VBA anche a livelli bassi (dipende da cosa intende uno come "basso") riusciresti a gestire tutto molto più facilmente. Paradossale, quando uno crede che sia più semplice con le macro.
    Tutta la procedura è un po' macchinosa e rivedibile. Di macro non so niente, se qualche nozione trovata al volo su internet. Prova con una macro "RieseguiQuery" per i due controlli da "aggiornare". L'ho intuito da qui
    Ecco, sono stato talmente tanto in edit che nel frattempo hai risolto da solo. Almeno l'avevo intuita giusta.
Devi accedere o registrarti per scrivere nel forum
9 risposte