Problema con filtro date, "Valore predefinito" e "Valido Se"

di il
10 risposte

Problema con filtro date, "Valore predefinito" e "Valido Se"

Salve a tutti.

Ho una maschera di tipo continue  (mask1) che contiene una serie di dati provenienti da una tabella (tbl_interventi)

Nella mask1 ho inserito due txt_box (txt_inizio e txt_fine) che filtrano le date in cui sono stati effettuati determinati interventi.

Nella mask1 si possono modificare e aggiungere interventi e ho fatto in modo che la data d'intervento che si inserisce sia obbligatoriamente compresa tra i valori presenti nelle txtbox txt_inizio e txt_fine.

Fino a questo punto ci sono riuscito inserendo nel campo “Valido Se” della txtbox della data da inserire questo codice:

BETWEEN [txt_inizio] AND [txt_fine]

Il problema nasce quando provo ad impostare un “Valore Predefinito” nelle txt_inizio e txt_fine,

Infatti, non so per quale motivo, se inserisco come valore predefinito una qualsiasi data, per esempio, 01/07/2021, nella mask1 il valore predefinito nelle txt_inizio e fine risulta essere 30/12/1899.

Ho cercato online le possibili cause di questo problema ma non riesco a capire dove sbaglio nel mio caso.

Ho provato ad inserire anche il valore predefinito in questo modo: =#01/07/2021#, ma se agisco così, non mi funziona il filtro e per di più non funziona nemmeno il valido se della txt_box data.

Grazie a tutti, probabilmente e una sciocchezza ma sono veramente un principiante.

10 Risposte

  • Re: Problema con filtro date, "Valore predefinito" e "Valido Se"

    …mmhhh…rischio di spararla grossa…provo lo stesso. Mi pare di capire che txt_inizio e txt_fine sono textbox aggiunte e non associate ad alcun campo, per tanto non hanno un formato specifico che tu immagino vorresti fosse di tipo data. 
    Prova: vai alle proprietà Formato delle due txtbox e imposta “Data in cifre”.

  • Re: Problema con filtro date, "Valore predefinito" e "Valido Se"

    Intanto quello che metti nella proprietà VALORE PREDEDINITO non conta nulla…. Se il record è salvato non ha alcuna influenza quel valore, che invece viene sparato nella TextBox SOLO su NEWRECORD e solo se salvato viene memorizzato.

    Quindi la data utile non è quella di DEFAULTVALUE ma di VALUE proprietà omettibile essendo quella di default tant'è che nel tuo codice fai riferimento solo al nome della textbox non alla sua proprietà.

    Quindi sgomberato il problema da DEFAULTVALUE, il problema è del VALORE che deve avere l'accezione anglosassone.

    Verifica se quanto inserito come default value è veramente quanto poi valorizzato…

    Purtroppo nonnusando il codice gare debug è complicato… devi ad esempio stampare in finestra immediata con Debug.Print la risoluzione del VALIDATIONRULE per capire cosa succede.

    Temo che le tue date inserire in qualche punto non vengano interpretate correttamente.

    e
  • Re: Problema con filtro date, "Valore predefinito" e "Valido Se"

    23/12/2022 - OsvaldoLaviosa ha scritto:


    …mmhhh…rischio di spararla grossa…provo lo stesso. Mi pare di capire che txt_inizio e txt_fine sono textbox aggiunte e non associate ad alcun campo, per tanto non hanno un formato specifico che tu immagino vorresti fosse di tipo data. 
    Prova: vai alle proprietà Formato delle due txtbox e imposta “Data in cifre”.

    L'avevo già provato, ma non funziona comunque. Grazie lo stesso intanto.

  • Re: Problema con filtro date, "Valore predefinito" e "Valido Se"

    Forse se linchi un file di esempio, con un minimo di dati e non sensibili, si riesce a capire meglio dove è il problema.

  • Re: Problema con filtro date, "Valore predefinito" e "Valido Se"

    GM2,
    come ti è stato già indicato, per le date devi impiegare il formato anglosassone (mese, giorno, anno) quindi nel tuo caso se deve essere maggiore di 01/07/2021 va indicato con:

    ValidoSe >#07/01/2021#
  • Re: Problema con filtro date, "Valore predefinito" e "Valido Se"

    Ciao a tutti, grazie per la disponibilità.

    Ho provato a cambiare le date di default delle txt_inizio e txt_fine con accezione anglosassone e cioè ponendo prima il mese, poi il giorno e poi l'anno, ma ne scrivo per esempio=#05/31/2021#, il sistema me lo ricambia automaticamente in =#31/05/2022#

    Se invece, scrivo come valore predefinito la data fra i cancelletti senza accezione anglosassone e nel valido se della txt_data non utilizzo la formula con il BETWEEN, ma uso soltanto un valore per esempio txt_data ValidoSe: =[txt_inizio]  allora il sistema funziona.

    Quindi secondo me, ci dev'essere un problema con il BETWEEN, c'è un modo simile di scrivere il ValidoSe della txt_data senza BETWEEN?

    Ma forse mi sbaglio io, perciò ora, come mi suggeriva Stifone, allego un file di esempio:

    https://drive.google.com/file/d/10CvAKnoqHCM6iIlBiuiX6582cdBrDMpb/view?usp=share_link

    Ora provo anche a Debuggare se riesco, come mi ha consigliato Alex.

    Grazie a tutti ancora.

  • Re: Problema con filtro date, "Valore predefinito" e "Valido Se"

    Qui trovi l'esempio, rimane comunque difficile gestire la realizzazione di un programma con le tue conoscenze in quanto ci sono troppe carenze che sarebbe lungo elencare.

  • Re: Problema con filtro date, "Valore predefinito" e "Valido Se"

    Grazie mille Stifone. 

    Ci sono tantissime cose nel file che hai allegato da cui posso imparare molte cose. Interessantissima e utilissima il pulsante rimuovi filtri che compare solo quando si ha inserito qualche valore di filtro. Inoltre un'altra cosa utile che nemmeno pensavo si potesse fare è l'auto-compilazione della combobox cliente quando si seleziona un piazzale. E chissà quali altre cose non ho ancora notato. Grazie mille davvero.

    Rimane però ancora la mia domanda iniziale. Alla fine, non c'è modo di impostare nelle txt_inizio e txt_fine un valore predefinito da cui dipenda il “ValidoSe” della txtbox_data?

    Grazie ancora a tutti.

    Spero di riuscire davvero a migliorare in MS access.

  • Re: Problema con filtro date, "Valore predefinito" e "Valido Se"

    Non hai gurdato bene perchè nell'evento 

    Private Sub Form_BeforeUpdate(Cancel As Integer)

    trovi il controllo sulle date come vorresti fare tu e anche di più, ovvero:

    • se hai inserito la sola data di Inizio verifica che non sia inferiore a essa
    • se hai inserito la sola data di Fine verifica che non sia successiva a essa
    • se hai inserito entrambe verifica entrambe le condizioni sopra
    • se non hai inserito entrambe verifica comunque che la data non sia successiva a quella Odierna

    non ha senso il l'impostazione della proprietà Valido se per rendere il controllo dinamico inoltre dovresti ulteriormente normalizzare, vedi Citta, Cap, Provincia, Regione, Stato, Marca.

  • Re: Problema con filtro date, "Valore predefinito" e "Valido Se"

    Grazie Stifone. Scusami non avevo compreso il significato del tuo codice vba, Grazie mille per la pazienza e disponibilità.

Devi accedere o registrarti per scrivere nel forum
10 risposte