Formattare Campo testo in una tabella con degli zeri a riempimento

di Davids il
10 risposte

Buongiorno a tutti, 

e da molto che vi seguo ed ho usato molte delle vostre soluzioni, mi è capitato una cosa molto strana, sono passato da poco ad access 2019.

In alcuni progetti vecchi avevo delle maschere dove in alcuni campo di testo avevo impostato una lunghezza di 5 e un formato “00000”, ed automaticamente in caso d'inserimento ABC mi restituiva 00ABC.

Adesso non mi funziona più, ho provato ad inserire, leggendo qua e la, nel campo formato soluzioni tipo:

\00000        

“00000”

*00000

*00000* 

Tramite una Query di aggiornamento ho usato la funzione Format$ ma va bene solo se trova dei numeri, la funziona Format non funziona.

Riuscite a darmi una mano, al momento sono un attimo confuso e un po' sconfortato  :-) 

Intanto vi ringrazio e vi auguro buona giornata.

Davids

10 Risposte

  • 14/06/2023 - Davids ha scritto:


    In alcuni progetti vecchi avevo delle maschere dove in alcuni campo di testo avevo impostato una lunghezza di 5 e un formato “00000”, ed automaticamente in caso d'inserimento ABC mi restituiva 00ABC.

    Sto facendo varie prove, ma a me non risulta esserci un formato che realizzi nativamente questo risultato. Se esiste, attendi la risposta da un utente più esperto.
    Altra via sarebbe quella di costruire la stringa voluta con codice VBA, sfruttando l'evento Dopo aggiornamento, una cosa del genere:

    Private Sub Campo_AfterUpdate()
    Dim strCampo As String
    Dim lungStr As Byte, lungRim As Byte, I As Byte
    strCampo = Me!Campo
    lungStr = Len(strCampo)
    lungRim = 5 - lungStr
    For I = 1 To lungRim
         strCampo = “0” & strCampo
    Next I
    Me!Campo = strCampo
    End Sub
  • Grazie Osvaldo,

    per avermi dedicato del tempo, è un po' complicata anche perchè non ho solo un campo da sistemare, ma per adesso è la più valida, anche l'unica, ahahahahah.  

    Grazie ancora e speriamo che qualcuno abbia qualche idea …

  • 14/06/2023 - Davids ha scritto:


    In alcuni progetti vecchi avevo delle maschere dove in alcuni campo di testo avevo impostato una lunghezza di 5 e un formato “00000”, ed automaticamente in caso d'inserimento ABC mi restituiva 00ABC.

    Ciao, per capire meglio….

    questi campi nelle tabelle come sono memorizzati ?

    Nella struttura delle tabelle come sono impostati ?

  • Ecco By65franco,

    questa è la tabella

    per i campi "seriale out" e attualmente "Campo7" 

    dovrei formattare il primo di lunghezza 13 e nel caso il seriale fosse più corto aggiungere degli Zero.

    Il "Campo7" lunghezza 5 e stesso discorso di prima.

    Grazie Franco.

    Davids

  • Su Campo7 quali sono le proprietà impostate nella scheda Generale ?

  • Non ricordo la sintassi vba ma:

    Case len(testo)

    0 testo “00000”

    1 testo “0000” + cella

    2 testo “000” + cella

    …..

    4 testo “0” + cella

    End case

    Qualcosa del genere. Per ovvi motivi se la lunghezza è di 5 caratteri salta il codice…

  • 14/06/2023 - Davids ha scritto:


    Tramite una Query di aggiornamento ho usato la funzione Format$ ma va bene solo se trova dei numeri, la funziona Format non funziona.

    In una query per esempio puoi inserire l'istruzione del tipo:

    Right("00000" & [Campo7];5)

    e otterrai un campo di 5 caratteri con gli 0 a riempire sulla sinistra

    esempio:  “abc” viene trasformato in “00abc”

  • Grazie Ragazzi,

    ho finito adesso una call, e mi metto subito all'opera !!!

    State davanti al Pc che se ho problemi stanotte vi chiamo hahahaha.

    Grazie ancora a tutti.

    Davids

  • 14/06/2023 - By65Franco ha scritto:


    Right("00000" & [Campo7];5)

    Ragazzi meglio del previsto funziona !!!

    Adesso devo sistemare il tutto il DB, poi vedremo.

    Grazie veramente di cuore a tutti e buona serata. 

  • Basta una cosa simile, ho letto troppe soluzioni… ;-)

    UPDATE T1 SET TuoCampo=String(5-Len(TuoCampo),"0") & TuoCampo

    Saluti

Devi accedere o registrarti per scrivere nel forum
10 risposte