Condizioni su record corrente.

di
Anonimizzato15263
il
11 risposte

Condizioni su record corrente.

Salve a tutti, sono nuovo del forum, mi sto appassionando al programma access, ho la versione 2013 e sto imparando molte cose sia sul forum, che leggevo da non registrato, sia in giro per il web. Quindi i miei complimenti a tutti coloro che per passione, costruiscono questi fantastici ambienti ove poter reciprocamente scambiarsi aiuto.

Ora, se posso, passo al problema che ho:
Ho una tabella collegata ad un'altra sotto tabella (uno a molti) per mezzo di una chiave primaria ID.
Nella sottocartella detta "Appuntamenti", ho tanti dati perchè per ogni cliente ho bisogno di fare più operazioni.
Le tabelle sono tramutate in maschere ovviamente, collegate in maniera separata.
Quando lancio la sottomaschera "Appuntamenti" che mi si apre in modalità popup, ho vari record elbaorati.
Ora, se faccio qualunque operazione da codice VBA a da funzione su un qualsiasi record, questa mi si riperquote su tutti i record presenti, perchè?
La formattazione condizionale o condizionata, adesso non ricordo bene, elabora la condizione solo per quel record sulla quale è stata programmata, quindi penso ci sia un codice o una funzione che si comporti tale, elaborando solo il record corrente, che sia il primo, il quinto o il ventesimo, insomma, quello in cui sto lavorando (i record sono incolonnati in maniera tabulare).

Si può fare?
C'è una soluzione?

Grazie a quanti, con pazienza, leggeranno e cercheranno di darmi una mano, anche per arricchire il mio bagaglio d'experience su access e poter essere d'aiuto anch'io in futuro.

11 Risposte

  • Re: Condizioni su record corrente.

    joseph76_2004 ha scritto:


    Ho una tabella collegata ad un'altra sotto tabella (uno a molti) per mezzo di una chiave primaria ID.
    Nella sottocartella detta "Appuntamenti", ho tanti dati perchè per ogni cliente ho bisogno di fare più operazioni.
    Le tabelle sono tramutate in maschere ovviamente, collegate in maniera separata.
    Quando lancio la sottomaschera "Appuntamenti" che mi si apre in modalità popup, ho vari record elaborati.
    Fin qui ho capito che hai le tabelle/maschere Clienti uno-a-molti con Appuntamenti: OK.
    Per come l'ho capita io mi sembra corretto. Spero solo che un Appuntamento non preveda (mai) molti Clienti...o per lo meno non ti interessa contabilizzarlo così, altrimenti la relazione Clienti---Appuntamenti dovrebbe essere molti-a-molti.

    joseph76_2004 ha scritto:


    Ora, se faccio qualunque operazione da codice VBA a da funzione su un qualsiasi record, questa mi si riperquote su tutti i record presenti, perchè?
    Dipende come funziona questo codice VBA, su quale tipo di evento si innesca. Abbiamo bisogno di una descrizione più precisa.

    joseph76_2004 ha scritto:


    La formattazione condizionale o condizionata, adesso non ricordo bene, elabora la condizione solo per quel record sulla quale è stata programmata, quindi penso ci sia un codice o una funzione che si comporti tale, elaborando solo il record corrente, che sia il primo, il quinto o il ventesimo, insomma, quello in cui sto lavorando (i record sono incolonnati in maniera tabulare).
    Che io sappia la formattazione condizionale non fa leva su un codice VBA. Si tratta solo di un gioco di espressioni previste dalla programmazione di Access. Anche qui devi dirci di cosa parla.

    Direi che, oltre alla descrizione dei nomi tabelle, sarebbe interessante conoscere anche i nomi campo.
  • Re: Condizioni su record corrente.

    Ciao Osvaldo, innanzitutto grazie per la risposta e scusami se non sono stato molto preciso, cercherò di farlo adesso.

    Allora, la maschera clienti prevede i classici nome, cognome, telefono e appunti (così mi è stato chiesto di impostarla, senza indirizzi e roba varia).

    Clicco sul pulsante (lavori) che in realtà nasceva come soli appuntamenti, ma poi l'ho modificato, quindi mi si apre la sotto maschera in popup, appunto, "lavori".

    Questa contiene più record tabulari ed i campi sono vari ta cui data appuntamento, ora appuntamento, tipo di lavoro ecc. ecc.. (spero non sia necessario elencarli tutti).

    Ora, c'è anche una casella di controllo all'interno di ogni record, e ( premetto che sono stato a fare prove fino ad ora ) vorrei che se in condizione "true" cioè spuntata, alcuni dei campi in "QUEL RECORD", vengano impostati su disabled.

    Il fatto è che dopo aggiornamento su casella di controllo scrivo:

    If me.caselladicontrollo=true then
    me.campox.enabled = false
    else
    me.campox.enabled = true
    end if

    Ovviamente funziona, ma mi disabilita anche i "campox" degli altri record che, a loro volta hanno una casella di controllo ancora inutilzzata.
    Non riesco proprio a capire come dirgli che deve eseguire quel comando solo al record che sto compilando!

    Sono ancora un neofita, quindi magari è na fesseria!
  • Re: Condizioni su record corrente.

    Io non mi giocherei la carta "dopo aggiornamento". Ho fatto un test con l'evento "Su corrente" della maschera stessa. È vero che appare lo stesso su tutti gli altri record, ma di fatto a te occorre "poter metterci mano" oppure "non poter metterci mano". Ora se la tua maschera è "singola" nemmeno te ne accorgi, quindi direi che funziona. Se la maschera è "continua" vedi questo effetto puramente visivo, ma sostanzialmente hai sempre la possibilità di agire correttamente sul record nel quale ti vai a posizionare.
  • Re: Condizioni su record corrente.

    Ciao Osvaldo, scusami ma non ci siamo...
    Su corrente, non vedo subito il cambiamento, ma devo fare un refresh o ricaricare la pagina...

    Dopo aggiornamento va bene, perchè come seleziono o deseleziono la casella di controllo, ottengo il risultato che voglio però su tutti i record, e non va bene.

    Vorrei allegare un immagine ma mi pare che debba caricarla sul web prima, o sbaglio?

    P.S. Scusatemi, in effetti non vedo la scheda "allegato" nel basso!!!
  • Re: Condizioni su record corrente.

    joseph76_2004 ha scritto:


    Vorrei allegare un immagine ma mi pare che debba caricarla sul web prima, o sbaglio?
    Se non è attiva, sotto, la scheda "invia allegati", non sbagli.
  • Re: Condizioni su record corrente.

    Se invece faccio un'operazione simile, utilizzando la formattazione condizionale, dicendogli che se la casella di controllo è = -1 il campo costo deve essere rosso per esempio, quando spunto la casellina, mi colora solo il campo costo del record che sto compilando!!!
    Eppure ci deve essere una spiegazione, access utilizzerà una formula particolare per agire solo su quel record e non su tutti gli altri a seguire....
  • Re: Condizioni su record corrente.

    Ci avevo pensato anch'io alla formattazione condizionale...mi manca solo l'espressione giusta. Potresti mostrare la finestra dove avresti digitato l'espressione? Sono convinto che, se si lavora sui termini giusti, ci si dovrebbe arrivare...al momento mi sfugge qualcosa...
  • Re: Condizioni su record corrente.

    Ciao Osvaldo, allora ho risolto in questa maniere, cambiando il formato della sottomaschera da "continue" a "singola" e mettendo le condizioni per la casella di controllo, sia su corrente che dopo aggiornamento.
    Adesso quando apro la scheda lavori, visualizzo un record alla volta e non in colonna, quindi scorrendo con l'appostia feccetta i records, se la casella di controllo è spuntata mi blocca il campo, altrimenti lo lascia abilitao in maniera indipendente su ogni record.

    Adesso ho un altro problema, cioè:
    Nell'apposita scheda, vorrei contare i record, che sono diversi per ogni cliente,in modo da scrivere in alto in bella vista una cosa tipo per il signor ROSSI: " LAVORI 1 di X"... Fino a "LAVORI 1 di" riesco a farlo, ma il conteggio dei records in quella maschera non riesco proprio ad ottenerlo, applicando filtri e cambiando da maschere a tabelle... boh?

    per la prima parte scrivo un'espressione del tipo:

    UCASE$(" LAVORI " & [CurrentRecord] & " di " & Dcount("*";"Lavori";filter=[ID])
    ma mi conta sempre tutti i lavori anche degli altri clienti, quando per il signor ROSSI, per esempio, ci sono solo 2 lavori.

    Come si può fare?
    Grazie
  • Re: Condizioni su record corrente.

    joseph76_2004 ha scritto:


    Se invece faccio un'operazione simile, utilizzando la formattazione condizionale, dicendogli che se la casella di controllo è = -1 il campo costo deve essere rosso per esempio, quando spunto la casellina, mi colora solo il campo costo del record che sto compilando!!!
    Ho trovato la soluzione sulla scia di questa tua idea.
    1. Apri la maschera in visualizzazione struttura
    2. Clicca sul campo Costo, poi apri la finestra Formattazione condizionale e imposta così:
    L'espressione è
    [Ribattitura]=Vero
    più sotto, dove vedi tutte le icone di formattazione (G, C, S...), l'ultima a destra mostra un campo rientrato (Attivo/Disattivo), cliccaci sopra
    3. Salva tutto e chiudi la maschera. Tutto questo va bene quando vuoi solo vedere i record, ma qualcosa non funziona quando vai a cliccare dentro il campo Ribattitura, allora bisogna correggere così:
    4. Crea una nuova macro in visualizzazione struttura
    5. Al primo rigo Azione scrivi EseguiComando e sotto Aggiorna
    6. Salva la macro con nome Aggiorna
    7. Ritorna in visualizzazione struttura maschera. Clicca sul campo Ribattitura, poi con il mouse destro scegli Proprietà, scheda Eventi, Dopo aggiornamento: Aggiorna
    8. Salva tutto. Adesso funziona esattamente come avevi richiesto all'inizio.

    Per l'altro quesito, ti suggerisco di aprire un nuovo thread.
  • Re: Condizioni su record corrente.

    Ti ringrazio Osvaldo, ho provato il tuo metodo, probabilmente non l'ho eseguito correttamente, ma non funge. Poi lo proverò altre volte, anche se, può andar bene la visualizzazione a maschera singola anzichè maschere continue.
    Grazie per la pazienza e per il tuo tempo messo a disposizione per aiutarmi, questo Thread penso si possa anche chiudere, grazie a tutti.

    PS.: Grazie Osvaldo, ho cercato nel forum ed ho trovato la discussione che mi serviva anche per la somma uno a molti dei lavori!!! è questa:
    https://www.iprogrammatori.it/forum-programmazione/access/contatore-access-relazione-uno-molti-t17835.html

    GRAZIE!!!
  • Re: Condizioni su record corrente.

    joseph76_2004 ha scritto:


    Ti ringrazio Osvaldo, ho provato il tuo metodo, probabilmente non l'ho eseguito correttamente, ma non funge.
    Secondo me, a questo punto devi cancellare tutti i vecchi codici associati ai vecchi eventi che evidentemente intralciano il corretto funzionamento della procedura che ti ho indicato.
Devi accedere o registrarti per scrivere nel forum
11 risposte