Newsgroup: it.comp.www.asp
Titolo: VBSdb e EditValidateRequiredFields

Altro grande prodotto consigliato da questo newsgroups. Per chi non lo 
sapesse consente di editare tabelle di database con ASP con 4 righe di 
istruzioni!
Ho il seguente problema:
Nella tabella che ho scelto di editare via ASP c'è un campo di testo, 
che NON è definito tra i "EditValidateRequiredFields" NE 
risulta "Richiesto=SI" sulla struttura della tabella stessa.
Eppure quando vado ad inserire un record risulta obbligatorio in quanto 
il server mi risponde:
[Microsoft][ODBC Microsoft Access Driver] Field 'NOTIZIARIO.no_link' 
cannot be a zero-length string. 
Mi potete aiutare?
Grazie.
-- 
Posted from 212.131.165.199 by way of 
smtp1.libero.it
 [193.70.192.51] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Mi potete aiutare?
intanto ti segnalo che per VBSdb c'e' una lista apposita: per il supporto
tecnico puoi scrivere a 
vb...@freelists.org
.
E' in inglese, ma li' ti assicuro che qualcuno ti risponde. Purtroppo io non
riesco sempre a leggere i messaggi di ICWA :-)
Tra l'altro, in questo modo, coinvolgiamo anche gli altri utenti, e forse
propongono soluzioni piu' furbe di quelle che vengono in mente a me.
Allora, il tuo problema e' questo: la query che VBSdb prova ad inserire
contiene quel campo valorizzato come stringa vuota. Il tuo database Access,
per quel campo, ha la proprieta' 'Consenti lunghezza a zero' settata a NO.
Realizzando VBSdb ho pensato che avrebbe potuto esserci questo
inconveniente: si presenta quando un campo di testo puo' essere null, ma non
puo' avere lunghezza zero.
C'ho pensato su parecchio: il problema e' che quando un form restituisce un
campo vuoto, come si fa a sapere se l'utente voleva inserire una stringa
vuota oppure voleva inserire null?
Purtroppo, temo sia proprio un problema concettuale.
Avevo pensato a questa soluzione alternativa: quando un campo null viene
visualizzato in edit mode, nel campo scrivo qualcosa tipo '(null)' e poi,
quando vado ad aggiornare il database, se trovo scritto '(null)', assegno
null al campo, se invece il campo e' vuoto, vuol dire che l'utente ha voluto
inserire una stringa vuota.
Avrei potuto implementare questa soluzione senza grandissimi problemi,
pero', anche se piu' funzionale, ho pensato che presentare all'utente una
scritta tipo '(null)' non sarebbe il massimo, quindi, alla fine, ho deciso
per la soluzione attuale.
Mentre ti scrivo, sto pensando che potrei aggiungere una proprieta'
all'oggetto, per lasciare decidere allo sviluppatore quale comportamento
tenere (magari lasciando di default il comportamento attuale e dando allo
sviluppatore la possibilita' di decidere quale valore scrivere,
eventualmente, nelle caselle di testo, per il null).
Curiosita': mi puoi esemplificare un caso concreto in cui e' utile che un
campo di testo ammetta il null, ma non la stringa vuota? Sono sicuro che ne
esistono, ma e' una vita che disegno database e non credo di aver mai
definito questa combinazione di proprieta' per un campo di testo.
Il guaio e' che Access mette di default questa combinazione di proprieta'
(perche' di default debba essere ammesso il null e non la stringa vuota in
un campo, quelli che hanno fatto Access me lo dovrebbero proprio
spiegare...), quindi mi sono accorto subito anch'io del problema.
Comunque, riassumendo:
- se tu non accetti il campo a null, basta che aggiungi il campo in
EditValidateRequiredFields ed il gioco e' fatto.
- se accetti stringhe di lunghezza, basta che setti 'Consenti lunghezza a
zero' a SI (forse e' questa la soluzione al tuo problema)
- se invece devi accettare il campo a null, ma non la stringa vuota, allora,
con la versione attuale non riesci a gestirla (in una delle prossime
versioni aggiungero' una proprieta' che permetta allo sviluppatore di
gestire la cosa come ho scritto sopra)
Ciao!

   lunghezza a zero' a SI (forse e' questa la soluzione al tuo 
problema)
Esatto. Mi era sfuggito questo parametro!Pensavo che "richiesto = no" 
fosse sufficiente.
Grazie.
-- 
Posted from 212.131.165.199 by way of 
smtp2.libero.it
 [193.70.192.52] 
