In listino nascondere 31/12/9999 in fine validità

di il
11 risposte

In listino nascondere 31/12/9999 in fine validità

Buon sabato a tutti
Vorrei che in una maschera continua che mi mostra un listino con storico dei periodi di validità se la data di fine validità è 31/12/9999 (quindi prezzo attuale) il campo risultasse vuoto e non con il dato 31/12/9999.
ovviamente mi andrebbe bene anche cambiare da vba il colore del testo per non farlo vedere
Il problema è che non riesco a intercettare l'evento...
Ho provato su caricamento e su corrente della form ma mi analizza solo il primo record.
Dopo aggiornamento del campo non lo intercetta neanche, ovviamente.

Ho bisogno di un suggerimento.
grazie

11 Risposte

  • Re: In listino nascondere 31/12/9999 in fine validità

    Mi chiedo perché l'hai valorizzata se poi non la vuoi vedere...
    Fai il contrario, metti a Null le date di cui sopra... e sei a posto.
  • Re: In listino nascondere 31/12/9999 in fine validità

    Avevo letto che per fare poi eventuali controlli tipo date di validità con between era meglio avere il fine validità valorizzato.
    Non è vero?
  • Re: In listino nascondere 31/12/9999 in fine validità

    Crodino ha scritto:


    Avevo letto che per fare poi eventuali controlli tipo date di validità con between era meglio avere il fine validità valorizzato.
    Su questo non mi esprimo. Se però hai qualche riferimento di quella lettura potresti indicarlo? Solo perché vorrei approfondire anch'io. Non mi esprimo proprio perché "non sono preparato" sull'argomento.

    Crodino ha scritto:


    Vorrei che in una maschera continua che mi mostra un listino con storico dei periodi di validità se la data di fine validità è 31/12/9999 (quindi prezzo attuale) il campo risultasse vuoto e non con il dato 31/12/9999.
    Non vba ma la formattazione condizionale: sul controllo che ti interessa metti la regola in base alla quale se è uguale a 31/12/9999 imposta il carattere a "bianco" (o dello stesso colore dello sfondo del controllo).
  • Re: In listino nascondere 31/12/9999 in fine validità

    Su questo non mi esprimo. Se però hai qualche riferimento di quella lettura potresti indicarlo? Solo perché vorrei approfondire anch'io. Non mi esprimo proprio perché "non sono preparato" sull'argomento
    Mi ero aggiornata leggendo su vari forum per decidere come gestire il listino, prima di iniziare a preparare le tabelle. Ma non saprei dirti di preciso dove. ho letto tantissimo in rete su una valanga di argomenti prima di procedere e ho preso appunti miei senza segnarmi di preciso le fonti (se non quelle per passaggi più complessi), mi spiace.
    Non vba ma la formattazione condizionale: sul controllo che ti interessa metti la regola in base alla quale se è uguale a 31/12/9999 imposta il carattere a "bianco" (o dello stesso colore dello sfondo del controllo).
    Ecco, soluzione semplicissima a cui stupidamente non ho pensato.
    grazie mille
  • Re: In listino nascondere 31/12/9999 in fine validità

    Crodino ha scritto:


    ... mi spiace.
    Ma figurati. Ho una marea di roba che potrei leggere e quello che non ho posso trovarlo. Era pigrizia di ricerca, la mia, della serie: "le cose le affronto solo se me le sbattono sotto il naso" (perché non è il mio lavoro)
  • Re: In listino nascondere 31/12/9999 in fine validità

    Uso anche io la tecnica di Crodino (su Sql Server ma poco cambia). Così nelle Select mi basta un:
     Where Data < GETDATE()
    e non
     Where Data < GETDATE() OR Data IS NULL
    Mera pigrizia... Ma sono fortemente convinto che se il PC può fare una cosa per me, allora la deve fare, se no che l'ho comprato a fare?
    La uso sia sulla validità dei prezzi sia sulle date di consegna dei documenti. Ho settato tutti i report che stampano "Da programmare" al posto di formattare la data. Anche perché se faccio un ORDER BY sulla data, i campi NULL sono sempre i primi e mi impicciano.
  • Re: In listino nascondere 31/12/9999 in fine validità

    Sgrubak, hai assolutamente ragione.

    In ogni caso mi piacerebbe capire quale evento occorre intercettare in vba per intervenire sul campo della maschera continua.
    Per conoscenza... non si sa mai possa servire in futuro.
  • Re: In listino nascondere 31/12/9999 in fine validità

    Crodino ha scritto:


    In ogni caso mi piacerebbe capire quale evento occorre intercettare in vba per intervenire sul campo della maschera continua.
    Per intervenire in che senso? Per ottenere l'effetto "data invisibile" tipo formattazione condizionale?
    Lascia stare, le maschere continue sono delicatissime. Secondo me non si può via codice VBA perché ti trovi a nascondere o mostrare la data di tutti i record. (non sono proprio super esperto di questi aspetti "grafici" ma lo dico con un grado di affidabilità dell'80%)
  • Re: In listino nascondere 31/12/9999 in fine validità

    La domanda partiva da un aspetto grafico e l'ho risolto in effetti con la formattazione condizionale.
    Mi chiedevo comunque come mai non riuscivo a intercettare l'evento ma credo che il tuo
    Lascia stare, le maschere continue sono delicatissime
    sia la risposta.

    grazie
  • Re: In listino nascondere 31/12/9999 in fine validità

    Crodino ha scritto:


    La domanda partiva da un aspetto grafico e l'ho risolto in effetti con la formattazione condizionale.
    Vediamo allora di esprimere qualche concetto che anch'io ho appreso dai forum.
    La maschera continua è bella perché fa vedere tanti record contemporaneamente... "wow, allora posso fare questo su questo record, quest'altro sull'altro record"... piano! C'è sostanzialmente "un solo record" sul quale puoi agire: quello corrente e l'evento sul quale solitamente si scrive codice vba della maschera è l'evento Current. Gli altri li vedi ma sono "un'immagine statica" (le virgolette di cui di solito abuso questa volta servono davvero, non prendere quel concetto letteralmente).
    Quanti controlli hai nella maschera per visualizzare la data? uno, non n (dove n è il numero totale dei record visualizzati), quindi se modifichi la caratteristiche grafiche di quell'unico controllo le conseguenze si ripercuotono su tutti quelli che vedi, precedenti e successivi. Ecco che "non esiste" l'evento sul quale fare quella cosa. Sfrutta quanto più possibile gli automatismi grafici di Access a questo riguardo. E' ovvio che questa non è una spiegazione esaustiva perché:
    1) non conosco tutto, anzi!
    2)ci sono sempre mille dettagli che possono costituire l'eccezione e per ognuno di questi vale il punto 1)
    Ecco una spiegazione un po' più approfondita ma lungi dall'essere "bibbia del VBA e di Access"

    (Per il resto c'è @Alex)
  • Re: In listino nascondere 31/12/9999 in fine validità

    1) non conosco tutto, anzi!
    Non conoscerai tutti, ma certamente più di me... La tua spiegazione era chiarissima comunque.
Devi accedere o registrarti per scrivere nel forum
11 risposte