Newsgroup: it.comp.lang.visual-basic
Titolo: [Forse OT] - Consenti lunghezza zero: valore "sbagliato"

Ciao!
Scusate, ho un problema che non mi spiego.
Ho un database Access che era in versione 97 (forse prima anche in versione
95), ma e' stato convertito in versione 2000.
Se visualizzo la struttura delle tabelle attraverso l'interfaccia di Access,
su alcune colonne di testo trovo la proprieta' "Consenti lunghezza zero"
impostata a "Si'". Se, pero', verifico la stessa proprieta'
(AllowZeroLength) usando DAO, ADO, ADOX... la trovo impostata a "false". Se
faccio la stessa prova su un database nuovo, tutto e' perfettamente
coerente.
Qualcuno sa dirmi perche' trovo due valori diversi e come posso risolvere il 
problema?
Sbaglia l'interfaccia grafica di Access o sbagliano DAO, ADO...
Se il problema e' sul database, qualcuno sa dirmi come correggerlo?
Se, attraverso una query di aggiornamento, provo a mettere una stringa vuota 
nel campo incriminato, non ottengo alcun errore.
Se, invece, attraverso la visualizzazione della struttura, imposto la 
proprieta' "Consenti lunghezza zero" a "No", eseguendo la precedente query 
di aggiornamento ottengo un errore.
Grazie a tutti.
    Alex
P.S. Ho postato lo stesso quesito su microsoft.public.it.office.access.

 problema?
Guarda, è da molto che non lavoro con Access.
Ero incappato pure io in un errore del genere.
Se non ricordo male i valori "Consenti Lunghezza Zero" e
"AllowZeroLength" si riferiscono a due priprietà differenti.
Una è la stringa di zero caratteri, l'altra a valori NULL
Però prendila con le pinze... ormai sono 4 anni che Access ha lasciato
il mio pc.
Nicola

 il mio pc.
Anche io vorrei... :-) Il problema e' venuto fuori proprio in seguito al 
proposito di abbandonare Access: abbiamo testato un tool di migrazione da 
Access a SQL Server che pare molto bello... ma pare leggere (e impostare su 
SQL) gli stessi vincoli "errati" su alcuni campi di testo.
Per far migrare centinaia di clienti da Access a SQL Server, devo essere 
proprio sicuro...
Mi e' capitato di leggiucchiare che da Access 97 a 2000 e' cambiato qualcosa 
nella gestione di quella proprieta': in pratica, prima il valore predefinito 
era True, dopo era false. Alcuni campi, negli anni, sono stati aggiunti al 
database, quindi potrebbero essere stati aggiunti con attributi diversi. Ma 
in tutto cio' non vedo un motivo per trovare due valori diversi sulla stessa 
proprieta'...
Grazie ancora.
    Alex

Alexx ha scritto:

Non molto tempo fa ho utilizzato un software chiamato DTM Migration Kit
http://www.sqledit.com/mk/
Costa sui 120 Euro (in dollari l'avevo pagato 150 $ circa) e consente la
migrazione dei dati da qualsiasi db verso qualsiasi altro db, passando
per connessioni ODBC.
Oggi, lavorando in un'azienda che si occupa anche di ETL, non lo sto
utilizzando più, avendo sviluppato alcune routine aziendali che utilizzo
a questi scopi.
Guarda sul loro sito se ti interessa ed, eventualmente, ti vendo la mia
licenza originale con l'aggiornamento all'ultima versione.
Un ultimo consiglio: se l'applicazione non è fortemente multi utente
(quindi diciamo da 1 a 5 utenti contemporanei) il consiglio è di passare
a soluzioni leggere, veloci ed open come SQLite (di cui ci sono i
provider ADO e 
ADO.NET
 a disposizione).
Nicola

 provider ADO e 
ADO.NET
 a disposizione).
Grazie per il consiglio, ma abbiamo motivi per andare decisamente verso SQL 
Server.
    Alex

> [...]
Io e un collega gli abbiamo dato un'occhiata, ma ci pare piu' grezzo dei 
tools che abbiamo provato fino ad ora.
Comunque grazie.
Nel frattempo, grazie ad un suggerimento ricevuto su 
microsoft.public.it.office.access, ho verificato che il problema si risolve 
se importo tutte le tabelle su un altro database nuovo. Purtroppo si 
verifica un altro problema, ma forse piu' risolvibile.
    Alex


zac
ho letto i vari passaggi!
Reputo che il problema sia nella conversione 95->97->2000
...probabilmente la struttura è davvero cambiata attraverso le varie
versioni!
La conferma sarebbe che impostando il nuovo dato da access "attuale"
tutto va a posto!
Però potrebbe essere anche un problema di versione provider ADO o
nersione di DAO
Probabilmente usando vecchie versioni di DAO/ADO il provider
interpreta la struttura delle tabelle di sistema correttamente e non
ti "esprime" il suo sdegno nei confronti di questo (provbabilmente)
obsoleto valore!
Può darsi che tu usi un ADO/DAO "recente" che non interpreta
correttamente una struttura obsoleta....e quindi reimpostandola "a
mano" sostituisci la versione vecchia non riconosciuta con quella
nuova!
Io propenderei per l'ipotesi DAO/ADO incompatibile con la versione del
tuo DB!
Perchè l'alternativa sarebbe tremenda: una struttura tabelle che non
fà quello che desideri e quindi potenzialmente fonte di infiniti bugs!
Visto che mi parli di centinaia di installazioni
...non penso che un pomeriggio speso a rifare exnovo una struttura
tabelle e relative query di import sia denaro
buttato!....anzi!...meglio che distribuire versioni di dao ado vecchie
ai vari clienti!
e siccome non sono polemico....
tralascio quello che penso sul fidarsi delle varie conversioni
automatiche e sul relativo debugging!
;o)