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