Visualizzazione formato campo numerico in maschera di inserimento dati

di il
79 risposte

79 Risposte - Pagina 3

  • Re: Visualizzazione formato campo numerico in maschera di inserimento dati

    14/07/2023 - fratac ha scritto:


    Hai provato a creare le maschere in automatico?

    Basta che ti posizioni sulla tabella master (che deve stare nella maschera principale o Header), clicchi su crea maschera e access provvede da solo a creare sia le maschere che le dipendenze, comprese le varie sottomaschere.

    Inoltre: NON SI LAVORA MAI SUL PROGETTO ORIGINARIO.

    Le modifiche si fanno sempre su una copia, possibilmente senza dati e poi, una volta funzionanti e testate si passano sul progetto originario.
    Resta il fatto che per le modifiche alle relazioni implicano una coerenza tra le chiavi interne ed esterne e raramente, aggiungere relazioni a dati già inseriti da il risultato sperato. Infatti non è raro che bisogna scrivere patch per normalizzare i dati.

    Non ho provato a creare le maschere in automatico, so come si fa e se lo ritieni provvedo a farlo.

    Non ho lavorato sul progetto originario ma conservo copia del db precedente le modifiche.

    Il mio errore probabilmente è stato di aver creato non ex novo la tabella Header e quella Rows ma di averle ottenute duplicando e modificando la tabella originaria (Master): cosa ne pensi ? 

    Se è il caso posso ovviamente ricominciare tutto da capo senza problema.

  • Re: Visualizzazione formato campo numerico in maschera di inserimento dati

    14/07/2023 - By65Franco ha scritto:


    In questa tabella “Approvazione Bilancio” ha sempre l'ID chiave Primaria 14 ?


    Siccome ho da fare e mi aspettano a cena… controlla quanto ti avevo richiesto e verifica la sintassi dei nomi tabelle e dei campi per quanto vado ad allegarti.

    La Sub la fai eseguire in un Modulo di Vba, ti richiede un messaggio di avvio e alla fine ti restituisce un messaggio di completamento

    Riepilogando, cosa devi fare:

    • devi leggere il contenuto della vecchia tabella
      • verifica la condizione WHERE idAggregati <> 14 che sono i records che non interessa importare perchè relativi ad Approvazione Bilancio
    • devi creare un loop per scorrere ogni records dove:
      •  crei una rottura di livello per acronimo e anno 
        • questo serve per creare la Testata nella nuova tabella Header
      • e crei la testata da importare
      • si reperisce il nuovo Id che ha generato per la testata con @@IDENTITY
      • si salva la rottura di livello per verificare la prossima testata da creare
    • per ogni record che si legge a seguire, dopo aver creato la testata :
      • crei le righe da importare nella tabella Rows
        • si scrivono i campi chiave di testa che abbiamo salvato in precedenza e le altre chiavi , più il valore
    • il ciclo continua fino a Eof del recordset della tabella di export

     Considerazioni:

    • come avevi riportato nei post precedenti, se esistono i dati per quel acronimo vuol dire che il bilancio è approvato. Pertanto si mette sempre a True il campo Approvazione Bilancio.
    • la data non ce l'abbiamo e la lasci vuota

    ' UTILITY IMPORT TABLE
    Sub MyImportUtility()
    If MsgBox("Import Confirm", vbExclamation + vbYesNo, "Import") = vbNo Then Exit Sub
    Dim lngNewIdHeader As Long
    Dim lngAcro As Long
    Dim lngEser As Long
    ' delete all records import table
    DBEngine(0)(0).Execute "DELETE FROM tblAggregatiAnnualiRows"
    DBEngine(0)(0).Execute "DELETE FROM tblAggregatiAnnualiHeader"
    ' read export table
    Dim rsExp As DAO.Recordset
    Set rsExp = DBEngine(0)(0).OpenRecordset("SELECT * FROM MastertblAggregatiAnnuali WHERE idAggregati <> 14 ORDER BY idAcronimo, EsercizioFinanziario", dbReadOnly)
    ' read
    Do While Not rsExp.EOF
       ' check header level
       If lngAcro <> rsExp.Fields("idAcronimo").Value Or lngEser <> rsExp.Fields("EsercizioFinanziario").Value Then
           ' write header table
           DBEngine(0)(0).Execute "INSERT INTO tblAggregatiAnnualiHeader (IdAcronimo, EsercizioFinanziario, ApprovazBilancio) " & _
                                  "VALUES (" & rsExp.Fields("idAcronimo").Value & ", " & rsExp.Fields("EsercizioFinanziario").Value & ", True)"
           ' retrieve new id insert
           lngNewIdHeader = DBEngine(0)(0).OpenRecordset("SELECT @@IDENTITY")(0)
           ' level save
           lngAcro = rsExp.Fields("idAcronimo").Value
           lngEser = rsExp.Fields("EsercizioFinanziario").Value
       End If
       ' write rows table
       DBEngine(0)(0).Execute "INSERT INTO tblAggregatiAnnualiRows (IdAggregatiAnnuali, IdAggregati, ValoreAggregati) " & _
                                  "VALUES (" & lngNewIdHeader & ", " & rsExp.Fields("idAggregati").Value & ", " & rsExp.Fields("ValoreAggregati").Value & ")"
       ' next record
       rsExp.MoveNext
    Loop
    ' close
    rsExp.Close
    Set rsExp = Nothing
    MsgBox "Import Completed", vbInformation, "Info"
    End Sub 

    Fai i test e controlla prima di renderlo definitivo. Questa è sempre la parte più importante di un progetto. Fare i Test e saper fare i Test non è per niente facile o da prendere sotto gamba.

    Ti ho commentato tutti i passaggi… se hai dubbi chiedi.

    Se rifai casino, chiedo in prestito da fratac il carro che così te lo tiro dietro.!!! ;-)

  • Re: Visualizzazione formato campo numerico in maschera di inserimento dati

    14/07/2023 - BarLudwig 

    Le Relazioni ad occhio vanno bene e anche sulla form.

    Poi lo vedi una volta importato i dati nel modo corretto.

  • Re: Visualizzazione formato campo numerico in maschera di inserimento dati

    Grazie mille Franco.

    Stampo tutto, me lo studio attentamente e procedo.

    Ti faccio sapere.

    Buona serata e grazie ancora

  • Re: Visualizzazione formato campo numerico in maschera di inserimento dati

    14/07/2023 - fratac ha scritto:


    Inoltre sto vedendo che le chiavi interne e le chiavi esterne hanno lo stesso identico nome.

    Personalmente io preferisco tale metodo e trovo diversi vantaggi. Sinceramente non mi porta mai a fare confusione come enunciavi, anzi a mio avviso aiuta molto nella programmazione perchè quando vai a fare le select, join etc… rende tutto più veloce e facile da rileggere anche a distanza di tempo.

    Non so, sicuramente sono punti di vista diversi, rispecchiano l'abitudine che ognuno ha in fase di costruzione delle strutture. A livello relazionale trovo il metodo proficuo. Prova a pensare se perdi le relazioni… in un attimo le ricrei senza nessuna esitazione…. vai a colpo sicuro.

    Concordo che ogni metodo porta con se vantaggi e svantaggi. 

    P.s. Un favore fratac…. lasciami a disposizione il carro con i buoi perchè può essere che da qui a domani mi possa servire ;-) (scherzoooo) 

  • Re: Visualizzazione formato campo numerico in maschera di inserimento dati

    14/07/2023 - By65Franco ha scritto


    come avevi riportato nei post precedenti, se esistono i dati per quel acronimo vuol dire che il bilancio è approvato. Pertanto si mette sempre a True il campo Approvazione Bilancio.

    Probabilmente non mi sono spiegato.

    Nel 2023 il db raccoglie i dati del bilancio 2022. Nella procedura che stavo impostando, con una serie di qry all'inizio dell'anno viene inserito nella tabella Master tblAggregatiAnnuali, per ogni acronimo n. 13 records (uno per ciascun aggregato), ciascuno dei quali conteneva i campi idAcronimo, Eserciziofinanziario, id Aggregati, tutti valorizzati e il campo  ValoreParametro non valorizzato.

    In tal modo l'operatore entra in una maschera di solo modifica e si limita a inserire il valore del parametro avendo a disposizione record per il resto già compilati, limitandosì così il numero dei possibili errori.

    Quindi il Campo ApprovazioneBilancio della tabella MasterAggregatiAnnuali  può avere valore true, false o nullo, fermo restando che per ogni acronimo per il paramtero n. 14 relativo all'approvazione del bilancio esiste un record per ciascun esercizio finanziario.

    Per altro vorrei continuare con questa impostazione.

  • Re: Visualizzazione formato campo numerico in maschera di inserimento dati

    12/07/2023 - BarLudwig ha scritto:


    Infatti, per lo meno nell'ambito normativo nel quale  mi muovo, gli aggregati economici non vengono nemmeno ad esistere giuridicamente in assenza dell'approvazione del bilancio, approvazione che costituisce un prius logico che giustifica la loro rilevazione e il loro inserimento

    Alle tue indicazioni aggiungerò perciò nella maschera principale un controllo che consenta all'operatore di visualizzare la sottomaschera e di inserire i dati esclusivamente nell'ipotesi di bilancio approvato.

    1.  Sulla base di tale affermazione ho semplicemente messo sempre True su Approvazione Bilanci 
    2. Lo stato di un Booleano può essere o Vero o Falso (True/False) il valore Null non esiste, gli stati sono due.
    3. Hai sempre i record 14 per determinare chi aveva True or False, pertanto puoi successivamente leggere tale dato e aggiornare automaticamente lo stato nelle nuove Testate

    fratac !!!!  me sa che mi ci vuole il carro con i buoi !!!! me lo prepari per cortesia ! ;-)

  • Re: Visualizzazione formato campo numerico in maschera di inserimento dati

    15/07/2023 - By65Franco ha scritto:


    SELECT @@IDENTITY

    By65Franco ma questa non è una istanza di SQL-Server azure?
    Sicuro che access non rizzi il pelo ed inizi a scalciare come un mulo?

    Comunque secondo me, quello che gli stai spiegando è un livello troppo avanzato rispetto al suo livello.
    Stiamo rischiando di confondergli le idee.

    Da quello che vedo, non è ancora chiaro come realizzare una maschera per l'inserimento dei dati.

  • Re: Visualizzazione formato campo numerico in maschera di inserimento dati

    13/07/2023 - BarLudwig ha scritto:


    A questo punto mi sono bloccato perché non sono riuscito a trovare il metodo, una query di comando immagino, che mi consenta di inserire nella tblAggregatiAnnualiRows.idAggregatiAnnuali il valore del campo della tblAggregatiAnnualiHeader corrispondente.

    Ho inserito le relazioni come da te indicate. Probabilmente anche questa volta mi sto perdendo in un bicchiere d’acqua, ma è tutto il pomeriggio che ci provo senza successo.

    hai controllato i dati nelle tabelle?

    aggregai annualirows:  idaggregatirows  valore 1;    idaggregati vaolre null 

    sorvolo sui duplicati tipo  esercizio 2021  idaggregati 020 con id1 e la stessa con id6 poi 11 ecc…

    dovresti metterla in    relazione con aggregatiannualiheader tramite i campi idaggregatiannualiheader e idaggregati  ma che quest'ultimo hai a null ovvio che non ti restituisce le righe. 

    hai letto bene come si crea la relazione? ti è stato spiegato anche con i disegnini… 

    anche nella header sorvolo sui duplicati dei dati…

    ricapitolando: 

    tabella pippo: idpippo (pk); campoA….camponN (la tua header)

    tabella pluto (rows) idpluto (pk); idpippo (fk) (la tua rows) valorizzata per l'id di apparteneza cioe' se:

    idpippo = 1 per vedere i dettagli avrai:

    idplutto     idpippo     campoA  …..   campoN

    1                     1              bla bla              bla bla

    2                     1              bla bla              bla bla

    3                    1               bla bla              bla bla

    id pippo nella rows sarà sempre lo stesso valore della header che stai inserendo o visualizzando.

    se vuoi vedere quelli di header id 2 devi opopolare nella rows idpippo valore 2

    tu li hai tutti null, come pensi che possano legarsi le due tabelle? prova ad inserire manualmente nel campo idaggregati  della rows il valore 1 su alcuni record e… magia!

    spero di essere stato chiaro.

  • Re: Visualizzazione formato campo numerico in maschera di inserimento dati

    15/07/2023 - By65Franco ha scritto:


    1. Sulla base di tale affermazione ho semplicemente messo sempre True su Approvazione Bilanci 
    2. Lo stato di un Booleano può essere o Vero o Falso (True/False) il valore Null non esiste, gli stati sono due.
    3. Hai sempre i record 14 per determinare chi aveva True or False, pertanto puoi successivamente leggere tale dato e aggiornare automaticamente lo stato nelle nuove Testate

    fratac !!!!  me sa che mi ci vuole il carro con i buoi !!!! me lo prepari per cortesia ! ;-)

    Buongiorno Franco 

    mi hai detto tu che se avevo dubbi prima di muovermi avrei dovuto manifestarli. Allora procedo e ti faccio sapere.

    Comunque la maschera che vorrei realizzare per l'inserimento dei dati mi è sufficientemente chiara grazie ai suggerimenti che mi avete dato.

    Certamente la routine che mi ha inviato Franco non è affatto banale come voleva far credere, e da solo ovviamente non avrei mai potuto arrivarci, con tutta la buona volontà, anche se avevo vagamente intuito il percorso logico su cui basarla e il fatto che si sarebbe dovuto ricorrere agli oggetti DAO.

  • Re: Visualizzazione formato campo numerico in maschera di inserimento dati

    15/07/2023 - fratac ha scritto:


    15/07/2023 - By65Franco ha scritto:


    SELECT @@IDENTITY

    By65Franco ma questa non è una istanza di SQL-Server azure?
    Sicuro che access non rizzi il pelo ed inizi a scalciare come un mulo?

    Funziona anche su Access.

  • Re: Visualizzazione formato campo numerico in maschera di inserimento dati

    15/07/2023 - sihsandrea ha scritto:


    spero di essere stato chiaro.

    Ma guarda… spero anch'io di essere stato chiaro, ma se non studia e approfondisce taluni temi sarà dura. 

    Cmq il problema è risolto, lui pensava di cavarsela con delle query, ma non se po' fa… non si può copiare e incollare i dati da una vecchia tabella per crearne due nuove relazionate tra di loro.
    Gli ho passato due righe di codice altrimenti non ne veniva fuori. 

    Gli ho fornito tutte le spiegazioni e i riferimenti di Microsoft Supporto per i temi trattati. Ha solo da studiare se vuole, fare meno confusione, meno improvvisazione, precisione e logica. (pensare prima di fare)

    Che dire… 

  • Re: Visualizzazione formato campo numerico in maschera di inserimento dati

    15/07/2023 - fratac ha scritto:


    By65Franco ma questa non è una istanza di SQL-Server azure?
    Sicuro che access non rizzi il pelo ed inizi a scalciare come un mulo?

    Ciao fratac, da quello che mi risulta da Access 2000 in poi la Select @@IDENTITY si può usare e a me non ha mai creato problemi. Viene da Sql Server, e con i vari linguaggi si può usare.

    15/07/2023 - fratac ha scritto:


    Comunque secondo me, quello che gli stai spiegando è un livello troppo avanzato rispetto al suo livello.
    Stiamo rischiando di confondergli le idee.

    Si hai ragione … si deve applicare e studiare, la documentazione è completa con tanto di riferimenti al Supporto Microsoft per i temi trattati.

    Come dicevo con sihsandrea… deve cambiare approccio soprattutto nello studiare e non nel fare con improvvisazione. Diversamente avrà sempre problemi.

    Ecco perchè me devi tenè pronto il carro con i buoi… al primo casotto che fa perchè non studia, glielo tiro dietro. ;-))

  • Re: Visualizzazione formato campo numerico in maschera di inserimento dati

    15/07/2023 - BarLudwig ha scritto:


    Certamente la routine che mi ha inviato Franco non è affatto banale come voleva far credere, e da solo ovviamente non avrei mai potuto arrivarci, con tutta la buona volontà, anche se avevo vagamente intuito il percorso logico su cui basarla e il fatto che si sarebbe dovuto ricorrere agli oggetti DAO.

    Guarda che sono solo 3 istruzioni 

    solo 3 !!!

    1. lettura di una tabella con il Do While Loop con una semplice query Sql Select 
    2. una query di accodamento record ad una tabella con con sql Insert Into
    3. e un ultima query di accodamento record ad una tabella con con sql Insert Into

    Solo 3 banali istruzioni !!!


    Con  Access, quando lavori con le tabelle, è proprio con la connessione DAO che puoi interagire con gli oggetti

    Pertanto lo devi conoscere come le tue tasche !!!


    Ti ho passato 3 righe di codice perchè devi studiarti come possono essere approcciati taluni aspetti dove i Wizard non ti consentono di andare oltre.

  • Re: Visualizzazione formato campo numerico in maschera di inserimento dati

    15/07/2023 - Philcattivocarattere ha scritto:


    15/07/2023 - fratac ha scritto:


    15/07/2023 - By65Franco ha scritto:


    SELECT @@IDENTITY

    By65Franco ma questa non è una istanza di SQL-Server azure?
    Sicuro che access non rizzi il pelo ed inizi a scalciare come un mulo?

    Funziona anche su Access.

    Esatto, è una delle clausole di sql server … e nel linguaggio Sql VBA è presente. 

    Molto comodo per reperire il nuovo ID inserito lavorando sulle Form.

Devi accedere o registrarti per scrivere nel forum
79 risposte