Domanda

Ho una tabella in MS Access 2007 con 4 campi.

  • Costo del lavoro
  • Ore di lavoro
  • Iva
  • Totale

Come posso moltiplicare "Ore di lavoro" per "Costo del lavoro" aggiungere "IVA" e visualizzare la risposta in "Totale"

Dove metterei le formule ?, in un modulo o query o tabella?

Mille grazie per l'aiuto

Scott

È stato utile?

Soluzione

Esiste anche il modo dummies (cioè non SQL) di farlo: Innanzitutto elimina la colonna totale dalla tabella e, per questo esercizio, fai finta che il nome della tabella sia "Lavoro" .

Ora crea una nuova query e visualizzala in vista di progettazione, aggiungi tutti i campi dalla tabella Lavoro (in modo da poter verificare che tutto funzioni), seleziona un campo vuoto, fai clic con il pulsante destro del mouse e seleziona " Crea " dall'elenco a discesa. Ora dovresti avere una finestra di Expression Builder.

Digita il nome per il tuo campo calcolato, ad es. totale, seguilo con i due punti ": " quindi seleziona i nomi dei campi che desideri aggiungere da Tabelle in basso a sinistra nella finestra di Expression Builder e fai doppio clic su ciascuno di essi. Ciascun campo verrà visualizzato nel generatore di espressioni in seguito a " Total: " ;. Ora sostituisci ogni " & # 171; Expr & # 187; " con un " + " ;. Dovresti vederlo nel generatore di espressioni: " labourTotale: [lavoro]! [Costo del lavoro] + [lavoro]! [Orario di lavoro] + [lavoro]! [Iva] " ;. Fai clic su OK ed esegui la query: se tutto va bene, la colonna totale visualizzerà i risultati.

Altri suggerimenti

Non è necessario il " Totale " colonna con tutta probabilità.

Le tue query o rapporti probabilmente assomigliano a questo:

SELECT [Total] = [Labour Cost] * [Labour Hours] + [VAT]

È possibile utilizzare lo stesso tipo di formula nei controlli nei moduli o nei report.

Se devi davvero aggiornare i dati nella colonna Totale:

UPDATE YourTableName SET [Total] = [Labour Hours] * [Labour Cost] + [VAT]

Un MOLTO approccio migliore, tuttavia, sarebbe rimuovere completamente la colonna Totale dalla tabella e creare una query:

SELECT [Labour Cost], 
       [Labour Hours], 
       [VAT], 
       [Labour Hours] * [Labour Cost] + [VAT] AS [Total]
FROM YourTableName

Il motivo per cui questo approccio è preferito è perché ti impedisce di inserire accidentalmente informazioni errate nella colonna Totale. In generale, i dati possono essere facilmente danneggiati se non stai attento e può essere un vero dolore (se non impossibile) da risolvere. Ti consiglierei Google "quotazione del database" e leggere un po 'su di esso - questo ti aiuterà tremendamente.

  1. per quanto riguarda l'IVA%, spero di non dichiarare l'ovvio, ma dovresti inserire un decimale, ad es. .175 è il 17,5%

  2. Non puoi semplicemente aggiungere una percentuale, deve essere moltiplicata per qualcosa. E devi includere il 100% dell'importo originale. Quindi, se si desidera aggiungere il 17,5%, è necessario moltiplicare per 1,175. Quindi, supponendo che: i) desideri includere automaticamente il 100% (ovvero dovrai solo digitare .175) e che ii) l'IVA dovrebbe essere aggiunta all'intero importo, e che iii) di " specificare " vuoi dire che vuoi che ti venga richiesta l'IVA ogni volta che viene eseguita la query; Quindi la tua formula dovrebbe essere:

Totale: ([Spese generali]! [Costo del lavoro] * [Spese generali]! [Ore di lavoro] + [Costo materiale]) * (1+ [inserire l'IVA come importo decimale?])

Crea una nuova query.

aggiungi la tua tabella

aggiungi i tuoi tre campi non totali alla query

in un nuovo tipo di campo:

total: [VAT] + [Labour Hours] * [Labour Cost]

esegui query

Scott ha detto:

  

praticamente voglio solo fare il   calcoli in modo che io possa visualizzare il   totale sullo schermo e in un rapporto.

Come alcuni hanno suggerito, è possibile eseguire il calcolo in una query salvata e utilizzarlo come origine record sia per il report che per il modulo.

Ma ti suggerisco di non farlo. Ti suggerirei di fare i calcoli all'ultimo momento possibile. Per un rapporto, ciò significherebbe che avresti un controllo sul rapporto che ha come fonte di controllo il calcolo che desideri eseguire. In questo modo, viene eseguito solo per le righe stampate nel punto in cui è formattata la pagina.

Suggerirei la stessa cosa per un modulo tranne se desideri ordinare o filtrare il campo totale. I campi calcolati sui moduli non possono essere utilizzati per l'ordinamento / filtro e possono essere fastidiosi per quanto lentamente vengono visualizzati in alcune situazioni. In tal caso, ignoreresti i miei consigli per evitare di inserirli nella query / recordsource, perché hai una buona ragione per calcolarlo per tutte le righe prima della visualizzazione effettiva dei dati.

Ma in generale, non effettuare calcoli in un'origine record su cui non si intende operare come gruppo (filtro, ordinamento, raggruppamento).

Puoi inserirlo come campo calcolato, nella query o nel modulo. Ovunque abbia senso, è semplice e ha il giusto livello di riusabilità. Se il calcolo è specifico di una forma o vista dei dati, fallo lì o nella query.

In questo caso, puoi prevedere che il totale sarà un valore spesso usato e logicamente applicato alla riga, quindi renderlo un campo calcolato è appropriato. I campi calcolati hanno il vantaggio che (nella maggior parte dei sistemi, non sono sicuro di MSAccess), possono essere impostati per ricalcolare solo quando i dati cambiano.

Se stavi lavorando, indica il rapporto tra quantità e tempi di consegna, sarebbe qualcosa di più che inserirò nella query per il modulo / report specifico in quanto non verrà mai riutilizzato e potrebbe essere più calcolo pesante.

Di solito sceglierei di fare un calcolo nella query, a meno che non si basi sul risultato di un altro calcolo, quindi farlo nella query potrebbe diventare un po 'confuso, quindi fallo nel modulo / codice.

Quindi in sintesi, ove appropriato per quel calcolo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top