Newsgroup: it.lavoro.professioni.webmaster
Titolo: Problema con query UPDATE

Ciao a tutti,
con pagine asp faccio la query:
sqry="UPDATE UtentiRegistrati SET password='"&Request.Form("T1")&"' WHERE id
LIKE '" & Session("ValidatedID") & "';"
Con la quale modifico quindi solo il campo PASSWORD.
La pagina però mi dà l'errore:
-----
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver] Field 'UtentiRegistrati.indirizzo'
cannot be a zero-length string.
/user/data.asp, line 140
-----
Perchè va a cercare il campo INDIRIZZO???
Grazie!

 cannot be a zero-length string.
cambia le proprietà del campo indirizzo in UtentiRegistrati e fagli
accettare anche campi con lunghezza 0
-- 
www.pixael.com
consulenze per la creazione e la promozione di siti internet
ideazione materiale pubblicitario

 Grazie!
Ciao.

 WHERE id LIKE '" & Session("ValidatedID") & "';"
1) password e' una parola chiave riservata... utilizza []
2) a che serve il ; alla fine della stringa... ?
3) ti consiglio di parsare il campo passato attraverso il metodo post...
perche' e' soggetto a rischio di attacchi che possono cancellarti in modo
semplicissimo la tabella... :)
4) a che serve il LIKE sul campo id?
almeno fai un replace(Request.Form("T1"), "'", "''")
-- 
Lino Mari [mod - it.economia.e-commerce]
http://www.ebow.it
 - e-business on web!
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - d2D004
Se le aziende pensano che i loro mercati online siano gli stessi che
guardavano le loro pubblicità in televisione, si stanno prendendo in
giro da sole

Perchè va a cercare il campo INDIRIZZO???
chi "cerca" il campo indirizzo è il motore del db.  quando hai creato
la tabella, avrai specificato (o avrai lasciato che fosse così per
default) che il campo indirizzo (probabilmente un testo) non potesse
avere come valore una stringa vuota (e stringa vuota, bada bene, è
diverso da valore null...).
il motore del db dice questo all'interprete dello script.
la cosa si può risolvere in due modi.  
uno è modificare le proprietà del campo in modo che possa accettare
stringhe di lunghezza zero, cioè vuote.  ma in questo modo ti "vizi".
vai ad intervenire su una proprietà che adesso puoi cambiare perchè ce
l'hai sotto la cappella, ma che in futuro potresti non controllare
perché il db è di qualcun altro.
l'altro modo è passare alla stringa sql che esegui dei valori null per
i campi testo che non accettano stringhe vuote, ad es.:
update tabella set campo1 = 'pippo', campo2 = NULL where ecc.
nota che null non è tra apici, è il valore null, non la string 'NULL'.
per automatizzare una cosa del genere io mi sono fatto una funzioncina
che controlla anche la presenza di apici nella stringa, che come
saprai vanno raddoppiati per evitare incomprensioni all'interprete sql
(ad es. l'aquila deve diventare l''aquila se no non si sa bene dove
termina la stringa).
penso che tu scriva in vbscript, la funzione è questa:
<%
function fTestoSql(t)
	if isnull(t) then
		fTestoSql = " NULL "
	elseif t = "" then
		fTestoSql = " NULL "
	else
		fTestoSql = "'" & replace(t, "'", "''") & "'"
	end if
end function
%>
occhio alle differenze tra apici ', doppi apici '' e virgolette ".
-- 
dipende.

 4) a che serve il LIKE sul campo id?
lino gli hai suggerito tutto il resto ma non gli hai detto di permettere le
stringhe=0 al campo indirizzo ;)
cmq tutto vero...


 permettere le stringhe=0 al campo indirizzo ;)
certo...
