Inserire valore campo query in maschera

di Anonimizzato21326 il
9 risposte
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

  • Benvenuto nel forum.
    Potresti fornire i nomi propri di tabelle, query, maschere, controlli?
    Quali calcoli esegui nelle query?
  • 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
  • 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
  • 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
  • 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?
  • 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
  • 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.
  • 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"
  • 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