Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 4 su 4

Settare decimali di un campo via codice VBA

  1. #1
    Trappy non è in linea Novello
    Buogiorno a tutti.
    Ho provato a cercare in rete, ma trovo solo soluzioni (ovvie) attraverso la "finestra propietà".
    Vorrei cambiare le cifre decimali di un campo da codice VBA.
    Ovvero variare le prime tre opzioni della tabella in figura.
    P.S. Molto complicato usare la versione in italiano e trovare le corrispondenze in inglese...

    https://ibb.co/jbTcz3K

    Grazie.

  2. #2
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Temo tu non abbia le idee chiare su cosa sia il Dato salvato e quello visualizzato.
    Il dato salvato è un Double, con [N] decimali che non puoi modificare in quanto tipici del Type.
    Quello che si va a modificare con quell'impostazione è la VISUALIZZAZIONE del dato.
    Ne consegue che ti porti dietro tutti i decimali nei vari possiobili calcoli e potrebbero dare origine a differenze tra il calcolato reale e l'atteso... soprattutto se hai calcoli con valori riconducibili ai Soldi, per i quali il Type Double è fortemente sconsigliato essendo in virgola mobile.
    Sappi in ogni caso che sarebbe bene NON modificare quel parametro in Tabella, ma farlo in modo Flessibile su quelle parti di Programma DEPUTATE all'interfaccia utente, ovvero le maschere e nello specifico sarà la TextBox che espone il valore.

    Questo perchè quando sviluppi, se stai pensando di andare a modificare Tabelle/Campi ecc... primna di farlo pensa che stai sbagliando qualche cosa nel ragionamento, in quanto la parte DB è meglio non considerarla gestibile da VBA... per vari motivi.

    In quel caso ti basterà accedere alla proprietà
    Property DecimalPlaces As Byte
        Membro di Access.TextBox
    
    Non è complicato perchè il VBA è in tutti i casi in Inglese... quindi basta avere un po di pratica.
    ℹ️ Leggi di più su @Alex ...

  3. #3
    Trappy non è in linea Novello
    Capisco bene la differenza tra dato salvato e quello visualizzato.
    Io ho una tabella creata da software dove ho impostato il campo "Posizioni decimali" = 2
    vorrei cambiare da VBA quella impostazione (da 2 a 3) a seconda di altri parametri in modo che l'utente finale possa avere una corretta visualizzazione senza doverlo cambiare autonomamente nella struttura (la quale, se possibile, vorrei che non la potesse neanche vedere).

    Per quel che posso capire mi stai parlando di property di un textbox e non di un campo di una tabella.
    Vorrei evitare di creare una maschera (che poi sarebbe identica alla tabella).

    In definitiva, vorrei che le cifre in tabella fossero impostate attraverso una combo in una maschera (come in figura) dove la scelta è "auto", "2", "3". nel caso di "auto" lo imposterei io attraverso "if" nel codice.

    https://ibb.co/BNFz1XN

  4. #4
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Non ho mai sentito di NESSUNO che sviluppa prodotti basati su Database e che da ad Utenti la possibilità di Accedere ai dati da Tabella... tuttavia se ne scoprono ogni giorno di nuove.

    Set tdf = db.TableDefs("TuaTabella")
    Set fld = tdf.Fields("NomeCampo")
    fld.Properties("DecimalPlaces") = 3
    
    Serve la gestione errori e, nel caso non venga rilevata la property, serve crearla e poi modificarla.
    Ovviamente ha effetto solo alla riapertura della Tabella.
    ℹ️ Leggi di più su @Alex ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Coversione campo numerico a 2 cifre decimali.
    Da jekisi nel forum Visual Basic .Net
    Risposte: 1
    Ultimo Post: 03-06-2021, 06:29
  2. Risposte: 5
    Ultimo Post: 31-05-2019, 10:20
  3. Settare un campo NULL
    Da Cuccayo nel forum Microsoft Access
    Risposte: 8
    Ultimo Post: 05-01-2016, 00:52
  4. campo con decimali
    Da francof nel forum Visual Basic 6
    Risposte: 3
    Ultimo Post: 12-04-2007, 10:24
  5. settare
    Da DAVIDON nel forum Microsoft Windows
    Risposte: 3
    Ultimo Post: 26-09-2003, 18:08