VBA igonra accento

di il
8 risposte

VBA igonra accento

Tramite VBA recupero il il cognome di un utente in questo modo Me!COGNOME 

Esempio: se il cognome è MASZYNSKI vba mi restituisce MASZYNSKI

Come si può evitare?

8 Risposte

  • Re: VBA igonra accento

    Il VBA non mangia gli accenti... ma il tuo post non è comprensibile in quanto l'editor probabilmente sopprime qualche cosa... quindi le 2 Parole risultano uguali.

    Come hai impostato la proprietà Unicode della tabella...?

  • Re: VBA igonra accento

    Le proprietà del campo

  • Re: VBA igonra accento

    Dov'è l'accento?

    Che significa vba mi restituisce?

    19/03/2025 - lucavalentino ha scritto:

    Me!COGNOME

    È il controllo.. devi prendere il valore che suppongo.sia testo... Ma prelevarlo in che modo? Valorizzando una variabile della stessa natura?

  • Re: VBA igonra accento

    Forse ho scritto male l'esempio:

    Il campo cognome ha valore MASZYNKI (con la n con accetto) e recupero il valore con Me!COGNOME che mi restituisce MASZYNKI (n senza accento). Insomma con i cognomi stranieri per lo piu

  • Re: VBA igonra accento

    Quindi è solo un problema di font...

    Come quando leggi bàbà e importi b%b%

  • Re: VBA igonra accento

    Ciao,

    is problem....  nota: per rappresentare la enne accentata qui di seguito la rappresento come   N(accentato)

    In visualizzazione Tabella o in visualizzazione Query il carattere N(accentato) viene correttamente rappresentato: (test con due tipi di Fields : Testo Breve e Testo Lungo)

    se si recupera l'informazione da Form, da DAO da ADO, etc... il carattere viene convertito in "N"  e il suo carattere Unicode è = "Ñ"  che come carattere in ChrW viene rappresentato con il codice 323 che è = "N" ( ? ChrW(323) = N )

    Da notare che anche l'editor VBA già pone il problema di conversione :
    Fare questo TEST 

    • Mettere in Copia il carattere N(accentato)
    • posizionarsi nell'Editor di Vba
      • eseguire l'Incolla

    .
    Risultato di incolla = a Ñ e se si converte in UTF-16  diventa = N

    VBA usa UTF-16 e non riesce a gestire il carattere N(accentato) che verrà rappresentato come carattere N

    Memtre se leggiamo il carattere N(accentato) e lo esportiamo in un file TXT per esempio in UTF 8 :

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim stm As Object
    Dim testo As String
    
    
    ' REPERIRE IL CARATTERE DALLA TABELLA A 
    
    Set db = CurrentDb
    Set rs = db.OpenRecordset("SELECT Descrizione FROM A WHERE CODICE='1'", dbOpenSnapshot)
    
    If Not rs.EOF Then
        testo = rs!Descrizione
    End If
    rs.Close
    Set rs = Nothing
    Set db = Nothing
    
    
    ' ESPORTARE IN UN FILE DI TESTO PER ESEMPIO IN UTF 8
    
    Set stm = CreateObject("ADODB.Stream")
    stm.Type = 2
    stm.Charset = "UTF-8"
    stm.Open
    stm.WriteText testo
    stm.SaveToFile "c:\xxxxxxxxx\test_unicode.txt", 2
    stm.Close
    Set stm = Nothing 

    Il risultato sarà come qui rappresentato con  il carattere N(accentato) esportato correttamente:

    .
    Insommaaaaa... na' cosa di questo tipo.  ;-)

  • Re: VBA igonra accento

    Il problema è un pochettino più complesso.

    Devo recuperare da VBA il cognome esatto che può avere qualsiasi tipo di caratteri accentati che non si conosce precisamente perché dipende dal record del cognome. 

  • Re: VBA igonra accento

    20/03/2025 - lucavalentino ha scritto:

    Il problema è un pochettino più complesso.

    Devo recuperare da VBA il cognome esatto che può avere qualsiasi tipo di caratteri accentati che non si conosce precisamente perché dipende dal record del cognome. 

    Si ho capito !!! ;-))

    io ho solo dimostrato/mostrato il fatto per il quale nella tabella di conversione caratteri in uso in Vba , tale carattere accentato non esiste e viene trasformato in N senza accento.
    Anzi, esiste con quel codice ma corrisponde a Ñ che a sua volta corrisponde in N (senza accento) ... anche l'editor di vba internamente lo trasforma. 
    Anzi esternamente se cambi il font dell'editor in un font europa occidentale, lo si vede correttamente, ma se poi deve essere manipolato allora access internamente lo trasforma senza accento.

    Mentre se si legge il record per esempio in ADO o in DAO e si esporta per esempio in un file txt, allora il carattere accentato non viene manipolato dalla codifica interna di msaccess e come ho dimostrato, viene esportato correttamente.

    ;-)  https://www.brescianet.com/appunti/vari/unicode.htm

    E'un bug che ha sempre avuto Ms Access e si presenta quando egli stesso deve manipolare tali caratteri per restituirli in variabili stringa o variant.

Devi accedere o registrarti per scrivere nel forum
8 risposte