Date e formule

di il
27 risposte

Date e formule

Salve, devo dare in noleggio un'apparecchiatura e in uno stesso record devo inserire un campo con giorno, data ed ora della consegna e in un altro campo giorno, data ed ora in cui viene restituita. Sul campo della data di consegna non ci sono problemi, metto =now() ma sulla data della restituzione come posso fare senza che l'operatore si metta ad inserire manualmente giorno, mese, ora, minuti ecc. Secondo problema. Ho un campo calcolato. Ho provato a mettere la formula sia nella tabella, poi ho provato a metterla nel campo della maschera. Ma non mi succede come in excel che spostandomi da una cella all'altra ho il risultato immediato ma devo uscire dalla maschera. C'è un modo per cui sposandosi da un campo all'altro mi esce fuori subito il risultato? Grazie Siete davvero gentili.

27 Risposte

  • Re: Date e formule

    Problema 1.
    Io penserei al seguente codice:
    Me![Data restituzione] = Now()
    il problema però è "a quale evento lo associ"? Se l'evento si innesca inavvertitamente un'altra volta avresti un aggiornamento Data/Ora continuo. Se ad esempio lo associ al clic di un pulsante, la prima volta va bene, ma poi come si fa a evitare di ricliccarci sopra? Occorrerebbe prima dell'impostazione, l'aprirsi di una piccola maschera dialogo in cui viene posta la domanda "Devi impostare Data/Ora attuale? e due pulsanti Sì e No.

    Problema 2.
    Un campo calcolato in tabella te lo sconsiglio.
    Se hai un campo calcolato in maschera, esso dovrebbe fare il suo dovere.
    Excel e Access hanno due logiche completamente diverse.
    Cerca di descrivere il problema dettagliatamente.
  • Re: Date e formule

    Ciao. Allora problema numero 1.
    La tua idea è corretta. Basterebbe un pulsante con una macro o due pulsanti (non so) per mettere la data nei due campi. Ma non sono in grado di farlo. Provo a fare delle ricerche ma non ho le basi di programmazione per poter fare questo.
    Problema n 2
    Devo calcolare il BMI su una maschera. Quindi ho il campo Peso (P), il campo altezza (hh), (tra l'altro ho scoperto che non si può scrivere in access altezza poichè viene tradotto automaticamente in inglese, è una parola riservata) ed appunto il campo BMI =peso/(hh*hh):ho provato in tutti i modi ma solo quando esco dalla maschera viene fatto il calcolo. Almeno che non metta un pulsante di aggiornamento del record ma diventa farraginoso. Non esiste il modo che spostandomi nella casella successiva al BMI, compaia automaticamente il risultato? Ho fatto anche una query ma non so come utilizzarla nella maschera.Grazie
  • Re: Date e formule

    Problema 1: l'impostazione sul campo [Data consegna]
    Valore predefinito: =Now()
    va bene così. Non ha senso far lavorare un codice o una macro inutilmente su 2 campi piuttosto che su uno solo.

    Problema 2.
    Devi descrivere esattamente i [Nome controllo] associati ai campi che servono per i calcoli. Io penso che se scrivi [altezza] fra parentesi quadre, Access dovrebbe interpretarlo come campo e non come parola riservata. Praticamente se hai
    [Nome controllo 1]
    [Nome controllo 2]
    [Nome controllo calcolato] con dentro la formula:
    = [Nome controllo 1]/[Nome controllo 2]
    dovrebbe funzionare.
  • Re: Date e formule

    Si, ma se metto le parentesi quadre come faccio poi a scrivere la formula BMI = PP/(hh al quadrato)?
    Poi devo chiamare i campi con "Nome controllo" anche nelle tabelle?
  • Re: Date e formule

    Potresti descrivere tutti i nomi campo? Non riesco ad avere un quadro completo della situazione.
  • Re: Date e formule

    I campi che ci intessano sono 3: P, hh, e BMI (indice di massa corporea). La formula è BMI=P/(hh*hh)
    I campi nelle tabelle e nelle maschere le ho chiamate nello stesso modo.
  • Re: Date e formule

    Nella maschera, dentro il campo BMI, scrivi:
    = [P]/([hh]^2)
  • Re: Date e formule

    E' quello che avevo già fatto ma purtroppo funziona solo quando esco e rientro nella maschera ed a quel punto mi dà il risultato.
  • Re: Date e formule

    L'ho risolta così: ho messo un pulsante "calcola BMI" che si richiama ad una macro"Aggiorna record" E' brutta come soluzione ma non ne vedo altre. Poi per quanto riguarda il primo problema ho pensato ad un pulsante con si richiami ad una query che inserisca in un "data_consegna" la data e l'ora corrente. Creo la query in sql ma non funziona
    SELECT Holter.Data_Rimozione
    FROM Holter
    WHERE (((Holter.Data_Rimozione)="Insert Date"));
    Dove sbaglio?
  • Re: Date e formule

    ddxrapper ha scritto:


    L'ho risolta così: ho messo un pulsante "calcola BMI" che si richiama ad una macro"Aggiorna record" E' brutta come soluzione ma non ne vedo altre.
    Evidentemente ha bisogno di quella istruzione per aggiornarsi. Piuttosto del clic di pulsante, potresti sfruttare un altro evento. Io penserei a Dopo aggiornamento sul campo [hh], oppure Su uscita, oppure Su attivazione al campo [BMI]

    ddxrapper ha scritto:


    Poi per quanto riguarda il primo problema ho pensato ad un pulsante con si richiami ad una query che inserisca in un "data_consegna" la data e l'ora corrente. Creo la query in sql ma non funziona
    SELECT Holter.Data_Rimozione
    FROM Holter
    WHERE (((Holter.Data_Rimozione)="Insert Date"));
    Dove sbaglio?
    Non capisco e non ha senso. Il mio suggerimento era molto più semplice. Resta sempre il problema che se riclicchi sul pulsante il giorno dopo (volontariamente o involontariamente), sballi tutto...
    ...aspetta aspetta...
    Se condizionassi il clic del pulsante che deve fare il suo dovere soltanto quando il campo DataConsegna Is Null? Sapresti farlo con una macro?
  • Re: Date e formule

    Il problema numero uno è complicato per me. La tua soluzione è ottima. Cioè mi sposto con il cursore o la tabulazione si aggiorna il record. Ma non conosco questa macro.
    Il problema n. 2 è più complicato ancora. Nel senso. Ti spiego esplicitamente e così ci capiamo. Si tratta di un noleggio di un Holter pressorio. Viene il signore o signora e devo segnare hh, peso e data ed ora di consegna. Prima problema che ho risolta inserendo la data automaticamente. Poi il signore o la signora viene il giorno dopo e restituisce l'Holter. Devo segnare con un pulsante o qualcos'altro la data ed il giorno di consegna senza cancellare la data e l'ora in cui l'hanno ricevuta. Un enigma.
  • Re: Date e formule

    ddxrapper ha scritto:


    Il problema numero uno è complicato per me. La tua soluzione è ottima. Cioè mi sposto con il cursore o la tabulazione si aggiorna il record. Ma non conosco questa macro.
    Non devi fare nulla di speciale. La macro "Aggiorna record" hai detto che ce l'hai già associata al clic di Pulsante. Devi soltanto andare in una di quelle proprietà evento che ti ho detto prima e associare la macro "Aggiorna record" (che già hai).

    Problema 2.
    Hai fatto bene a mettere su [Data consegna], Valore predefinito: =Now(). Lascialo così.
    Ora prova il seguente codice [Routine evento] da associare al clic di Pulsante:
    Private Sub NomePulsante_Click()
    If Me![Data restituzione] Is Null Then
    Me![Data restituzione] = Now()
    End Sub
    Se quel codice non funziona (non sono tanto bravo in VBA), organizza la seguente macro:
    1. Apri una macro in visualizzazione struttura e apri la colonna Condizione
    2. Al primo rigo Condizione, scrivi:
    [Maschere]![NomeTuaMaschera]![Data restituzione] Is Null
    3. Accanto, alla colonna Azione, scrivi:
    ImpostaValore (se non lo trovi subito, clicca in alto sul tasto Altre azioni)
    Elemento: [Maschere]![NomeTuaMaschera]![Data restituzione]
    Espressione: =Now()
    4. Salva la macro con nome X
    5. Ritorna in visualizzazione struttura TuaMaschera e vai alle proprietà del Pulsante, scheda Eventi, Su clic: X

    P.S.: Non ricordo bene, se la macro non dovesse funzionare, probabilmente togli = davanti a Now()
  • Re: Date e formule

    Mannaggia, scusami se sono petulante ma il codice non funzionami da "mancanza end if" che ho aggiunto ma che non funziona e per quanto riguarda il secondo metodo non riesco nemmeno ad iniziare. Nelle macro guidate, senza "if", per vedere di fare passo per passo, dove trovo il semplice comando inserisci la data nel campo cercato? Con una query sarebbe più facile?
  • Re: Date e formule

    Ho fatto un test e neanche io riesco a trovare il codice VBA corretto.
    Con la macro funziona.
    Nella colonna Condizione non devi mettere alcun If, ma l'espressione che ti ho scritto. La parola [Maschere] è obbligatorio
    tutto il resto dovresti capirlo da solo.
    Espressione: Now()
    funziona senza = davanti.
Devi accedere o registrarti per scrivere nel forum
27 risposte