Creare tabella da risultati query

di il
6 risposte

Creare tabella da risultati query

Buongiorno A tutti, ho un problema:

sto cercando di fare un' applicazione interna per buste paghe, sono arrivato ad un problema.

ho creato diverse query per fare tutti i calcoli (minimo retribuito; straordinario; detrazioni; etc), tutto ok!

Il mio problema questo: dato che questi calcoli nelle query cambio quando devo cambiare dei calcoli (es. cambia il valore dell' addizionale irpef annualmente e quindi se la modifico nella tabbella che ho fatto si cambiano anche quelle precedenti).

Ho pensato di fare una tabella chiamandola "Buste paghe definitive", dove esporto tutti i dati (come valore non come espressione) che ho elaborato con le query ed i vari riferimenti dell' anagrafica e poi da le stampo le buste.

qual'è il modo più semplice?

GRazie

6 Risposte

  • Re: Creare tabella da risultati query

    Diciamo che la logica chiede che la dove vi siano dei Dati Tempo/Dipendenti sia necessario salvare qualche cosa.
    Ci sono varie opzioni:
    Puoi salvare il Calcolo ma a quel punto non potrai più rivederlo nè validarlo
    Puoi salvare tutti i contribuenti come dati statici quindi non più affetti dalle variazioni del tempo, quindi in quella tabella avrai tutto ed i calcoli continuerai a farli con la query....
    Puoi salvare in una tabella le variazioni dei contribuenti e le date di validità in questo modo terrai anche traccia dello storico variazioni.

    Devi ragionare come ti conviene poi gestire il tutto, la prima ipotesi(quella a cui avevi pensato) è francamente la meno adatta, prova eventualmente a valutare la 2° anche se la più flessibile potrebbe essere la 3° ma meno intuitiva da implementare.
  • Re: Creare tabella da risultati query

    Ciao ALex in effetti io penso che sia la 2° opzione la più conveniente anche perchè pensao magari che se voglio modificare i dati per un motivo xy qualunque controllare se il mese l' anno e la matricola siano già esistenti nella tabella ed accettare la sovrascrizione dei dati.

    Come faccio ad esportare un dato statico da una query ad una tabella?
  • Re: Creare tabella da risultati query

    Non capisco perchè tu debba esportare...
    La tabella in cui inserisci i dati conterrà i dati di Valore ed i dati di calcolo... l'inserimento dei dati come lo fai...?
    Se lo fai da Maschera avrai i controlli associati ai dati di Calcolo, se lo fai da query action avrai i valori costanti nella query, ma questo metodo di solito lo siusa per gli inserimenti massivi... fatico a capire come operi.
  • Re: Creare tabella da risultati query

    Allora: io importo i dati da un file txt "listino" dove ho i dati del mese; poi tramite delle query faccio fare i calcoli (es. minino retributivo; starodinario, inps; ipref,etc) per avere i dati necessari alle buste paghe del mese, che vedo in una maschera con i totali e le descrizioni, dopo avere controllato se questi dati sono giusti, vorrei "cristallizarli" in una tabella "cedolini definitivi" dove metterò tutte le buste paghe dell' anno e da lì fare i vari report che mi servono "stampa busta paga"; " stampa bonifici"; trattenute sindacali"; etc.

    quindi vorrei copiare i dati o dalla maschera (preferibilmente) o da una query con tutti i dati e salvarli, con un dato statico, in una nuova tabella.
  • Re: Creare tabella da risultati query

    Ok, allora diciamo che io farei così...
    Dati di partenza in Tabella Tmp da svuotare tutte le volte, quindi dopo la tua validazione si esegue il ricalcolo ed il salvataggio.
    Opererei con una Maschera di gestione che con un Button avvia il processamento dei dati Record per Record, risulterà leggermente più lenta, ma ti garantisce in caso di anomalia di poter trovare il problema con il Debug.
    Nella maschera dovrai avere delle TextBox con i Valori di Calcolo(valuta se usare una tabella o meno)... quelli che nel tempo puoi cambiare...
    Quindi apri un recordset basato sulla tabella tmp in ReadOnly [RSTMP], quindi apri anche un Recordset sulla tabella di destinazione in scrittura [RST], effettui un ciclo record per record e, ad ogni ciclo ricopi inserendo i dati dal RSTMP con un ADDNEW sul RST quindi scrivi i campi di calcolo leggendoli dai controlli della Maschera.
    Se vuoi salvare anche il valore del Calcolo, crei una Funzione che esegua il calcolo e la assegni al campo calcolabile.

    Butto giù una cosa solo a titolo di logica di esempio... che ovviamente devi sviluppare tu.
    
    Dim RSTMP As DAO.Recordset
    Dim RST    As DAO.Recordset
    Set RSTMP=DbEngine(0)(0).OpenRecordset("SELECT * FROM TblTMP ORDER BY NomeCampoOrdinamento", dbOpenSnapshot, dbReadOnly)
    Set RST=DbEngine(0)(0).OpenRecordset("TblFinale")
    
    RSTMP.MoveFirst
    Do until RSTMP.EOF
        RST.Addnew
        For each fld in RSTMP.Fields
            RST.Fields(fld.name)=fld.Value
        Next
        RST.Fields("Costante1")=Me!txtCostante1
        RST.Fields("Costante2")=Me!txtCostante2
        RST.Fields("Costante3")=Me!txtCostante3
        '..... eventuali altre costanti
        RST.Fields("CampoCalcolato1")=NomeFunzioneCalcolo1(Me!txtCostante1,Me!txtCostante3....)
        '..... eventuali altri campi calcolati
        RST.Update
        RSTMP.MoveNext
    Loop
    RSTMP.Close
    RST.Close
    Set RSTMP=Nothing
    Set RST=Nothing
    Manca tutta la gestione errori ed ovviamente le Funzioni di calcolo sempre servano e non siano sufficienti i calcoli base...
    Volendo si può racchiudere il tutto in una Transazione che rende più veloce il salvataggio in tabella alla fine... oltre che ad essere annullabile in caso di errori...
  • Re: Creare tabella da risultati query

    Ok perfetto ora ci inizio a lavorare e ti faccio sapere quanti danni ho fatto intanto grazie mille
Devi accedere o registrarti per scrivere nel forum
6 risposte