Tabella con campi testo occupati sempre per 255 caratteri

di il
2 risposte

Tabella con campi testo occupati sempre per 255 caratteri

Ciao a tutti

Stamattina mi è arrivato (periodicamente) un file excel che ci girano con un elenco di nominativi e le relative pec (aggiornamenti, nuovi nomi / pec) etc.

Mi ero fatto tutta una funzione per aggiornare la tabella access che uso nel mio DB (verifica solo gli effettivi cambiamenti o se ci sono novità), ma hanno deciso di cambiare il file excel (che non so da dove venga generato) e quindi mi devo rivedere tutta la funzione; poco male, mi diverto un pò a “creare”.

Però non so che hanno combinato, ma adesso quando importo i dati nel mio DB (passo per una tabella temporanea che creo al volo con tutti campi testo breve) mi ritrovo che i campi testo sono tutti occupati per la lunghezza di 255.

Ho provato con una funzione Trim, ma non c'è niente da fare, i campi mi rimangono sempre tutti occupati per la loro massima lunghezza.

Ad esempio: sul file excel che mi arriva c'è una colonna NOME e una COGNOME

In NOME viene indicato Tizio - Caio, mentre in COGNOME Caio  (penso dipenda dal modo in cui creano l'excel)

Nel mio DB li divido (come logico): nel caso di NOME cerco il “-” e edito il campo NOME in modo che contenga effettivamente solo il nome (mediante funzioni Left e InStr).

Tuttavia non mi ritrovo solo Tizio, ma anche tutti spazi fino ad occupare tutti e 255 i caratteri disponibili. Neanche usando Trim risolvo.

Sto provando a fare i test con qualcosa del genere:

Dim Testo As String
Dim Tabella01 As DAO.Recordset
Set Tabella01 = CurrentDb.OpenRecordset("SELECT * FROM tblImportaPEC", dbOpenDynaset)
With Tabella01
    .MoveFirst
    
    Do Until .EOF
    
         .Edit
         Testo = !Nome
         Debug.Print Len(Testo)   (255)
         Testo = Trim(Testo) 
         Debug.Print Len(Testo)  (18)
         !Nome = Trim(Left(Testo, (Len(Testo) - InStr(1, Testo, "-"))))
         Debug.Print !Nome
         .Update
         Debug.Print Len(!Nome)    (255)
         .MoveNext
    
    Loop
End With
Tabella01.Close
Set Tabella01 = Nothing

affianco alle righe di debug ho inserito il relativo valore che ottengo nella finestra immediata; dopo il primo Trim ottengo la lunghezza reale della stringa, ma quando la vado a riregistrare (quindi solo il Nome) è di nuovo lunga 255, nonostante il Trim

Andrea

2 Risposte

  • Re: Tabella con campi testo occupati sempre per 255 caratteri

    Verifica meglio vedrai che trovi il carattere CHR(0)… a saturazione.

    Prova con Replace… CHR(0) con vbNullString

  • Re: Tabella con campi testo occupati sempre per 255 caratteri

    Forse ho trovato dove sbaglio (perchè di sicuro è colpa mia).

    Quando importo il file Excel, creo al volo una tabella di appoggio in cui i campi di testo li sto creando così:

    Campo1 CHAR(255)

    e penso sia proprio sbagliato, perchè crea un campo testo ma gia “pieno” fino al limite (o sbaglio?)

    ho cambiato a crearlo così:

    Campo1 TEXT

    e non sono più “pieni”.

    Quindi al di là del file di origine che mi viene fornito adesso e chè è diverso, la colpa di base è solo mia. Anzi, penso che il vecchio file Excel non mi creava il problema (i campi excel erano diversi, adesso sono un'accozzaglia di dati - vedi l'esempio del nome…) ma almeno adesso ho rilevato che sbagliavo qualcosa.

    E grazie per il tuo spunto, mi ha messo in moto il neurone

Devi accedere o registrarti per scrivere nel forum
2 risposte